728x90
728x90
서블릿의 역할
요청 받기
Http의 GET/POST 요청에 따른 header와 body에 대한 정보와 parameter로 전달 받은 데이터를 꺼내올 수 있다.
@WebServlet("/headers")
public class RequestHeaderPrintServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Enumeration<String> headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()) {
System.out.println(headerNames.nextElement());
}
System.out.println(request.getHeader("accept"));
}
}
요청 받은 헤더의 key값을 getHeaderNames를 통해서 Enumeration 타입으로 확인 할 수 있다.
또한 request 객체의 getHeader 메소드로 특정 key값의 헤더 value를 확인 할 수 있다.
헤더의 종류는 4가지로 분류 할 수 있다.
- General Header : 요청 및 응답 모두에게 적용되며 body에 전송되는 것과는 관련이 없는 헤더
- Request Header : fetch 리소스나 클라이언트에 대한 상세 정보를 포함하는 헤더
- Response Header : 위치나 서버 자체의 응답과 관련된 정보를 포함하는 헤더
- Entity Header : 컨텐츠 길이나 MIME 타입과 같은 엔티티 body에 대한 정보를 포함하는 헤더
응답 하기
문자열로 동적인 페이지를 만들어서 스트림을 통해 응답한다.
@WebServlet("/response")
public class ResponseTestServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
StringBuilder responseBuilder = new StringBuilder();
responseBuilder.append("<!doctype html>\n")
.append("<html>\n")
.append("<head>\n")
.append("</head>\n")
.append("<body>\n")
.append("<h1>서블릿 response</h1>")
.append("</body>\n")
.append("</html>\n");
//response.setContentType("text/html");
//response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
out.print(responseBuilder);
out.flush();
out.close();
}
}
StringBuilder를 통해서 HTML문서를 String으로 만들고 response 객체의 getWriter를 통해 스트림 형태로 내보낸다.
이때 setContentType으로 응답하려는 데이터 타입을 명시할 수 있다.
charset을 명시하지 않는다면 기본적으로 ISO-8859-1로 응답하기 때문에 한글이 깨지게 되므로 setCharacterEncoding으로 인코딩 타입을 명시한다.
setContentType을 통해서 하나의 문자열로 응답 데이터 타입과 인코딩 타입을 한 번에 지정할 수 있다.
@WebServlet("/status")
public class StatusCodeTestServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.sendError(404,"페이지를 찾을 수 없습니다.");
}
}
또한 response 헤더에 관련된 설정이 가능하고 응답 상태코드를 통해 응답을 내보낼 수 있다.
비즈니스 로직 처리
DB접속과 CRUD에 대한 로직 처리를 담당하게 되며 서블릿은 MVC에서 controller를 담당하고 있기때문에 서비스를 호출하는 방식으로 해결한다.
728x90
반응형
'Backend > Servlet & JSP' 카테고리의 다른 글
[Servlet & JSP] 서블릿 forward와 redirect (0) | 2023.05.23 |
---|---|
[Servlet & JSP] 에러 처리 (0) | 2023.05.22 |
[Servlet & JSP] Servlet parameter 사용 방법 (0) | 2023.05.20 |
[Servlet & JSP] Servlet doGet과 doPost (0) | 2023.05.19 |
[Servlet & JSP] Servlet 라이프 사이클 (0) | 2023.05.18 |
댓글