为什么在访问过程中Session被销毁

yj7758423 2015-09-27 09:11:03
是这样的,在用户登录时,我在servlet中将表单封装成User对象并保存在session中
HttpSession session = request.getSession();
session.setAttribute("form", form);

但是在后面的程序中,我想要再次获取到form,打印却是null,搞得我好郁闷
我很怀疑是session被钝化了,因为我的User类没有实现Serializable接口(后来实现了也没什么卵用)
然后我又去找了找配置文件,也没有设置下面的配置
<Context>
<Manager className="org.apache.catalina.session.PersistentManager" maxIdleSwap="1">
<Store className="org.apache.catalina.session.FileStore" directory="mysession"/>
</Manager>
</Context>

感觉自己的程序流程没什么错啊,无非就是session添加了一个东西,但就是取出来的时候是null了
...全文
196 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
咖啡厅 2015-09-29
  • 打赏
  • 举报
回复
和数据库有关系吗?
a327369238 2015-09-28
  • 打赏
  • 举报
回复
引用 2 楼 yj7758423 的回复:
[quote=引用 1 楼 a327369238 的回复:] 首先form(User对象)在添加之前不是null? 你想在登陆后转向的页面获得form对象?

User form=new User();
		String username=request.getParameter("username");
		form.setUsername(username);
		String password=request.getParameter("password");
		form.setPassword(password);
		HttpSession session=request.getSession();
		session.setAttribute("form", form);
		response.sendRedirect("pages/testSuccess.jsp");
获得结果页面:

User form=(User)session.getAttribute("form");
out.print("欢迎您:"+form.getUsername());
form在添加之前不是null 因为每个用户登录之后我都会把form存到session中,也就是在一次会话中,一个用户对应一个form,这个用户以后的一系列操作, 我都要根据这个form对象的uid属性去操作数据库,但是后面从session中取出的时候却是null,我的代码是:

	User owner = (User) request.getSession().getAttribute("form");
	System.out.println(owner);//输出null了
[/quote] 同楼上所说,cookie没禁用吧 还有,你这是还想在servlet中用?登陆的servlet到另一个servlet?你把你的流程说一下
咖啡厅 2015-09-28
  • 打赏
  • 举报
回复
检查你的浏览器设置。是否禁用了cookies。sessionId要保存在其中。 如果你禁用了。那么每次请求都是不同的session。自然取不到。
yj7758423 2015-09-28
  • 打赏
  • 举报
回复
引用 5 楼 yj7758423 的回复:
[quote=引用 4 楼 a327369238 的回复:] [quote=引用 2 楼 yj7758423 的回复:] [quote=引用 1 楼 a327369238 的回复:] 首先form(User对象)在添加之前不是null? 你想在登陆后转向的页面获得form对象?

User form=new User();
		String username=request.getParameter("username");
		form.setUsername(username);
		String password=request.getParameter("password");
		form.setPassword(password);
		HttpSession session=request.getSession();
		session.setAttribute("form", form);
		response.sendRedirect("pages/testSuccess.jsp");
获得结果页面:

User form=(User)session.getAttribute("form");
out.print("欢迎您:"+form.getUsername());
form在添加之前不是null 因为每个用户登录之后我都会把form存到session中,也就是在一次会话中,一个用户对应一个form,这个用户以后的一系列操作, 我都要根据这个form对象的uid属性去操作数据库,但是后面从session中取出的时候却是null,我的代码是:

	User owner = (User) request.getSession().getAttribute("form");
	System.out.println(owner);//输出null了
[/quote] 同楼上所说,cookie没禁用吧 还有,你这是还想在servlet中用?登陆的servlet到另一个servlet?你把你的流程说一下[/quote] 检查了下,我没有禁用cookie 流程大体是这样的:用户登录请求UserServlet,将提交的表单封装成User对象(form),我将它保存在session中,保存是没有问题的,因为我还在jsp里做了回显,当用户要购买一个商品时,请求的是OrderServlet,我想从session获取到form,生产指定用户的订单,也就是获取form的时候出的错,因为数据库里用户的id属性为空了,然后我打印了下从session中获取的form,显示为null[/quote]已经知道哪里错了,是自己乱改数据库弄的...自己设计了个登录密码不低于8位,后来测试又觉得麻烦,改成了个123.....
引用 4 楼 a327369238 的回复:
[quote=引用 2 楼 yj7758423 的回复:] [quote=引用 1 楼 a327369238 的回复:] 首先form(User对象)在添加之前不是null? 你想在登陆后转向的页面获得form对象?

User form=new User();
		String username=request.getParameter("username");
		form.setUsername(username);
		String password=request.getParameter("password");
		form.setPassword(password);
		HttpSession session=request.getSession();
		session.setAttribute("form", form);
		response.sendRedirect("pages/testSuccess.jsp");
获得结果页面:

User form=(User)session.getAttribute("form");
out.print("欢迎您:"+form.getUsername());
form在添加之前不是null 因为每个用户登录之后我都会把form存到session中,也就是在一次会话中,一个用户对应一个form,这个用户以后的一系列操作, 我都要根据这个form对象的uid属性去操作数据库,但是后面从session中取出的时候却是null,我的代码是:

	User owner = (User) request.getSession().getAttribute("form");
	System.out.println(owner);//输出null了
[/quote] 同楼上所说,cookie没禁用吧 还有,你这是还想在servlet中用?登陆的servlet到另一个servlet?你把你的流程说一下[/quote]
引用 4 楼 a327369238 的回复:
[quote=引用 2 楼 yj7758423 的回复:] [quote=引用 1 楼 a327369238 的回复:] 首先form(User对象)在添加之前不是null? 你想在登陆后转向的页面获得form对象?

