HttpServletRequest クラスには getAttribute() メソッドと getParameter() メソッドの両方があります。これら 2 つのメソッドには次のような違いがあります。
1. HttpServletRequest クラスには setAttribute() メソッドがありますが、setParameter() メソッドはありません。
2. 2 つの Web コンポーネント間にリンク関係がある場合、リンクされたコンポーネントは getParameter() メソッドを通じてリクエスト パラメータを取得します。
たとえば、welcome.jsp とauthenticate.jsp の間にリンク関係があると仮定すると、welcome.jsp には次のコードがあります。
次のようにコードをコピーします。
<a href="authenticate.jsp?username=qianyunlai.com">authenticate.jsp </a>
//または:
<form name="form1" method="post" action="authenticate.jsp">
ユーザー名を入力してください:<input type="text" name="username">
<input type="submit" name="submit" value="submit">
</form>
リクエスト パラメータのユーザー名を、authenticate.jsp の request.getParameter("username") メソッドを通じて取得します。
<% String ユーザー名=request.getParameter("ユーザー名");
3. 2 つの Web コンポーネント間に転送関係がある場合、転送先コンポーネントは getAttribute()メソッドによりリクエスト範囲内のデータを転送元コンポーネントと共有します。
authenticate.jsp と hello.jsp の間には転送関係があると想定されます。 authenticate.jsp は現在のユーザー名を hello.jsp に渡すことを望んでいます。このデータを渡すにはどうすればよいですか?まず、authenticate.jsp の setAttribute() メソッドを呼び出します。
次のようにコードをコピーします。
<%
文字列ユーザー名=request.getParameter("ユーザー名");
request.setAttribute("ユーザー名",ユーザー名);
%>
<jsp:forward page="hello.jsp" />
hello.jsp の getAttribute() メソッドを通じてユーザー名を取得します。
次のようにコードをコピーします。
<% String ユーザー名=(String)request.getAttribute("ユーザー名");
こんにちは: <%=ユーザー名 %>
4. request.getAttribute はオブジェクトを返し、request.getParameter は文字列を返します。