0

私はJavaサーブレットの初心者であり、事実上学習段階にあります.JSPページフィールドの値を別のページに送信する際に困難に直面しています.別のページは、セッションのメンテナンスで問題に直面しています.セッション全体で値を取得するのを手伝ってください.セッションの使用法をよく理解するために、単純な建設的な例を使用していくつかのアイデアを提供することによって..

前もって感謝します :)

4

1 に答える 1

0

これは、セッション追跡メカニズムを示すJSPです。ブラウザでCookieを有効にしている場合と無効にしている場合のページ上のリンクをクリックしてみてください。Cookieを使用するか、URLをエンコードすることにより、セッションを維持できるはずです。セッションCookieの無効化は、Chromeで簡単に実行できます。

<%
  String servletPath = request.getServletPath();
  String contextPath = request.getContextPath();
  String path = contextPath + servletPath;
  String encoded = response.encodeURL(path);
  Integer count = (Integer)session.getAttribute("count");
  if(count==null)count = new Integer(0);
  session.setAttribute("count",new Integer(count.intValue() + 1));
%>
sessionId=<%=session.getId()%><br/>
isNew=<%=session.isNew()%><br/>
fromURL=<%=request.isRequestedSessionIdFromURL()%><br/>
fromCookie=<%=request.isRequestedSessionIdFromCookie()%><br/>
path=<%=path%><br/>
encoded=<%=encoded%><br/>
<a href="<%=path%>">Not encoded request</a><br/>
<a href="<%=encoded%>">Encoded request</a><br/>
count=<%=count%> 

上記のページは、どのJSPコンテナでも機能します。新しいもの(Apache Tomcat / 7.0.28でテスト済み)を使用している場合は、次のページを使用できます。

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<c:set var="count" value="${count + 1}" scope="session" />
<c:set var="relativePath" value="${fn:substringAfter(pageContext.request.servletPath, '/')}" />
The session id is ${pageContext.session.id}<br/>
Is the session new ? ${pageContext.session['new']}<br/>
Did the client send the session id in the URL ?   ${pageContext.request.requestedSessionIdFromURL}<br/>
Did the client send the session id in a cookie ?   ${pageContext.request.requestedSessionIdFromCookie}<br/>
<a href="${relativePath}">Not encoded request</a><br/>
<a href="${pageContext.response.encodeURL(relativePath)}">Encoded request</a><br/>
Count is ${count}
于 2012-08-31T17:09:03.160 に答える