본문 바로가기
JAVA

Servlet

by e-pd 2020. 1. 26.

Servlet은 Java를 이용하여 로직을 구현한뒤, 

출력객체를 이용하여 HTML을 삽입.

(JSP의 경우는 HTML에 Java를 삽입한다)

 

 

브라우져 -> WebServer -> WAS - > Servlet 컨테이너

 

자바 어플리케이션 (Java Web Application)

WAS 설치(deploy)되어 동작하는 어플리케이션.

 

자바 어플리케이션에는 HTML, CSS, 이미지, 자바로 작성된 클래스

(Servlet 포함됨. Package, 인터페이스 ), 각종 설정 파일 등이 포함된다.

 

 

Servlet  :

  • 동적 웹어플리케이션 컴포넌트
  • .java 파일
  • java thread 를 이용해 동작
  • MVC의 Controller 로 이용

 

 

Workspace 폴더 -> .metadata-> org.eclipse.wst.server.core.wtpwebapps에는

내가 tomcat에서 실행한 class파일이 담겨있다.

 

 

실행상태에서 F5하면

Service 계속 호출된다.

 

서버에 servlet 객체를 여러개 만들지 않기때문이다.

 

요청된 객체가 메모리에 있는지 있으면 계속 호출.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
@WebServlet("/Lifecycle")
public class LifecycleServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
 
    public LifecycleServlet() {
        super();
        System.out.println("First");
    }
 
    public void init(ServletConfig config) throws ServletException {
        System.out.println("Second");
    }
 
    
    public void destroy() {
        System.out.println("destroy");
    }
 
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head><title>form</title></head>");
        out.println("<body>");
        out.println("<form method='post' action='/Lifecycle'>");
        out.println("name : <input type='text' name='age'><br>");
        out.println("<input type='submit' value='ok'><br>");                                                 
        out.println("</form>");
        out.println("</body>");
        out.println("</html>");
        out.close();
    }
 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        int age = request.getParameter("age");
        out.println("<h1> my age : " + age + "</h1>");
        out.close();
    }
 
//    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//        System.out.println("service 호출!!");
//    }
//    
    
 
}
cs

 

서블릿의 라이프사이클 : 생성자 - > init -> service, doGet, doPost, destory

 

service가 없어도 doGet, doPost가 구현되어 있다면 실행된다.

 

destory의 경우 애플리케이션의 변화가 일어나서 재실행을 해야되거나

WAS가 종료될때 발생한다.

 

 

'JAVA' 카테고리의 다른 글

JVM  (0) 2020.08.14
자바 면접 질문 정리  (0) 2020.08.06
Stream, 리스트 비교로 boolean, List 리턴  (0) 2019.09.15
시그니쳐  (0) 2019.08.17
JRE, JDK?  (0) 2019.07.27