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 |