User form=new User();
		String username=request.getParameter("username");
		form.setUsername(username);
		String password=request.getParameter("password");
		form.setPassword(password);
		HttpSession session=request.getSession();
		session.setAttribute("form", form);
		response.sendRedirect("pages/testSuccess.jsp");
获得结果页面:

User form=(User)session.getAttribute("form");
out.print("欢迎您:"+form.getUsername());
form在添加之前不是null 因为每个用户登录之后我都会把form存到session中,也就是在一次会话中,一个用户对应一个form,这个用户以后的一系列操作, 我都要根据这个form对象的uid属性去操作数据库,但是后面从session中取出的时候却是null,我的代码是:

	User owner = (User) request.getSession().getAttribute("form");
	System.out.println(owner);//输出null了
[/quote] 同楼上所说,cookie没禁用吧 还有,你这是还想在servlet中用?登陆的servlet到另一个servlet?你把你的流程说一下[/quote]
引用 4 楼 a327369238 的回复:
[quote=引用 2 楼 yj7758423 的回复:] [quote=引用 1 楼 a327369238 的回复:] 首先form(User对象)在添加之前不是null? 你想在登陆后转向的页面获得form对象?

User form=new User();
		String username=request.getParameter("username");
		form.setUsername(username);
		String password=request.getParameter("password");
		form.setPassword(password);
		HttpSession session=request.getSession();
		session.setAttribute("form", form);
		response.sendRedirect("pages/testSuccess.jsp");
获得结果页面:

User form=(User)session.getAttribute("form");
out.print("欢迎您:"+form.getUsername());
form在添加之前不是null 因为每个用户登录之后我都会把form存到session中,也就是在一次会话中,一个用户对应一个form,这个用户以后的一系列操作, 我都要根据这个form对象的uid属性去操作数据库,但是后面从session中取出的时候却是null,我的代码是:

	User owner = (User) request.getSession().getAttribute("form");
	System.out.println(owner);//输出null了
[/quote] 同楼上所说,cookie没禁用吧 还有,你这是还想在servlet中用?登陆的servlet到另一个servlet?你把你的流程说一下[/quote] 已经知道哪里错了,当初设计了个注册密码不低于8位,后来测试又嫌麻烦在数据库里改成123,然后就悲剧了
yj7758423 2015-09-28
  • 打赏
  • 举报
回复
引用 4 楼 a327369238 的回复:
[quote=引用 2 楼 yj7758423 的回复:] [quote=引用 1 楼 a327369238 的回复:] 首先form(User对象)在添加之前不是null? 你想在登陆后转向的页面获得form对象?

User form=new User();
		String username=request.getParameter("username");
		form.setUsername(username);
		String password=request.getParameter("password");
		form.setPassword(password);
		HttpSession session=request.getSession();
		session.setAttribute("form", form);
		response.sendRedirect("pages/testSuccess.jsp");
获得结果页面:

User form=(User)session.getAttribute("form");
out.print("欢迎您:"+form.getUsername());
form在添加之前不是null 因为每个用户登录之后我都会把form存到session中,也就是在一次会话中,一个用户对应一个form,这个用户以后的一系列操作, 我都要根据这个form对象的uid属性去操作数据库,但是后面从session中取出的时候却是null,我的代码是:

	User owner = (User) request.getSession().getAttribute("form");
	System.out.println(owner);//输出null了
[/quote] 同楼上所说,cookie没禁用吧 还有,你这是还想在servlet中用?登陆的servlet到另一个servlet?你把你的流程说一下[/quote] 检查了下,我没有禁用cookie 流程大体是这样的:用户登录请求UserServlet,将提交的表单封装成User对象(form),我将它保存在session中,保存是没有问题的,因为我还在jsp里做了回显,当用户要购买一个商品时,请求的是OrderServlet,我想从session获取到form,生产指定用户的订单,也就是获取form的时候出的错,因为数据库里用户的id属性为空了,然后我打印了下从session中获取的form,显示为null
yj7758423 2015-09-27
  • 打赏
  • 举报
回复
引用 1 楼 a327369238 的回复:
首先form(User对象)在添加之前不是null? 你想在登陆后转向的页面获得form对象?

User form=new User();
		String username=request.getParameter("username");
		form.setUsername(username);
		String password=request.getParameter("password");
		form.setPassword(password);
		HttpSession session=request.getSession();
		session.setAttribute("form", form);
		response.sendRedirect("pages/testSuccess.jsp");
获得结果页面:

User form=(User)session.getAttribute("form");
out.print("欢迎您:"+form.getUsername());
form在添加之前不是null 因为每个用户登录之后我都会把form存到session中,也就是在一次会话中,一个用户对应一个form,这个用户以后的一系列操作, 我都要根据这个form对象的uid属性去操作数据库,但是后面从session中取出的时候却是null,我的代码是:

	User owner = (User) request.getSession().getAttribute("form");
	System.out.println(owner);//输出null了
a327369238 2015-09-27
  • 打赏
  • 举报
回复
首先form(User对象)在添加之前不是null? 你想在登陆后转向的页面获得form对象?

User form=new User();
		String username=request.getParameter("username");
		form.setUsername(username);
		String password=request.getParameter("password");
		form.setPassword(password);
		HttpSession session=request.getSession();
		session.setAttribute("form", form);
		response.sendRedirect("pages/testSuccess.jsp");
获得结果页面:

User form=(User)session.getAttribute("form");
out.print("欢迎您:"+form.getUsername());

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