Servlet은 JAVA 언어를 사용하여 웹 프로그램을 제작하는 것이다.
간단한 Servlet 프로젝트를 만들어 보면서 전체적인 구조(흐름)을 살펴보겠다.
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
// 요청처리 객체 // 응답처리 객체
Servlet 클래스는 HttpServlet 클래스를 상속 받는다.
요청처리 객체 및 응답처리 객체를 톰캣 서버에서 받는다.
response.setContentType("text/html; charset=utf-8");
클라이언트에게 보여줄 때는 html로 보여준다.
PrintWriter out = response.getWriter();
웹 브라우저에 출력하기 위한 스트림
서블릿 파일은 자바파일 이기 때문에 출력스트림을 이용해서 html 코드를 직접 뿌려준다.
JSP는 기본적으로 html 파일이기 때문에 서블릿과는 조금 다르다.
out.println("<HTML>");
out.println("<HEAD><TITLE>현재시간</TITLE></HEAD>");
out.println("<BODY>");
out.println("오늘 날짜는");
out.println(nowDt);
out.println("입니다.");
out.println("</BODY>");
out.println("</HTML>");
그냥 html임...
클라이언트가 로그인 정보를 입력하여 로그인 버튼을 누르면 request 객체에 담겨서 서버로 넘어간다.
그럼, 서버는 DB를 참조하여 로그인 여부를 결정해서 그 정보를 response 객체에 담아서 넘겨준다.
클라이언트의 요청이 들어오면 서버에서 요청을 받아서 처리한다.
여기서 중요한 것은 요청처리객체 및 응답처리객체는 톰캣 서버가 직접 생성해주는 것이다.
GET & POST 방식
GET 방식
<form method 속성값 = get>
</form>
URL 값으로 정보가 전송되어 보안에 약함
URL 경로 뒤, 물음표(?)와 함께 파라미터를 붙여 전송함.
이것을 쿼리문자열 이라고 한다. 쿼리문자열은 각각의 파라미터를 &로 구분한다.
POST 방식
<form method 속성값 = post>
</form>
header를 이용해 정보가 전송되어 보안에 강함
클라이언트 HTML에서 form 태그를 이용하여 ID, PW등을 보낼 때 보내는 방식에는 GET방식과 POST 방식이 있다.
그것에 따라 서블릿의 메서드가 호출되는 것이다.
doGet( )
html 내 form 태그의 method 속성이 get일 경우 호출 된다.
웹 브라우저의 주소창을 이용하여 servlet을 요청한 경우에도 호출 된다.
doGet 메서드는 매개변수로 HttpServletRequest와 HttpServletResponse를 받는다.(톰캣 서버가 자동 생성해줌)
HttpServletResponse 객체의 setContentType( ) 메서드를 호출하여 응답방식을 결정한다.
HttpServletResponse 객체의 getWriter( ) 메서드를 이용하여 출력 스트림을 얻는다.
출력 스트림의 println( ) 메서드를 이용하여 출력하면, 웹 브라우저에 출력 된다.
doPost( )
html 내 form 태그의 method 속성이 post일 경우 호출 된다.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Form 태그</title>
</head>
<body>
<!-- form 태그를 이용하여 GetorPost.java 파일에 있는 doGet() 메서드를 직접 호출한다. -->
<form method="get" action="GetorPost">
<!-- 입력 타입 submit은 전송의 의미로 버튼이 나타나고 전송이라는 문자열이 적힌다.-->
<input type = "submit" value="전송">
</form>
</body>
</html>
지금은 눌러도 GetorPost.java가 만들어져 있지 않기 때문에 404가 뜬다.
그렇다면 GetorPost을 받는 클래스를 만들어주자!
이제 전송버튼을 누른다면 매핑이 되어있는 /GetorPost로 이동할 것이다!
@WebServlet("/GetorPost")
public class GetorPostServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public GetorPostServlet() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doGet() 메서드 호출");
response.setContentType("text/html; charset = utf-8");
// 출력 스트림을 얻는다.
PrintWriter out = response.getWriter();
out.println("안녕하세요");
out.println("<HTML>");
out.println("<HEAD>");
out.println("</HEAD>");
out.println("<BODY>");
out.println("<H1>doGet 방식입니다. 반갑습니다!</H1>");
out.println("</BODY>");
out.println("</HTML>");
out.close();
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doPost() 메서드 호출");
response.setContentType("text/html; charset = utf-8");
// 출력 스트림을 얻는다.
PrintWriter out = response.getWriter();
out.println("안녕하세요");
out.println("<HTML>");
out.println("<HEAD>");
out.println("</HEAD>");
out.println("<BODY>");
out.println("<H1>doPost 방식입니다. 반갑습니다!</H1>");
out.println("</BODY>");
out.println("</HTML>");
out.close();
}
}
POST 방식으로 하고 싶다면 html의 method 속성을 post로 바꾸면 된다.
'JSP' 카테고리의 다른 글
[JSP] Servlet 파라미터 값 받기 (0) | 2024.05.09 |
---|---|
[JSP] Servlet (0) | 2024.05.09 |
[JSP] JSP 특징, 동작 원리 (0) | 2024.05.09 |