파게로그

method별로 특화된 서비스 함수 본문

콤퓨타 왕기초/JSP

method별로 특화된 서비스 함수

파게 2020. 12. 18. 05:39

다음과 같은 방법을 통해 GET이나 POST에 특화된 함수를 구현할 수도 있다.

@WebServlet("/hello")
public class Hello extends HttpServlet {
	@Override
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		PrintWriter out = res.getWriter();
        out.write("<p>Welcome!</p>");
		out.printf("<p>My name is %s.</p>", name);
	}
}

 

service()가 오버라이드되어 있지 않으면 super.service(request, response)가 실행된다. 이 함수는 사용자의 요청 method를 확인한 후 doGet()이나 doPost()를 실행한다. 따라서 doGet() 또는 doPost()가 오버라이드되어 있지 않으면 오류가 발생한다.

즉 service()를 오버라이드 한 후 GET, POST를 모두 처리하든지, 또는 doGet()과 doPost() 중 필요한 것만 오버라이드해서 요청을 처리할 수 있다.

 

 

만약 service() 함수를 오버라이드하고, 그 내에 super.service()가 있으면?

doGet() 함수가 구현되어 있지 않아서 오류가 발생한다.

 

 

service() 구현 없이, doGet() 또는 doPost()만 구현할 수 있다.

cf. doDelete(), doPut() 등은 잘 사용되지 않는다고 한다. -> 이게 RESTful하지 않은 설계들인 건가?

 

 

GET, POST 중 하나만 처리할 때에는 doGet(), doPost() 중 하나만 구현하고,

GET, POST 둘 다 처리할 때에는 service()를 구현하는 것이 바람직하다.

 

'콤퓨타 왕기초 > JSP' 카테고리의 다른 글

[JDBC] 기본 실습  (0) 2021.03.13
[JDBC] JDBC 개요  (0) 2021.03.13
동적인 페이지 출력을 위한 원시적인 방법  (0) 2020.12.18
redirect  (0) 2020.12.17
상태유지를 위한 Application, Session, Cookie  (0) 2020.12.17
Comments