Web/Spring

[Spring] URL 매핑 : URL 패턴 Servlet URL Mapping / DispatcherServlet

728x90

 

 

 

 

1. URL 패턴

- URL 패턴 규칙을 생각하고 매핑 설정을 해야, 예상한 Servlet / Controller으로 요청할 수 있다

- Servlet과 Spring 모두 아래 URL 패턴 규칙을 사용 가능하다 (1. 2. ... : 우선순위)

종류 URL pattern 매칭 URL
1. exact mapping /test/hello.do http://localhost/syun/test/hello.do
2. path mapping /test/* http://localhost/syun/test/
http://localhost/syun/test/hello
http://localhost/syun/test/hello.do
http://localhost/syun/test/cat
3. extension mapping *.do http://localhost/syun/hi.do
http://localhost/syun/test/hello.do
4. default mapping / http://localhost/syun/
http://localhost/syun/hello.do
http://localhost/syun/test/
http://localhost/syun/test/hello
http://localhost/syun/test/hello.do

 

 

 

 

 

2. 서블릿(Servlet)의 URL 매핑

 

2.1. 서블릿의 URL 매핑 방법

1. @WebServlet("/URL") 어노테이션을 사용한 매핑

@WebServlet("/ClassName")
public class ClassName extends HttpServlet {

- 다음과 같이 하나의 서블릿에 여러 URL 주소를 매핑할 수 있다

@WebServlet(urlPatterns = {"/main", "/test1", "/test2"})
public class Controller extends HttpServlet {

- 다음과 같이, 서블릿은 기본적으로 lazy-init이지만 early-init으로 설정 가능하다

    •  =1  : early-init 하는 서블릿 중 우선순위 설정 가능

@WebServlet("/test", loadOnStartup=1)
public class Controller extends HttpServlet {

 

2. web.xml을 통한 매핑

	<servlet>
		<servlet-name>Name</servlet-name>
		<servlet-class>com.java.example.ClassName</servlet-class>
	</servlet>
	
	<servlet-mapping>
		<servlet-name>Name</servlet-name>
		<url-pattern>main</url-pattern>
	</servlet-mapping>

 

 

2.2. 서블릿 URL 매핑 과정

1. 요청과 연결된 서블릿을 찾기 위해 servletMappings 확인

    - servletMappings : URL 패턴에 따른 서블릿 이름 매핑

2. 매핑된 서블릿 이름을 children(서블릿)에서 찾아 서블릿이 처리할 수 있도록 한다

    - children : 서블릿 이름에 해당하는 서블릿 매핑

 

 

 

 

 

 

3. 스프링(Spring)의 URL 매핑

- 스프링에서는 모든 요청을 "/" 즉, Default Servlet으로 처리

- Default Servlet 대신 DispatcherServlet을 연결

- DispatcherServlet에서 요청에 해당하는 URL을 해당 Controller로 매핑한다

 

3.1. Handler Mapping

- 요청에 대해 어떤 Controller가 처리해야 하는지 결정

- DispatcherServlet은 등록된 HandlerMapping을 참조하여 요청을 적절한 Controller로 전달

 

 

3.2. 어노테이션 : 컨트롤러 등록과 URL 매핑

- @Controller : 컨트롤러를 등록하는 어노테이션

- @RequestMapping() : 요청 주소와 Controller를 매핑하는 어노테이션 (GET, POST 둘 다 가능)

- @GetMapping() : GET 요청의 주소와 Controller를 매핑하는 어노테이션

- @PostMapping() : POST 요청의 주소와 Controller를 매핑하는 어노테이션

@Controller
@RequestMapping("/test")
public Class TestController {
	@RequestMapping("/hello")    // "/test/hello"
	public String hello() {

 

 

 

 

 

 

 

 

 

📌  References

- https://codevang.tistory.com/194

 

JSP, Servlet(서블릿)의 URL 주소 매핑

[ Servlet - URL 매핑 ] 서블릿의 @WebServlet("/URL") 어노테이션을 사용한 매핑 web.xml을 통한 매핑 서블릿은 위의 두 가지 방법으로 URL 매핑이 가능합니다. 먼저 첫번 째 방법은 이클립스에서 서블릿 파

codevang.tistory.com

- https://sharonprogress.tistory.com/196

 

Handler Mapping과 Request Mapping이란?

HANDLER MAPPING, REQUEST MAPPING 모두 웹 애플리케이션에서 요청을 처리하는데 사용되는 개념이다. 이 두 개념은 Spring MVC에서 주로 사용되는 개념으로 웹 애플리케이션에서 클라이언트의 요청을 처리

sharonprogress.tistory.com

 

 

 

 

 

728x90