모든지 기록하자!

Servlet 맵핑 본문

JSP, Servlet

Servlet 맵핑

홍크 2021. 6. 3. 23:36
728x90

Servlet 맵핑이란?

여러 개의 Servlet이 존재할 때  브라우저가 어떤 Servlet을 요청하는지 구별하기 위해

각 Servlet마다 이름이 필요하고 그 이름은 중복이 될 수 없다.

Servlet을 구분하기 위한 full path는 길이도 길고 복잡하며 모든 경로가 다 나타나기 때문에 보안에 취약하다. 

반대로 맵핑을 사용 하게되면 URL이 간결하고 보안에 취약하지 않게 할 수 있다.

1. web.xml 파일을 이용한 맵핑

  <servlet>
  	<servlet-name>HelloServlet</servlet-name>
  	<servlet-class>com.testPjt.HelloServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>HelloServlet</servlet-name>
  	<url-pattern>/hs</url-pattern>
  </servlet-mapping>

web.xml 파일에 위와 같이 임의로 <servlet-name>에 가명(HelloServlet)을 적어주고 

servlet의 패키지명을 포함한 full path name을 <servlet-class>에 넣어준다.

<servlet-mapping> 태그는 위쪽에서 만든 가명 HelloServlet을 /hs로 맵핑한다는 의미이다.

 

public class HelloServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;


    public HelloServlet() {
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.getWriter().append("Served at: ").append(request.getContextPath());
	
		PrintWriter out = response.getWriter();
		out.print("<p>Hello Servlet</p>");
		
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}

Servlet을 생성후 PrintWriter 객체를 이용해서 response.getWriter() 메서드를 호출한다.

out.print를 이용해서 간단한 내용을 출력해 보자 

서버를 구동시켜 http://localhost:8090/testPjt   뒤에 /hs 붙여주면 만들었던 Servlet이 호출된다.

맵핑을 사용하면 위와같이 간결한 URL을 사용 가능하다.

2. Java Anotation을 이용한 맵핑

Java Anotation을 이용한 맵핑은 위와 같이 해당 Servlet위에 @WebServlet 안에 맵핑 값을 입력해준다.

어노테이션을 이용해 맵핑 했기 때문에 hs1을 호출해도 동일하게 응답이 된다.

 

자바 어노테이션을 이용하는 방법이 훨씬 간단하지만 web.xml을 꼭 이용해야 할 때가 있기도 하다.또 다른 사람이 코딩한 코드를 이어서 코딩할 때는 web.xml을 보는 방법도 숙지하면 좋을 것 이다.

728x90

'JSP, Servlet' 카테고리의 다른 글

Connection Pool 이란?  (0) 2021.06.18
Servlet request와 response  (0) 2021.06.05
JSP란?  (0) 2021.06.03
Comments