Servlet은 웹페이지를 자바를 이용해 동적으로 동작하기 위한 기술이라고 이해하면 된다.


html 문서만 본다면 Servlet 사용전은 사용자 - html 문서의 관계가 되고


Servlet을 적용하면 사용자 - html 문서 - 서버의 java 프로그램이 된다.


예전에 환경할 때 사용했던 Tomcat 버전에 따라 지원하는 Servlet 버전이 다르기 때문에 호환이 되는지 알 필요가 있다.


Tomcat 홈페이지에 가면 알 수 있다.





블로그에서 사용한 톰캣은 8.5.35버전이다.


다음으로는 환경설정이다.


예전 Java Script 설정과 거의 비슷하나 조금 다른부분만 추가로 설명한다. JS 설정 -> https://qdgbjsdnb.tistory.com/162




설정을 쭉 따라하다가 아래와 같은 부분에서 체크박스 체크를 하는 부분이 있다.





이번에는 Java 파일도 사용하므로 Java도 체크한다.


첫번째 예제 Dynamic web Project는 다음과 같이 생성했다.





프로젝트 구성은 다음과 같이 만들었다.






index는 시작페이지


controller는 java 파일이 들어가 Servlet 역할을 할 파일이 된다.


예제의 내용은 처음 페이지에서 링크를 누르면 이클립스의 콘솔창에 첫번째 방문 시 문구가 출력이 되고


반복적으로 새로고침을 하면 출력되는 숫자가 점점 올라간다.







코드는 다음과 같다.


아래에서 사용될 메소드들은 (https://qdgbjsdnb.tistory.com/204?category=727563)에서 정리해놓았다.


index.html



<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<a href="/w1/cycle">라이프사이클 테스트하기</a>
</body>
</html>


LifeCycleServlet.java



package controller;

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

// 서블릿을 조금이라도 수정한다면 톰캣을 종료했다가 다시 작동시켜야 한다.

// 아래의 어노테이션을 입력하면 web.xml에 입력했던 연결과 같은 기능을 함.
@WebServlet("/cycle")
public class LifeCycleServlet extends HttpServlet{
	private int initCount = 1;
	private int doGetCount = 1;
	private int destroyCount = 1;
	
	public LifeCycleServlet() {}
	
	public void init(ServletConfig config) throws ServletException {
		System.out.println("init 메소드는 첫 요청시 한 번만 호출됨 : " + initCount++);
	}
	
	public void destroy() {
		System.out.println("destroy 메소드는 톰캣 종료시 호출됨 : " + destroyCount++);
	}
	
	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException{
		System.out.println("doGet 메소드는 요청시마다 호출됨 : " + doGetCount++);
	}
	
	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException{
		doGet(request, response);
	}
}



여기서 주목해야 할 점은 Servlet을 수정 즉, java 파일을 수정하면 서버는 껏다 키는걸 권장한다.


두번째는 Servlet api를 사용하는데 오버라이딩 된 init, destroy, doGet 등이 있다.


오버라이드 할 수 있는 함수는 나중에 설명한다.


마지막으로 @WebServlet("/cycle") 부분으로 어노테이션을 통해 Servlet과 HTML 문서 페이지를 연결해주는 키워드이다.


두 가지의 기술을 연결, mapping 시켜주는 키워드이다.


여기서 쓰인 init, destroy, doGet을 설명하면


init은 페이지 호출 시 한번만 실행될 함수


destroy는 톰캣 종료시 실행될 함수


doGet은 새로고침 될 때 올라가는 카운트, 호출 시 계속 실행될 함수이다.




+ Recent posts