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();
}
}
}