2.1 HttpServletRequest クラス
サーブレットの作業のほとんどは、リクエストから受け取った情報に基づいて実行されます。オブジェクトはそれを担当しHttpServletRequest
、コンテナはそれをサーブレットに(メソッドservice
などに)渡しますdoGet()
。doPost()
このオブジェクトにはリクエスト データが保存されているだけなので、かなりの数のメソッドがあり、それを通じてコンテナと対話できます。
メソッドは 2 つの大きなグループに分類できます。
- ユーザー認証に関するメソッド
- リクエストデータを操作するメソッド
ユーザーの認証方法を表の形式で示しますが、分析はしません。実際、これらがユーザーの認証に使用されることはほとんどありません。すべての一般的なフレームワークは、独自のはるかに高度な認証アプローチを使用しています。
それらをリストする必要がありますが、繰り返しになりますが、誰もそれらを使用しているのを見たことがありません。
方法 | 説明 | |
---|---|---|
1 | authenticate(HttpServletResponse) |
レスポンス認証を行う |
2 | changeSessionId() |
セッションIDを強制的に変更する |
3 | getAuthType() |
使用される認証のタイプを返します: ASIC_AUTH、FORM_AUTH、CLIENT_CERT_AUTH、DIGEST_AUTH |
4 | getRemoteUser() |
ユーザーのログインを返します |
5 | getRequestedSessionId() |
クライアントのセッションIDを返します。 |
6 | getSession() |
HttpSession オブジェクトを返します |
7 | getUserPrincipal() |
java.security.Principal オブジェクトを返します。 |
8 | login(username, password) |
ユーザーログインを実行します |
9 | logout() |
ユーザーセッションをログアウトします |
2.2 リクエストデータ
2 番目のグループのメソッドはさらに興味深いものです。リクエストにはどのようなデータが含まれますか?
- httpメソッド
- URI
- オプション
- タイトル
これらを操作するためにどのようなメソッドが利用できるかを見てみましょう。
方法 | 説明 | |
---|---|---|
1 | getMethod() |
戻り値 HTTP メソッド: GET、POST、DELETE など |
2 | getRequestURI() |
リクエスト URI を返します: http://codegym.cc/my/data |
3 | 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” и “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();
}
}
}
GO TO FULL VERSION