본문 바로가기

Java&JSP&Spring/JSP&Servlet

[JAVA/Servlet]Servlet에서 URL맵핑하는 2가지 방법

 

[JAVA/Servlet]Servlet에서 URL맵핑하는 2가지 방법

안녕하세요 미나라이입니다.

이번에는 지난 포스팅에 이어서 서블릿에서 URL을 맵핑하는 방법에 대해서 알아보겠습니다.

프로젝트 환경

OS : Windows 10

IDE : Eclipse 2020-06 (4.16.0)

Java : 8

Jdk Version : 1.8.0_161

WAS : Tomcat 8.5.73

 

해당 포스팅의 프로젝트 생성에 대한 정보는

아래 포스팅을 참고해 주세요

 

[JAVA/JSP/Servlet]Servlet간단하게 만들고 실행해보기

[JAVA/JSP/Servlet]Servlet간단하게 만들고 실행해보기 안녕하세요 미나라이입니다. 이번에는 간단하게 Servlet프로젝트 생성 및 실행을 해보도록 하겠습니다. 프로젝트 환경 OS : Windows 10 IDE : Eclipse 20..

nameybs.tistory.com

 

브라우저에서 URL로 웹 페이지를 접속할 때 주소를 적어야 하죠

이때 맵핑을 하지 않으면 기존의 주소는 이렇게 되어있는 상태가 됩니다.

 

서버:포트/프로젝트명/servlet/패키지를포함한클래스명

http://localhost:8081/ServletTest1/servlet/com.test.HelloWorld

이렇게 표시가 됩니다.

 

이렇게 하면 보안에 노출되기 쉽고 너무 길어서 알아보기 불편한 점 등이 생깁니다.

 

이러한 부분을 보완하기 위해 맵핑 처리를 해줍니다.

 

어노테이션을 이용한 방법

어노테이션을 이용하는 방법은 서블릿 파일을 생성할 때 디폴트로 설정이 됩니다.

HelloWorld.java

중간에 @ WebServlet("/HWorld")로 정의한 부분이 보이실겁니다.

이렇게 선언 하고 실행을 해 봅시다.

package com.test;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class HelloWorld
 */
// 어노테이션 맵핑 방식
@WebServlet("/HWorld")
public class HelloWorld extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public HelloWorld() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("Hello World!");
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}
}

실행 후에 어노테이션에 설정한 이름으로 주소를 쳐 보면 아래와 같이 페이지 에러가 안뜬 것을 확인 할 수 있습니다.

브라우저에 아무것도 뜨지 않는 이유는 아무것도 표시하지 않았기 때문입니다.

대신 콘솔창에는 메세지를 띄웠기 때문에 콘솔창을 확인하면 나오는 것을 확인 할 수 있습니다.

web.xml을 이용한 방법

어노테이션을 이용하는 방법 대신에 web.xml에 별도로 정의를 해서 이용하는 방법도 있습니다.

이 경우엔 어노테이션 부분을 주석을 쳐 줍시다.

HelloWorld.java

package com.test;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class HelloWorld
 */

// 어노테이션 맵핑 방식(XML에서 설정했을 경우 주석처리)
//@WebServlet("/HWorld")
public class HelloWorld extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public HelloWorld() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("Hello World!");
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}
}

web.xml

아래와 같이 선언 해 줘봅시다.

먼저 맵핑 대상 클래스를 찾아서 이름을 만들어주고

이름을 변환 해 주면 됩니다.

저는 /hw로 일단 변환 해 보았습니다.

변환 후 프로그램을 실행하고 web.xml에 설정한 주소로 맵핑을 해보겠습니다.

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>ServletTest1</display-name>
    <!-- 해당 부분은 디폴트로 생성되니 무시 -->
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
    </welcome-file-list>

    <!-- 서블릿 문서 설정 -->
    <servlet>
        <!-- 임의의 이름 -->
        <servlet-name>helloworld</servlet-name>
        <!-- 서블릿 문서 위치 -->
        <servlet-class>com.test.HelloWorld</servlet-class>
    </servlet>
    <!-- 맵핑 작업 -->
    <servlet-mapping>
        <!-- 서블릿 문서 작성시 설정한 서블릿 이름 -->
        <servlet-name>helloworld</servlet-name>
        <!-- 맵핑을 할 주소 -->
        <url-pattern>/hw</url-pattern>
    </servlet-mapping>
</web-app>

해당 주소로 이동하니 페이지 에러가 없이 잘 뜨는 것을 확인 할 수 있습니다.

콘솔창에 출력된 값을 보면 해당 클래스를 잘 접근한 것을 볼 수 있습니다.

이상으로 간단하게 서블릿에서 URL을 맵핑하는 방법에 대해서 알아보았습니다.

 

 

728x90
반응형