2.1 HttpServletRequest 클래스

서블릿이 수행해야 하는 대부분의 작업은 요청에서 받은 정보를 기반으로 합니다. 개체는 HttpServletRequest컨테이너가 서블릿(메소드 또는 메서드 등)에 전달할 책임 service이 있습니다.doGet()doPost()

이 개체에는 단순히 요청 데이터를 저장하고 이를 통해 컨테이너와 상호 작용할 수 있기 때문에 꽤 많은 메서드가 있습니다.

방법은 2개의 큰 그룹으로 나눌 수 있습니다.

  • 사용자 권한 부여와 관련된 방법
  • 요청 데이터 작업 방법

사용자 인증 방법을 표 형식으로 제공하지만 분석하지는 않겠습니다. 사실 그들은 사용자를 인증하는 데 거의 사용되지 않습니다. 널리 사용되는 모든 프레임워크는 권한 부여에 대한 고유한 훨씬 더 고급 접근 방식을 사용합니다.

나는 그것들을 나열해야 하지만 다시 말하지만 아무도 그것들을 사용하는 것을 보지 못했습니다.

방법 설명
1 authenticate(HttpServletResponse) 응답 인증 수행
2 changeSessionId() 세션 ID 강제 변경
getAuthType() 사용되는 인증 유형을 반환합니다: ASIC_AUTH, FORM_AUTH, CLIENT_CERT_AUTH, DIGEST_AUTH
4 getRemoteUser() 사용자 로그인 반환
5 getRequestedSessionId() 클라이언트의 SessionID를 반환합니다.
6 getSession() HttpSession 객체를 반환합니다.
7 getUserPrincipal() java.security.Principal 객체를 반환합니다.
8 login(username, password) 사용자 로그인 수행
9 logout() 사용자 세션에서 로그아웃합니다.

2.2 요청 데이터

두 번째 방법 그룹은 훨씬 더 흥미 롭습니다. 요청에 어떤 종류의 데이터가 있습니까?

  • HTTP 방식
  • URI
  • 옵션
  • 제목

작업에 사용할 수 있는 방법을 살펴보겠습니다.

방법 설명
1 getMethod() 반환 HTTP 메서드: GET, POST, DELETE, ...
2 getRequestURI() 요청 URI 반환: http://codegym.cc/my/data
getRequestURL() 요청 URL 반환: http://codegym.cc/my/data
4 getQueryString() 쿼리, 즉 ? 이후의 모든 항목을 반환합니다.
5 getParameterMap() 쿼리 매개변수 목록을 반환합니다.
6 getParameter(String name) 이름으로 매개변수의 값을 반환합니다.
7 getContentType() MimeType 요청 본문을 반환합니다.
8 getReader() 요청 본문을 텍스트로 읽는 독자
9 getInputStream() 요청 본문을 byte[]로 읽는 InputStream
10 getSession() HttpSession 객체를 반환합니다.
열하나 getCookies() Cookie[] 객체의 배열을 반환합니다.
12 getHeaderNames() 제목 목록, 이름만 반환
13 getHeader(String name) 헤더 값을 이름으로 반환
14 getServletPath() 서블릿을 참조하는 URL 부분을 반환합니다.
15 getContextPath() 요청 내용을 지정하는 URI 부분을 반환합니다.

그리고 그것이 모든 방법이 아닙니다 ...

HTTP 프로토콜을 연구하고 HttpClient로 작업하는 방법을 배운 후에는 여기에서 모든 것이 다소 익숙하지 않습니까?

텍스트와 색상을 전달할 수 있는 서블릿을 작성하면 지정된 색상으로 작성된 해당 텍스트가 있는 HTML 페이지가 반환됩니다. 아이디어가 마음에 드십니까?

서블릿 작성부터 시작하겠습니다.

public class ColorTextServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
          //write your code here
    }
}

이제 사용자가 URI에서 전달한 텍스트와 색상을 가져와야 합니다.

public class ColorTextServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {

        // Getting the parameter “text” and “color” from request
        String text= request.getParameter("text");
        String color = request.getParameter("color");

    }
}

마지막으로 텍스트를 HTML로 출력해야 합니다. 다음 강의에서 이에 대해 다루겠지만 여기서 약간의 힌트를 드리겠습니다.

public class ColorTextServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {

        // Get the "text" and "color" parameters from the request
        String text = request.getParameter("text");
        String color = request.getParameter("color");


        // Print the HTML as a response to the browser
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out =  response.getWriter();
        try {
            out.println("<html>");
            out.println("<head> <title> ColorTextServlet </title> </head>");
            out.println("<body>");
            out.println("<h1 style="color:"+color+">"+text+"</h1>");
            out.println("</body>");
            out.println("</html>");
        } finally {
            out.close();
        }
    }
}