1. ホーム
  2. Web プログラミング
  3. JSP プログラミング

JSP組み込みオブジェクト要求共通使用法詳細

2022-01-16 01:10:38

リクエストオブジェクトは、HttpServletRequestWrapperクラスのインスタンスです。以下のような継承体系を持っています。

_要求オブジェクトの継承階層図.png

ServletRequestインターフェースのサブインターフェースはHttpServletRequestのみであり、HttpServletRequestインターフェースの実装クラスはHttpServletRequestWrapperのみで、リクエストオブジェクトのみの1行継承からわかります。 クラスライブラリはhttpプロトコルのみをサポートするものです。Servlet/JSPで実装クラスではなくインターフェイスを多用することは、インターフェイス指向プログラミングの最良の使い方です。

リクエスト組み込みオブジェクトはTomcatによって生成され、HTTPリクエストパラメータのカプセル化、プロパティ値の受け渡し、サーバーサイドジャンプの実行という、リクエストオブジェクトの3大機能を利用することが可能です。

リクエストオブジェクトの生成過程

Tomcatはhttpリクエストメッセージを送信すると,データを解析して直ちにリクエストオブジェクトを生成し,パラメータに値を代入して,対応するjsp/servletに渡します.リクエストが終了すると、リクエスト・オブジェクトは直ちに破棄されます。サーバーサイドはジャンプし、まだ同じリクエストなので、ページはリクエストオブジェクトを共有します。

 1. リクエストパラメータにアクセスする

<a href="login.jsp?name=Zhang San&sex=man&id=" rel="external nofollow" >Pass parameters</a>

login.jsp キーコード

<%= "name:"+new String(request.getParameter("name").getBytes("ISO-8859-1"),"utf-8") %>& lt;br>
<%= "sex:"+request.getParameter("sex") %>& lt;br>
<%= "id:"+request.getParameter("id") %><br>
<%= "pwd:"+request.getParameter("pwd") %><br>

説明 指定されたパラメータが存在しない場合、null を返します。パラメータ名が指定され、パラメータ値が指定されていない場合、空の文字列 "を返します。

すべてのリクエストは ISO-8859-1 で、ページでは utf-8 エンコーディング方式が使われているため、 中国語に遭遇した場合は、取得したデータを String オブジェクトとして再構築し、 String のコンストラクタで指定したエンコーディング形式を使用します。

2. スコープでのプロパティ管理

リクエスト転送を行う場合、転送先のページに何らかのデータを渡して処理を行う必要がありますが、その際、リクエストオブジェクトのsetAttributeメソッドを使用して、リクエストスコープの変数にデータを保存する必要があります。

 <%
   try {
     int money = 100;
     int number = 0;
     request.setAttribute("result", money / number);
   } catch (Exception e) {
     request.setAttribute("result", "I'm sorry, the page generated an error! ");
   }
 %>
 
 <jsp:forward page="deal.jsp" />

<%= request.getAttribute("result").toString() %>

getAttributeメソッドの戻り値はObjectなので、toStringメソッドを呼び出して文字列に変換する必要があります。

3. クッキーの取得

クッキーは、ウェブサーバー上で生成され、ブラウザに送信される小さなテキスト情報です。クッキーを使用すると、ユーザーの識別、ユーザー名とパスワードの記録、リピーターの追跡などが可能になります。これは、クライアントマシンのディレクトリにキーと値のペアとして保存されます。

 <%
   Cookie[] cookies = request.getCookies();
   String user = "";
   String date = "";
   if (cookies ! = null) {
     for (int i = 0; i < cookies.length; i++) {
       if (cookies[i].getName().equals("mrCookie")) {
         user = URLDecoder.decode(cookies[i].getValue().split("#")[0]);
         date = cookies[i].getValue().split("#")[1];
       }
     }
   }
   if ("".equals(user) && "".equals(date)) {
 %>
 Hello visitor, welcome to your first visit!
 <form action="deal.jsp" method="post">
 Please enter your name: <input name="user" type="text" value=""> <input
  type="submit" value="OK">
 </form>
 
 <% } else { %>
 
 welcome
 <b> <%=user%></b> Come again
 <br>
 
 <% }%>

deal.jsp。

 <%
       request.setCharacterEncoding("GB18030");
  String user = URLEncoder.encode(request.getParameter("user"), "utf-8");
  Cookie cookie = new Cookie("mrCookie", user + "#" + new Date().toLocaleString());
  cookie.setMaxAge(60 * 60 * 24 * 30);
  response.addCookie(cookie);
 %>
 
 <script type="text/javascript">
 window.location.href = "index.jsp"
 </script>


4. 顧客情報の取得

 お客様がメッセージを送信する方法: <%=request.getMethod() %>
 使用されたプロトコル: <%=request.getProtocol() %>
 クライアントアドレス: <%=request.getRequestURL() %>
 クライアントIPアドレス: <%=request.getRemoteAddr() %>
 サーバーポート番号: <%=request.getServerPort() %>
 サーバー名: <%=request.getServerName() %>
 クライアントホスト名: <%=request.getRemoteHost() %>
 クライアントから要求されたスクリプトファイルのファイルパス: <%=request.getServletPath() %>
 Httpプロトコルで定義されたファイルヘッダ情報Hostの値: <%=request.getHeader("host") %>.ファイルヘッダ情報Hostの値は、Httpプロトコルで定義されたファイルヘッダ情報Hostの値である。
 Httpプロトコル定義のヘッダー情報User-Agentの値: <%=request.getHeader("user-agent") %>
 Httpプロトコル定義ヘッダー情報accept-languageの値: <%=request.getHeader("accept-language") %>
 リクエストファイルの絶対パス: <%=request.getRealPath("index.jsp") %>.リクエストファイルの絶対パス: <%=request.getRealPath("index.jsp") %>

5. 国際化情報の表示

ブラウザは、HTTPヘッダーのaccept-languageによって、使用するローカル言語をWebサーバーに示すことができます。以下に例を示します。

 <%
   Locale locale = request.getLocale();
   String str = "";
   if (locale.equals(Locale.US)) {
     str = "Hello,welcome to access our company's web!";
   }
   if (locale.equals(Locale.CHINA)) {
     str = "Hello, welcome to visit our company's web! ";
   }
 %>
 
 <%=str%>

以上、本記事の全内容をご紹介しましたが、皆様の学習のお役に立てれば幸いです。また、Script Houseをより一層応援していただければ幸いです。