java-检测新的HttpSession
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-检测新的HttpSession,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3180字,纯文字阅读大概需要5分钟。
内容图文
![java-检测新的HttpSession](/upload/InfoBanner/zyjiaocheng/659/1c84b0893b02425eb0178703f6a85509.jpg)
我是J2EE的新手,并且深陷于会话管理中.根据规范,如果以前没有创建HttpSession的isNew()方法,则返回true
来自客户端的sessionID存储在服务器上.
我已经运行了以下代码,即使在第一次执行时,isNew()方法也不返回true.到目前为止,我已经尝试了以下操作:
>删除了我的浏览器的历史记录(所有内容.我正在使用Firefox).
>从Netbeans 7.3.1构建并运行我的Web应用程序.在那种情况下,会生成一个新的会话ID,但isNew()方法肯定不会返回true.
>重新启动PC(尽管这很愚蠢).
我的问题是,我应该怎么做才能在Servlet代码中执行if(session.isNew()){}块(包括浏览器的任何设置以及其他任何设置)?
我的代码有什么问题?
这是我的下面代码.
初始视图的代码:index.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>Welcome to color selection page</h1>
<form method="POST"
action="NewPattern">
Select beer characteristics<br>
Color:
<select name="color" size="1">
<option value="light">light</option>
<option value="amber">amber</option>
<option value="brown">brown</option>
</select>
<br>
<input type="SUBMIT">
</form>
</body>
</html>
Servlet的代码:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class NewServlet extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
HttpSession session = request.getSession();
try {
out.println("<!DOCTYPE html>");
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet NewServlet</title>");
out.println("</head>");
out.println("<body>");
if (session.isNew())
out.println("It is a new session. Session ID: " + request.getSession());
else
out.println("It is not a new session. Session ID: " + request.getSession());
out.println("<h1>Got your chosen color " + request.getParameter("color") + "</h1>");
out.println("</body>");
out.println("</html>");
}
finally {
out.close();
}
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
public String getServletInfo() {
return "Short description";
}
}
DD的代码::
<?xml ...>
<web-app ...>
<servlet>
<servlet-name>ServletNew</servlet-name>
<servlet-class>NewServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ServletNew</servlet-name>
<url-pattern>/NewPattern</url-pattern>
</servlet-mapping>
</web-app>
解决方法:
问题在于您首先访问index.jsp,然后访问servlet.
服务器很可能会在您访问的第一个资源上创建会话,因此该会话是index.jsp上的新会话.此后将访问servlet,因此会话不再是新会话.
您基本上可以通过清理会话cookie来测试代码,并通过手动输入URL来直接在浏览器中打开servlet.
我还建议安装Firefox插件“ Firebug”,该插件具有网络控制台,您可以在其中查看对服务器的每个请求,包括所有传输的数据. (另一个很棒的插件是“ Web Developer Toolbar”,它使清理会话cookie变得很容易.)
根据要实现的目标,您要么需要重新考虑页面流,要么考虑使用诸如Struts之类的Web框架.
内容总结
以上是互联网集市为您收集整理的java-检测新的HttpSession全部内容,希望文章能够帮你解决java-检测新的HttpSession所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。