본문 바로가기
교육, 학습/멀티캠퍼스_풀 스택

Servlet - url매핑(어노테이션, Web.xml), 구현(HttpServlet)

by 개발하는 경제학도 2022. 3. 9.

강의 소개

현재 수강하고 있는 멀티캠퍼스 k-digital 지능형 웹서비스 풀 스택 과정을 수강하며 적은 내용입니다.

교재로는 자바 웹을 다루는 기술을 사용하고 있습니다.


서블릿 클래스 작성법

 

서블릿 매핑하기

방법 1. @WebServlet사용(어노테이션)

@WebServlet("/url매핑부분")
class A extends HttpServlet {
	doGet(){실행내용}
}

자바 소스 내 직접 작성해서 단순하다. 하지만 전체 서블릿 매핑 이름 구조를 파악하기는 어렵다.

@WebServlet() 안에 들어가는 부분이 url 매핑되는 부분이다.

 

이 서블릿 클래스는 서버를 실행한 뒤 아래 주소를 브라우저에 입력하면 호출된다.

http://ip:port/DynamicWebProject폴더명/url매핑부분

 

방법 2. Web.xml에 서블릿 정의

    <!-- 1. aliases 설정 -->
    <servlet>
        <servlet-name>아래 servlet-name과 같은 이름</servlet-name>
        <servlet-class>패키지명.서블릿클래스명</servlet-class>
    </servlet>

    <!-- 2. 매핑 -->
    <servlet-mapping>
        <servlet-name>위의 servlet-name과 같은 이름</servlet-name>
        <url-pattern>/url매핑</url-pattern>
    </servlet-mapping>

서블릿 3 버전 이전까지 사용되었던 방법이다. 전체적으로 서블릿 매핑 구조를 알 수 있다.

 

WEB-INF 폴더 내 Web.xml 파일에 위와 같은 형식으로 내용을 추가한다.

유의해야 할 점은 url-pattern의 값은 /hello 등과 같이 같이 반드시 /가 있어야 한다는 점이다.

위의 어노테이션 방식과 마찬가지로 아래와 같이 호출된다. 설정 방법만 다를 뿐 같은 작업을 해준 것이다.

http://ip:port/DynamicWebProject폴더명/url매핑부분

 


 

서블릿 클래스 구현 시 상속받아야 하는 클래스

일반. java파일에서 상속을 통해 서블릿 클래스를 만들 수 있다.

이 3개의 클래스, 인터페이스는 상속관계이며 아래 사진과 같다.

오버라이딩 상속도

 

방법 1. HttpServlet 클래스를 상속받기

@WebServlet("/url매핑부분")
class A extends HttpServlet {
	doGet(){실행내용}
}

HttpServlet은 http방식의 2가지 중 get방식, post방식 중 선택 가능하다.

get방식일 경우 doGet(), post방식일 경우 doPost() 메서드를 각각 오버 라이딩하면 된다.

get, post 모두 가능하여 이 클래스를 상속받는 것이 가장 선호되는 서블릿 구현 방식이다.

서블릿이 반드시 상속받아야 할 Httpservlet은 톰캣 라이브러리다. 따라서 java압축파일인. jar로 묶여있다.

 

- doGet() / doPost() 메서드: 실행 결과를 브라우저에 전송하는 메서드이다.

HttpServlet클래스를 상속받으면 doGet메서드 혹은 doPost 둘 중 하나 이상을 반드시 오버 라이딩해야 한다. (둘 다 오버 라이딩하는 것도 가능하다.)

 

ex. 만약 /login 요청 시 @WebServlet("/login")을 만나면 해당 클래스인 class A를 실행하게 된다. 그럼 A내부의 doGet메서드가 실행하려는 내용이 웹브라우저에서 실행되어 출력된다.

 

방법 2. GenericServlet 클래스를 상속받기

@WebServlet("/url매핑부분")
class A extends GenericServlet {
	service(){실행내용}
}

service만 오버 라이딩해야 한다. get, post 방식 구분을 하지 못한다.

 

방법 3. Servlet인터페이스를 상속받기

class A implements Servlet {

오버라이딩해야 할 메서드 5개}

오버 라이딩해야 하는 메서드가 5개이기 때문에 번거로워 잘 사용되지 않는다.

이 인터페이스의 내부에는 서블릿의 생명주기와 관련된 메서드인 init(), destroy(), service() 등이 있다.

댓글