728x90
728x90
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<div>GET 요청</div>
<a href="request">a 태그의 href 속성</a>
<form action="request" method="GET">
<input type="submit" value="form 태그의 action 속성">
</form>
<div>POST 요청</div>
<form action="request" method="POST">
<input type="submit" value="form 태그의 action 속성">
</form>
</body>
</html>
servlet에 get요청과 post요청을 위해서 index.html을 다음과 같이 작성한다.
a태그의 href속성이나 form 태그의 method를 GET으로 설정하여 GET요청을 할 수 있고 form 태그의 method를 POST로 설정하여 POST 요청을 할 수 있다.
@WebServlet("/request")
public class ServiceMethodTestServlet extends HttpServlet {
@Override
public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
String httpMethod = request.getMethod();
if("GET".equals(httpMethod)) {
doGet(request, response);
}
}
}
mapping 경로에 맞는 서블릿을 구현하고 request 객체의 getMethod를 통해서 메소드 종류를 구하고 "GET"일 경우에 doGet 메소드를 호출하도록 한다.
이때 doGet 메소드는 현재 서블릿이 상속하고 있는 HttpServlet의 메소드이다.
위와 같은 결과를 볼 수 있는데 기본적으로 HttpServlet에서는 doGet 메소드가 sendMethodNotAllowed 메소드를 호출한다.
sendMethodNotAllowed 메소드는 response 객체의 sendError 메소드를 통해서 에러 상태 코드를 보여주는 페이지를 응답한다.
따라서 GET요청을 허용하기 위해서는 doGet 메소드를 오버라이딩 하여 사용한다.
@WebServlet("/request")
public class ServiceMethodTestServlet extends HttpServlet {
@Override
public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
String httpMethod = request.getMethod();
if("GET".equals(httpMethod)) {
doGet(request, response);
}
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("GET 요청");
}
}
doGet 메소드를 오버라이딩 하여 원하는 로직을 작성하면 GET 요청을 정상적으로 응답한다.
@WebServlet("/request")
public class ServiceMethodTestServlet extends HttpServlet {
@Override
public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
String httpMethod = request.getMethod();
if("GET".equals(httpMethod)) {
doGet(request, response);
} else if("POST".equals(httpMethod)) {
doPost(request, response);
}
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("GET 요청");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("POST 요청");
}
}
마찬가지로 doPost 메소드를 오버라이딩 하여 post 요청에 대한 응답을 확인 할 수 있다.
728x90
반응형
'Backend > Servlet & JSP' 카테고리의 다른 글
[Servlet & JSP] 서블릿의 역할 (0) | 2023.05.21 |
---|---|
[Servlet & JSP] Servlet parameter 사용 방법 (0) | 2023.05.20 |
[Servlet & JSP] Servlet 라이프 사이클 (0) | 2023.05.18 |
[Servlet & JSP] Servlet 생성 및 동적 페이지 요청 (0) | 2023.05.17 |
[Servlet & JSP] 개발 환경 구축 (0) | 2023.05.16 |
댓글