私の問題は次のとおりです。サーブレット(たとえばphpなど)を使用せずに、JSPページでセッションを使用したい
問題は:それをどのように行うか?そのセッションはjspのリクエストのように暗黙的であると読みましたが、実際にはその使用方法がわかりません。
メインページがあり、URLにいくつかの変数(index.jsp?id = 1など)を渡します。
ご協力ありがとうございました。
JSTL <c:set>
を使用<c:remove>
して、セッション属性を管理できます。
以下は効果的に行いますsession.setAttribute("foo", "bar")
:
<c:set var="foo" value="bar" scope="session" />
そして、以下は効果的に行いますsession.removeAttribute("foo")
:
<c:remove var="foo" scope="session" />
もちろん、属性にアクセスする通常のELの方法を使用できます。次のように出力されsession.getAttribute("foo")
ます。
${foo}
具体的な問題とは関係なく、サーブレットに対する嫌悪感に取り組む必要があります。これは良い習慣ではありません。JSTLは、ビジネスロジックを簡単にするすべてのものを提供しているわけではないため、レガシースクリプトレットにフォールバックする必要があります。それがただの無知であることを願っています。サーブレットのwikiページを注意深く読んで、簡単に作成して使用する方法を学びましょう。https ://stackoverflow.com/tags/servlets/infoまた、この回答はやや啓発的かもしれません。JSPファイルでJavaコードを回避する方法は?
2つのjspがあると仮定します
index.jsp = index.jspのパラメータを取得し、セッションに値を追加します(暗黙的なオブジェクト)
<%
String empId = request.getParameter("id");
session.setAttribute("empId", empId);
response.sendRedirect("homePage.jsp");
%>
現在homePage.jsp=キーempIdで以前に追加された値を取得するコードを記述します
<%
String employeId = (String)session.getAttribute("empId");
%>
これをjspコードで使用する必要があります
<%
HttpSession sess = request.getSession();
if (sess==null)
{
RequestDispatcher dispatcher = request.getRequestDispatcher("/login.jsp");
dispatcher.forward(request, response);
}
%>
セッションとその属性を取得できます
index.jsp?id=1の場合は次を使用できます
request.getParameter("id")