setAttribute、getAttribute、getParameter
一、setAttribute、getAttribute、getParameter
getAttributeは、リクエストスコープからset属性を取得することを意味します。getAttributeを介して取得する前に、まずsetAttributeで属性を設定する必要があります。setとgetは、オブジェクトオブジェクトタイプ
です。URLの書き換え(つまり、xxx?id = 1のID)パラメータなどを渡すため、これにはパラメータを設定するメソッドがなく(setParameterなし)、返されるパラメータはObjectではなく、String型です。
例:サーブレットは、getParameterを介してリクエストページからパラメータを取得します
リクエストページ:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>查询点击页面</title>
</head>
<body>
<form action="/userList">
<p><input type="text" value="queryAll" name="type"></p>
<p><input type="submit" value="点我查询所有用户"></p>
</form>
</body>
</html>
サーブレットクラス:
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
**String type = req.getParameter("type");**
if ("queryAll".equals(type)){
queryAll(req,resp);
}
**例:ページにジャンプして、getAttributeを介して要求された属性を取得します
而该属性必须是要在servlet中通过setAttribute设置过的**
サーブレットクラス設定属性:
private void queryAll(HttpServletRequest req、HttpServletResponse resp){ ArrayList users = service.queryAll(); HttpSessionセッション= req.getSession(); session.setAttribute(“ users”、users); { resp.sendRedirect( "/login/userList.jsp");を試してください 。} catch(IOException e){ e.printStackTrace(); }
属性を受け取るページ:
<%
Object users = session.getAttribute("users");
if(null!=users&&users instanceof ArrayList){
ArrayList<User> userList=(ArrayList< User>)users;
for (User user : userList) {
%>
<tr>
<td><%=user.getUser_name()%></td>
<td><%=user.getUser_name()%></td>
<td><%=user.getPassword()%></td>
</tr>
<%
}
}
%>
HttpServletRequestクラスには、getAttribute()メソッドとgetParameter()メソッドの両方があります。2つのメソッドには次の違いがあります。
(1)HttpServletRequestクラスにはsetAttribute()メソッドがありますが、setParameter()メソッドはありません
(2)2つのWebコンポーネント間にリンク関係がある場合、リンクされたコンポーネントはgetParameter()メソッドを介して要求パラメーターを取得します。たとえば、welcome.jspとauthenticate.jspの間にリンク関係があると仮定し、welcomeします。 jspには次のコードがあります。
または:
ユーザー名を入力してください:request.getParameter( "username")メソッドを使用して、authenticate.jspでリクエストパラメーターのユーザー名を取得します。
<%String username = request.getParameter(“ username”); %>
(3)2つのWebコンポーネント間に転送関係がある場合、転送ターゲットコンポーネントは、getAttribute()メソッドを介して要求範囲のデータを転送ソースコンポーネントと共有します。authenticate.jspとhello.jspの間に転送関係があると想定します。authenticate.jspは、現在のユーザー名をhello.jspに渡すことを望んでいます。このデータを渡す方法は?まず、authenticate.jspのsetAttribute()メソッドを呼び出します。
<%
String username = request.getParameter(“ username”);
request.setAttribute(“ username”、username);
%>
getAttributeは戻りオブジェクトであり、getParameterは文字列を返します
次に、SessionのgetSession()メソッドの概要の使用
getSession()
HttpServletRequest.getSession(ture)とHttpServletRequest.getSession()の意味は同じです。
HttpServletRequest.getSession(false)は、次と同等です。現在のセッションが存在しない場合はnull。
セッションは、ネットワークアプリケーションではセッションと呼ばれます。
具体的には、ウェブサイトでのセッションとは、ユーザーが特定のウェブサイトを閲覧したときにウェブサイトにアクセスしてからブラウザを閉じるまでの期間を指します。これは、ユーザーがウェブサイトを閲覧するのに費やす時間であり、概要からわかるように、セッションは実際には特定の時間の概念。
セッションの概念には、特定のクライアント、特定のサーバー、および中断のない操作時間を含める必要があることに注意してください。ユーザーAとサーバーCが接続を確立するセッションは、ユーザーBとサーバーCが接続を確立するセッションとは異なる2つのセッションです。
セッションの動作原理:
(1)セッションが最初に開始されると、一意の識別子がローカルCookieに格納されます。
(2)最初に、session_start()関数を使用して、格納されたセッション変数をセッションウェアハウスからロードします。
HttpRequestオブジェクトには、次の2つの形式のgetSessionメソッド呼び出しがあります。
getSession()
getSession(boolen isNew)
このようにして、前者は現在の時刻にセッションがあるかどうかを検出し、存在しない場合は作成し、存在する場合は現在のセッションを返します。
したがって、getSession()はgetSession(true)と同等です。
パラメータがtrueの場合、セッションがある場合はセッションを返し、そうでない場合は新しいセッションを作成します。
パラメータがfalseの場合、セッションがある場合はセッションを返し、そうでない場合はNULLを返します。