프로젝트 생성#
서블릿은 스프링이 필요없지만, 환경설정이 잘 되 있어 스프링 사용
spring boot starter 에서 생성
Hello 서블릿#
@ServeltComponentScan을 통하여 스프링에서 서블릿 자동 등록
모든 서블렛은
javax.servlet.http.HttpServlet를 상속받음@Webservlet으로 url mapping 요칭이 오면, 오버라이딩된service메소드 실행
welcome page#
/main/webapp경로에 있는 index.html
HttpServletRequest#
서벌릿은 개발자 대신 Http 요청메세지를 파싱 =>
HttpServletRequest객체로 제공
Http요청 데이터#
- GET
- url에 데이터를 포함해서 전달 (검색,페이징 등)
- POST
content-type:application/x-www-form-urlencoded- 메시지 바디에 쿼리 파라미터 형식으로 전달
- Http message body
- body에 직접 데이터를 담아서 요청(json,
- POST,PUT,PATCH
GET#
- 전체 param 조회
request.getParameterNames().asIterator()
.forEachRemaining(paramName -> System.out.println(paramName + "=" + request.getParameter(paramName)))- 단일 param 조회
request.getParameter([값])- 복수 param 조회
request.getParameterValues([값])
//enumeration 반환(리스트)POST#
request.getParameter()는 GET,POST 둘다 지원- 폼만들기 귀찮을때 POSTMAN 어플 사용
API Message 방식#
- ttp message body에 데이터를 직접 담아서 요청
단순 텍스트#
ServletInputStream inputStream = request.getInputStream(); //바이트로 꺼내기
String messageBody = StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8); //인코딩JSON#
- json도 결국 문자열임
- 부트에선
ObjectMapper를 통해 객체로 변경
HttpServletResponse#
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
API Json#
response.setContentType("application/json");ObjectMapper를 통하여 객체를 json으로