HTTP 프로토콜이란?
인터넷상에서 데이터를 주고받기위한 서버/클라이언트 모델을 따르는 프로토콜
메서드
GET : 정보를 요청하기 위해서 사용함 POST : 정보를 밀어넣기위해서 사용함
server.xml -> 디비 -> web.xml
웹 서비스 아키텍쳐
thread : 부모에의존적이다. 그리고 해당 servlet을 실행하는데
Servlet이란?
자바를 사용하여 웹을 만들기 위해 필요한 기술
서블릿의 특징 자바언어를 이용해서 작성한다
서블릿의 단점 화면에 표현될 HTML 코드를 프로그램적으로 작성해야 한다. 서비스 하기 전에 반드시 컴파일을 해야 함
web.xml 파일에 설정
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<servlet>
<servlet-name>ServletTest</servlet-name>
<servlet-class>com.icia.HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ServletTest</servlet-name> <!-- 위에있는 servlet-name 이랑 같이 -->
<url-pattern>/helloWorld</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>SendForm</servlet-name>
<servlet-class>com.icia.SendFormServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SendForm</servlet-name>
<url-pattern>/sendForm</url-pattern>
</servlet-mapping>
servlet 만들기 (helloworld)
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
package com.icia;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class HelloWorld
*/
@WebServlet("/helloWorld")
public class HelloWorld extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public HelloWorld() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html; charset=utf-8");
PrintWriter out = response.getWriter();
out.println("<html>" +
"<bodt><h1>서블릿 간단한 작성 예제입니다.</h1>" +
"</body></html>");
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
servlet 만들기 (SendFormServlet)
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
package com.icia;
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;
/**
* Servlet implementation class SendFormServlet
*/
@WebServlet("/sendForm")
public class SendFormServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public SendFormServlet() {
super();
System.out.print("SendFormServlet 생성자호출 ......");
}
/**
* @see Servlet#init(ServletConfig)
*/
public void init(ServletConfig config) throws ServletException {
System.out.print("SendFormServlet init() ......");
}
/**
* @see Servlet#destroy()
*/
public void destroy() {
System.out.print("SendFormServlet destory() ......");
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.print("SendFormServlet doGet() ......");
process(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.print("SendFormServlet doPost() ......");
process(request, response);
}
protected void process(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.print("SendFormServlet process() ......");
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.println("<!doctype html>");
out.println("<html>");
out.println("<head>");
out.println("<meta charset=\"UTF-8\">");
out.println("<title>sendForm</title>");
out.println("</head>");
out.println("<body>");
out.println("<a href=\"/sendProc?name=인천일보&email=icia@daum.net\">GET방식 전송</a>");
out.println("<br/><br/>");
out.println("<form name=\"form1\" method=\"post\" action=\"sendProc\">");
out.println("이름 : <input type=text name=name style=\"width:200px;\" />");
out.println("<br />");
out.println("이메일 : <input type=text name=email style=\"width:200px;\" />");
out.println("<br />");
out.println("<button type=button onclick=submit()>POST방식 전송</button>");
out.println("</form>");
out.println("</body>");
out.println("</html>");
}
}
서블릿 동작 과정
사용자 요청에 따라 스레드 단위로 실행되면서 데이터베이스 연동 등 필요한 작업을 수행하고 처리 결과를 사용자에게 HTML형식으로 전달하는 방법
서블릿 개발은 해당 메서드를 오버라이딩하거나 doGet(), doPost()와 같은 사용자 요청 처리 메서드를 구현하는 것임
- 사용자가 URL을 통해 요청을 보내면 HTTP Request를 Servlet Container로 전송합니다.
- HTTP Request 를 전송받은 Servlet Container는 HttpServletRequest, HttpServletResponse 두 객체를 생성
- web.xml에서 요청한 URL분석하여 어느서블릿에대해 요청을 한것인지 찾습니다.
- 해당 서블릿에서 SERVICE메소드를 호출 -> POST,GET여부에 따라 doGet(), doPost()를 호출한다.
- doGet() or doPost()메소드는 동적페이지를 생성 -> HttpServletResponse객체에 응답을 보낸다.
- 응답이 끝나면 HttpServletRequest, HttpServletResponse 두 객체를 소멸한다.
사진넣기…..
SendProcServlet
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
package com.icia;
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;
/**
* Servlet implementation class SendProc
*/
@WebServlet("/sendProc")
public class SendProcServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public SendProcServlet() {
super();
System.out.println("SendProcServlet 생성자........");
}
/**
* @see Servlet#init(ServletConfig)
*/
public void init(ServletConfig config) throws ServletException {
System.out.println("SendProcServlet init()........");
}
/**
* @see Servlet#destroy()
*/
public void destroy() {
System.out.println("SendProcServlet destroy()........");
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("SendProcServlet doGet()........");
process(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("SendProcServlet doPost()........");
process(request, response);
}
private void process(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
System.out.println("SendProcServlet process()........");
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=utf-8");
String method = request.getMethod(); /* 디폴트는 get받식이다. */
String name = request.getParameter("name");
String email = request.getParameter("email");
PrintWriter writer = response.getWriter();
writer.println("<!doctype html>");
writer.println("<html>");
writer.println("<head>");
writer.println("<meta charset=\"UTF-8\">");
writer.println("</head>");
writer.println("<body>");
writer.println("method : " + method);
writer.println("<br />");
writer.println("name : " + name);
writer.println("<br/>");
writer.println("email :" + email);
writer.println("</body>");
writer.println("</html>");
}
}