서블릿은 스프링이 필요없지만, 환경설정이 잘 되 있어 스프링 사용
spring boot starter 에서 생성
다운 후, build.gradle 선택해서 열기
@ServeltComponentScan
을 통하여 스프링에서 서블릿 자동 등록
모든 서블렛은
javax.servlet.http.HttpServlet
를 상속받음
@Webservlet
으로 url mapping
요칭이 오면, 오버라이딩된service
메소드 실행
/main/webapp
경로에 있는 index.html
서벌릿은 개발자 대신 Http 요청메세지를 파싱 =>
HttpServletRequest
객체로 제공
content-type:application/x-www-form-urlencoded
전체 param 조회
request.getParameterNames().asIterator()
.forEachRemaining(paramName -> System.out.println(paramName + "=" + request.getParameter(paramName)))
단일 param 조회
request.getParameter([값])
복수 param 조회
request.getParameterValues([값])
//enumeration 반환(리스트)
request.getParameter()
는 GET,POST 둘다 지원ServletInputStream inputStream = request.getInputStream(); //바이트로 꺼내기
String messageBody = StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8); //인코딩
ObjectMapper
를 통해 객체로 변경Http응답 메세지 생성
응답코드, header, body
편의기능(Content-type, cookie, Rediret)
헤더 세팅 예제
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//상태코드
response.setStatus(HttpServletResponse.SC_OK);
//헤더
response.setHeader("Content-Type","text/plain;charset=utf-8");
response.setHeader("Cache-Control", "no-cache, no-store, must- revalidate");
response.setHeader("pragma","no-cache");
response.setHeader("my-header","hello"); //나만의 헤더
response.getWriter().println("Ok");
}
이외에도 편의기능 세팅 가능
단순텍스트
HTML
MessageBody Json
response.setContentType("application/json");
ObjectMapper
를 통하여 객체를 json으로