들어가기 전에
어떤 객체의 생성부터 소멸까지의 과정을 라이프 사이클(Life Cycle)라고 합니다.
이번 학습에서는 서블릿의 라이프 사이클을 알아봅니다.
학습 목표
- 서블릿의 생명주기를 이해합니다.
핵심 개념
- init
- service
- destory
학습하기
들어가기 전에
어떤 객체의 생성부터 소멸까지의 과정을 라이프 사이클(Life Cycle)라고 합니다.
이번 학습에서는 서블릿의 라이프 사이클을 알아봅니다.
학습 목표
Servlet 생명주기
실습코드
LifecycleServlet.java
package examples;
import java.io.IOException;
import java.io.PrintWriter;
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;
@WebServlet("/LifecycleServlet")
public class LifecycleServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public LifecycleServlet() {
System.out.println("LifecycleServlet 생성!!");
}
public void init(ServletConfig config) throws ServletException {
System.out.println("init test 호출!!");
}
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='/firstweb/LifecycleServlet'>");
out.println("name : <input type='text' name='name'><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");
PrintWriter out = response.getWriter();
String name = request.getParameter("name");
out.println("<h1> hello " + name + "</h1>");
out.close();
}
// protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// System.out.println("service 호출!!");
// }
//
}
service(request, response) 메소드
HttpServlet의 service메소드는 템플릿 메소드 패턴으로 구현합니다.
LifecycleServlet 수정 실습
참고 자료
http://jdm.kr
https://www.edwith.org
comment
기존의 servlet 메소드를 완전히 코멘트 해야하는군요 한 20분 고생했네요 ㅎㅎ
24.03.29.
주님께도 감사하고 이런 좋은 강의를 제공하는 관계자 분들께도 감사합니다. 은혜에 감사합니다.
Httpservlet에는 service메소드가 구현 되어있다. Servlet의 부모로부터 상속받는 메소드이다.
오버라이딩하지 않으면 그냥 있는대로 쓰여진다. Doget,dopost호출메소드로
Doget은 서블릿의 해당 url에 접속했을때의 해당하는 그 페이지를 보여주는 역할 또는 링크를 클릭했을때 의 요청방식에 대해 응답한다.
dopost는 post방식의 요청이 들어왔을때 페이지를 보여주는 역할을 한다
<form method='post' action='/firstweb/LifecycleServlet'>
Form의 submit버튼이 눌리면 내용을 action에 적힌 url에 해당하는 곳에 post 방식으로 전달해서 처리하도록 하는 문장
2022.09.18
2022.08.03
요청이 들어왔을 때 응답해야하는 모든 내용은 service라는 메소드에 구현.
WAS가 종료되거나 웹 어플리케이션 갱신 시 destroy()메소드 실행
HTTPServlet > service메소드 : service 메소드를 override하지 않고 doGet/doPost 메소드만 override하여도 호출되면서 그 안에 구현해 두었던 응답 결과를 보내줌
해당 서블릿의 URL주소를 직접 입력하거나 링크를 클릭하는 것은 GET방식으로 서버에게 요청 -> service 메소드 호출 -> 자신의 doGet/doPost 메소드 호출
2022.03.10
20220204
20220129
호출순서.
생성자 -> init -> service
service 메소드 없을 시 부모 클래서 httprequest의 service를 실행.
최초 url 호출은 get방식으로 doGet 메소드 호출
action시 method를 post로 호출 시에는 doPost 메소드 호출
눈물나게 좋은 강의 감사합니다 여기서 6분이면 이해될것을 국비에서 6개월 낭비했네요 ㅜ
20220107
get, post가 요청되면 어떻게 되는지 이해가 잘되었음
너무 감사합니다. 설명이 완벽해요
프로젝트명을 firstWeb으로 안하신 분들은 버튼 클릭하면 404 에러 뜹니다. doGet 메서드에서 out.println 할 때 form action 부분의 firstWeb을 본인의 프로젝트명으로 바꾸시면 될 듯 합니다ㅎㅎ
21.05.16
404에러 - 원인은 다양할 수 있지만 저의 경우 주소(경로)문제였습니다.
1.doGet메서드내용 중 action='/firstWeb/LifecycleServlet' 경로 확인 (대소문자 유의)
2. Servers > Tomcat ... > server.xml > 본문 뒷 부분... Context docBase="firstWeb" path="/firstWeb"... 경로 확인
500에러 - 서버관련 문제
405에러 - 서비스관련 문제
Submit 버튼 누르고 나면 404 에러는 왜 나는지 아실까요...ㅠㅠㅠ
405에러 왜 나는 걸까요..
GET 방식이냐 POST 방식이냐에 따라서 같은 URL 매핑 주소지만
다른 메서드가 호출이 되고 있는지 확인할 수 있다!