서블릿

KJH·2023년 1월 4일
0

SpringMVC1

목록 보기
3/8

프로젝트 생성

서블릿은 스프링이 필요없지만, 환경설정이 잘 되 있어 스프링 사용
spring boot starter 에서 생성

다운 후, build.gradle 선택해서 열기

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으로


0개의 댓글