프로그래밍/스프링
2. 서블릿 - 1)서블릿 생명주기, 초기화
돌비돌비돌비
2018. 11. 18. 21:16
2.1 서블릿 시작하기
서블릿 : JVM 기반에서 웹 개발을 하기 위한 명세이자 API다. Java EE에 포함된 스펙 중의 하나로 자바에서 HTTP 요청과 응답을 처리하기 위한 내용들을 담고 있다.
자바를 실행하려면 JRE가 필요
-> 서블릿을 실행하려면 웹 애플리케이션 컨테이너가 필요
2.1.1. 서블릿 설정
그래들을 사용할 예정.
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
@WebServlet("/init")
public class InitServlet extends HttpServlet{
@Override
public void init() throws ServletException{
System.out.println("init call");
}
}
HttpServlet은 추상 클래스이다. init메소드는 초기화에 대응되는 메서드이므로 한번만 호출이 된다.
gradlew appStartWar
http://localhost:8080/init
콘솔에서 gradlew appStartWar를 입력후 브라우저로 http://localhost:8080/init에 접속한다.
그러면 콘솔에서 "init call"을 확인할 수 있다.
아래는 위 방식을 기존 web.xml에서 URL매핑을 설정하는 방식이다.
<servlet>
<servlet-name>Init<&/servlet-name>
<servlet-class>InitServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Init</servlet-name>
<url-parttern>/init</url-parttern>
</servlet-mapping>
servletConfig.getInitParameter를 이용해서 web.xml 또는 WEbInitParam 어노테이션의 정보를 서블릿 초기화 시 전달한다.
import java.io.IOException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet(
name="initServlet", urlPatterns = {"/init"},
initParams = {@WebInitParam(name="siteName", value="jpub")}
)
public class InitServlet extends HttpServlet{
private String myParam = "";
@Override
public void init(ServletConfig servletConfig) throws ServletException{
System.out.println("init call");
this.myParam = servletConfig.getInitParameter("siteName");
System.out.println("site name : " + myParam);
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
resp.getWriter().println("hello");
}
}