Web-Servlet
Servlet
웹기반 요청에 대한 동적인 처리가 가능한 하나의 클래스 이다.
Server Side에서 돌아가는 Java Program이다.
HTML Form Element안에 정보를 담고 Input Element에 의해 정보 전송
Form Element
- method: 원하는 동작 설정: get or post
- action: Servlet에게 전송되는 논리적인 URL
Input Element
- type=”submit”: Form 안의 내용을 해당 URL에 맞는 Servlet 요청으로 들어가게 함
Html
get과 post방식으로 hi.do라는 URL로 통해 보내게 된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Servlet</title>
</head>
<body>
*서블릿 연습*<p/>
<form action="hi.do" method="get">
<input type="submit" value="전송-get">
</form>
<br>
<form action="hi.do" method="post">
<input type="submit" value="전송-post">
</form>
<br>
</body>
</html>
Servlet - Java
hi.do라는 URL요청이 왔을 경우 처리하는 곳 이다.
1) init()
- 최초 접속자에 의해 1회 수행되는 초기화 작업이다.
- Servlet 객체를 초기화하는 역할이다(Servlet 객체를 메모리에 할당한다.)
- 1초뒤 sendKeyword() 실행
- 1초의 텀을 둔 이유는 한글에서 한 글자를 적을때까지 기달리게 하기 위해서 이다.
2) Service(request,response)
- 응답에 대한 모든 내용이 구현되는 곳 입니다.
- doget()
- Service중 doget Method를 Override한 곳이다.
- get방식이 들어왔을때 수행되는 함수이다.
- 서블릿 strart - doGet라는 HTML 문서로 Return 되어 보여지게 된다.
- dopost()
- Service중 dopost Method를 Override한 곳이다.
- post방식이 들어왔을때 수행되는 함수이다.
- 서블릿 strart - doPost라는 HTML 문서로 Return 되어 보여지게 된다.
do | post |
스트링 형태로 전송 | 인코딩 형태로 전송 |
URL에 정보 보임 | URL에 정보 안보임 |
공유가 쉬움 | 공유가 어려움(정보가 인코딩 되어 안보이기 때문에 URL 링크다고 이동시 정보가 없는 결과가 나오게 된다.) |
3) destroy()
- 서비스 종료시 1회 수행되는 함수이다.
- Servlet 객체를 메모리에서 제거한다.
출처: heejeong Kwon블로그
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
package pack;
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("/hi.do")
public class TestServlet extends HttpServlet {
public void init(ServletConfig config) throws ServletException {
// 최초접속자에 의해 1최 수행 - 초기화작업
System.out.println("초기화 작업");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.println("<html><body>");
out.println("<h1>서블릿 start -doGet</h1>");
out.println("</body></html>");
out.close();
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.println("<html><body>");
out.println("<h1>서블릿 start -doPost</h1>");
out.println("</body></html>");
out.close();
}
public void destroy() {
//서비스 종료 시 1회 수행 - 마무리 담당
System.out.println("destory");
}
}
결과
아래 동영상은 Get, Post방식에 따른 출력 결과이다.
아래 사진은 생성자에 의해 한번만 수행되는 것을 나타낸 결과이다.
내용참조: 망나니개발자 블로그
내용참조: heejeong Kwon블로그
참조:원본코드
코드에 문제가 있거나 궁금한 점이 있으면 wjddyd66@naver.com으로 Mail을 남겨주세요.
Leave a comment