-
서블릿 기초 형태백엔드/서블릿&JSP 2021. 1. 13. 11:09
2020/10/30 - [백엔드/서블릿&JSP] - 서블릿(Servlet)이란?
위와 같이 이전에 서블릿에 관한 글을 썼다.
간단하게 요약하면 서블릿을 만들기 위해서 HttpServlet 추상 클래스 상속 받아야 한다.
그리고 해당 추상 클래스는 서블릿 구동에 필요한 모든 것(init(), destroy(), service())이 이미 구현되있다.
그래서 아래와 같이 이클립스를 통해 서블릿을 생성하면 아래와 같은 기본 폼이 제공된다.
그리고 이걸 바로 사용해주면 된다.
package com.my.web; import java.io.IOException; 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("/Test") public class Test extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } }
간단히 설명하면 Http 요청 방식은 Get, Post으로 나뉘는데 어떤 방식으로 request가 전달되느냐에 따라서
서로 담당하는 메서드가 달라진다.
조금 조잡하지만 그림으로 표현하면 아래와 같다.
아래와 같은 코드가 있다고 가정해보자.
package com.my.web; 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; @WebServlet("/test") public class Test extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setCharacterEncoding("UTF-8"); response.setContentType("text/html; charset=UTF-8"); PrintWriter out = response.getWriter(); out.print("get으로 요청함"); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setCharacterEncoding("UTF-8"); response.setContentType("text/html; charset=UTF-8"); PrintWriter out = response.getWriter(); out.print("post로 요청함"); } }
해당 서블릿은 get으로 requst가 들어오면 "get으로 요청함"이라는 메시지가 뜬다.
post로 request가 들어오면 "post로 요청함"이라는 메시지가 뜬다.
아래와 같이 request를 get방식으로 전달하는 JSP 파일이 있다고 가정해보자.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <form action="test" method="get"> <input type="submit"> </form> </body> </html>
브라우저 상에서 실행하면 아래와 같은 버튼이 생성된다.
버튼을 누르면 get방식으로 reqeust를 전송하고 서블릿의 get메서드가 실행된다. 결과는 아래와 같다.
이제 method를 post로 바꿔서 버튼을 누르면 request가 post방식으로 전달되도록 하자.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <form action="test" method="post"> <input type="submit"> </form> </body> </html>
결과물은 아래와 같다.
서블릿은 하나 뿐이지만 서블릿 안에 메서드를 통해서 클라이언트의 요청을 분류해서 처리가 가능하다.
'백엔드 > 서블릿&JSP' 카테고리의 다른 글
서블릿 필터(filter)에 대해서 (0) 2021.01.13 서블릿에서 한글 문자 인코딩하기 (0) 2021.01.13 forward와 sendRedirect 차이 (0) 2021.01.11 세션과 쿠키(Session과 Cookie) (0) 2021.01.07 javax.servlet.http 패키지 (0) 2021.01.07