Servlet1

su dong·2023년 6월 20일
0

@ServletComponentScan // 서블릿 자동등록해줌

@WebServlet(name, urlPatterns)

@WebServlet(name="helloServlet", urlPatterns = "/hello")
public class HelloServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("HelloServlet.service");
        System.out.println("request = " + request);
        System.out.println("response = " + response);

        String username = request.getParameter("username");
        System.out.println("username = " + username);

        response.setContentType("text/plain");
        response.setCharacterEncoding("utf-8");
        response.getWriter().write("hello " + username);
    }
}

단축키 cmd+O : protected생성

request 받기

쿼리 파라미터
http://localhost:8080/hello?username=kim 일 때

String username = request.getParameter("username");
System.out.println("username = " + username); // username = kim

http 요청 메시지는 원래는

POST /save HTTP/1.1 //스타트라인
Host: localhost:8080 // 헤더
Content-Type: application/x-www-form-urlencoded
username=kim&age=20 // 바디
...

START LINE

  • HTTP 메소드
  • URL
  • 쿼리 스트링
  • 스키마, 프로토콜

헤더

  • 헤더 조회

바디

  • form 파라미터 형식 조회
  • message body 데이터 직접 조회

이런 식으로 담겨져 옴.

이것을 직접 일일히 파싱하기란 귀찮음.
이를 서블릿은 파싱해서 HttpServletRequest 객체에 담아 제공해줌.
++ 임시저장소 기능을 제공함.
저장: request.setAttribute(name, value)
조회: request.getAttribute(name)

response보내기

//header정보에 들어간다.
response.setContentType("text/plain");
response.setCharacterEncoding("utf-8");
//화면에 보여진다.
response.getWriter().write("hello " + username);

주고 받는 http통신 모두 보기
logging.level.org.apache.coyote.http11=debug

main하위에 webapp디렉토리 생성 후 index.html, basic.html생성

profile
사람들을 돕는 문제 해결사, 개발자 sudong입니다. 반갑습니다. tkddlsqkr21@gmail.com

0개의 댓글