Bigfat

[Web] 서블릿 생성하기(web.xml) 본문

Java/web

[Web] 서블릿 생성하기(web.xml)

kyou 2017. 3. 22. 21:15

서블릿 클래스를 작성하고, 클라이언트 Request를 처리해보자

  브라우저에 'Hello world!'를 출력했을 때부터 시작해보기로 한다. 우선 Java Resources/src에 com.edu.bbs란 패키지를 생성하고, BBSServlet클래스를 만들어보자. BBSServlet클래스는 HttpServlet클래스를 상속받게 한다. HttpServlet클래스는 Java EE 7 API 문서에서 확인할 수 있다. Servlet은 웹 컨테이너(대표적으로 Tomcat, 서블릿 컨테이너라고도 부른다)에 의해 실행, 관리된다.


  BBSServlet클래스에서 alt+shift+s를 눌러 Override/Implement Methods를 선택한다.


  부모클래스인 HttpServlet클래스의 doGet, doPost메서드를 오버라이딩한다.


  HttpServlet클래스의 부모클래스인 GenericeServlet클래스의 init(ServletConfig)메서드도 오버라이딩하자.


  오버라이딩한 메서드들의 확인을 위해 콘솔에 찍히도록 바꿨다.

/**
 * BBSServlet.java
 * @Date 2017. 3. 23.
 */
package com.edu.bbs;

import java.io.IOException;
import java.util.HashMap;
import java.util.Properties;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class BBSServlet extends HttpServlet {

	private static final long serialVersionUID = 1L;

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("GET");
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("POST");
	}

	@Override
	public void init(ServletConfig config) throws ServletException {
		System.out.println("Initializing...");
	}
}


  web.xml에 Servlet에 관해 정의해주자. 이제 URL패턴이 .bbs(확장자)인 요청을 bbsServlet이 처리하게 된다.

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>bbs</display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  
  <servlet>
  	<servlet-name>bbsServlet</servlet-name>
  	<servlet-class>com.edu.bbs.BBSServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>bbsServlet</servlet-name>
  	<url-pattern>*.bbs</url-pattern>
  </servlet-mapping>
</web-app>


  브라우저에서 http://localhost/bbs/*.bbs로 접근하면 콘솔에 init, doGet메서드가 실행되는 것을 확인할 수 있다. URL에서 *(와일드카드)는 추후 login.bbs나 list.bbs 등 화면마다 매칭되게 만들 것이다.