急求:jsp页面怎样获取 session值

crystalcup 2009-11-23 09:47:20
我在登录后,用servlet存储登录信息,为什么在jsp页面中取不到呢?请各位大虾帮帮忙!
Servlet主要代码:
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
HttpSession session = request.getSession();

//获取参数名称
String stateName = request.getParameter("stateType");
String userName = request.getParameter("userName");
String userPass = request.getParameter("userPass");


if(userName == null || userName.equals("")){
out.println(" <script>alert('请输入用户名!');history.go(-1); </script>");
}else if(userPass == null || userPass.equals("")){
out.println(" <script>alert('请输入密码!');history.go(-1); </script>");
}else{
Dao dao = new DaoImpl();
int result = dao.getLoginUser(stateName, userName, userPass);
if(result > 0){
UserEntity user = new UserEntity();
user.setStateManager(stateName);
user.setUserName(userName);
//给session赋值
session.setAttribute("user", user);

//System.out.println(user.getStateManager());
request.getRequestDispatcher("/Report/index.jsp").forward(request, response);
}else{
out.println(" <script>alert('用户名或密码错误,请重新输入!');history.go(-1); </script>");
}
}
}


jsp页面代码:
//获取session值
UserEntity managerType = (UserEntity)session.getAttribute("user");
String manager = managerType.getStateManager();

...全文
16800 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
ITCandy-5 2012-09-25
  • 打赏
  • 举报
回复
我的解决了
ITCandy-5 2012-09-25
  • 打赏
  • 举报
回复
我也遇到了同样的问题,在servlet中我测试了可以获得值,但是跳转到jsp页面就获得不了了,你们说的方法我都试过,但是没有解决问题的,我在本地测试的是ok的,但是我上传到服务器测试就会出错(也就是获得不了session)而且就IE不可以,我用火狐都可以正常登陆!急切寻求大家的帮助!!!
zhaohan_1012 2012-08-02
  • 打赏
  • 举报
回复
太多说法了,看了晕!
李姓社员 2010-08-22
  • 打赏
  • 举报
回复
中间有一个广告层挡住了内容我看不见。建议打广告是很贵的不要辜负顾客所要得效果,而不是讨厌。
wuyingzhuifen 2009-11-24
  • 打赏
  • 举报
回复
你用“request.getRequestDispatcher("/Report/index.jsp").forward(request, response); ”跳转页面,实际上是请求转发,也就是说系统是将你请求的参数放下后跳转到另一个页面的,在跳转后当然获取不到你存到session里的值了;你应该使用“response.sendRedirect("页面地址");”跳转后就可以获取你存进session里的值了。
quanquan516 2009-11-24
  • 打赏
  • 举报
回复
貌似是url重写问题,应该将session附加到url中
将request.getRequestDispatcher("/Report/index.jsp").forward(request, response);改成下面的代码试试:
String encodedURL=response.encodeRedirectURL("/Report/index.jsp");
request.getRequestDispatcher(encodedURL).forward(request, response);
lijun3159 2009-11-24
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 wuyingzhuifen 的回复:]
你用“request.getRequestDispatcher("/Report/index.jsp").forward(request, response); ”跳转页面,实际上是请求转发,也就是说系统是将你请求的参数放下后跳转到另一个页面的,在跳转后当然获取不到你存到session里的值了;你应该使用“response.sendRedirect("页面地址");”跳转后就可以获取你存进sess?-
[/Quote]

离谱
zxhbjz5 2009-11-23
  • 打赏
  • 举报
回复
你有没有禁用Cookie,如果禁用Cookie,每次请求都是不同的Session
  • 打赏
  • 举报
回复
看看你的跳转方式,是不是参数没带过去
lzt2008 2009-11-23
  • 打赏
  • 举报
回复
没见你的session.setAttribute()啊
csf3639249 2009-11-23
  • 打赏
  • 举报
回复
使用的是post方法还是get方法?最好在get方法里面调用下post方法,万无一失
道光2008 2009-11-23
  • 打赏
  • 举报
回复
你的("/Report/index.jsp“)
和当前filter好像不是同一个工程。
那怎么实现session共享呢
crystalcup 2009-11-23
  • 打赏
  • 举报
回复
我有给stateManager赋值啊。给session赋值前,就给stateManager赋值了。
但还是抛NullPointer异常了!
一洽客服系统 2009-11-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 warison2008 的回复:]
看不出问题来,应该是其他地方的问题
确认下
if(result > 0){
这个执行没有
[/Quote]
没有执行 怎么forward到index.jsp页面。

UserEntity managerType = (UserEntity)session.getAttribute("user");
String manager = managerType.getStateManager();
应该可以获取到值吧 你在放入session的时候并没有给statemanager字段赋值 这里抛NullPointer异常了吗
sweetqueen1 2009-11-23
  • 打赏
  • 举报
回复
用session.getAttribute()接收
道光2008 2009-11-23
  • 打赏
  • 举报
回复
看不出问题来,应该是其他地方的问题
确认下
if(result > 0){
这个执行没有
phyerbarte 2009-11-23
  • 打赏
  • 举报
回复
你可以看看servlet和jsp中获得的session是否相同,不同的话,自然获得不到。
shirlydyh 2009-11-23
  • 打赏
  • 举报
回复
在servlet和jsp中分别得到session的sessionid看两个的sessionid是否一样
如果不一样就是session的问题
小小都不懂 2009-11-23
  • 打赏
  • 举报
回复
关注
铁匠梁 2009-11-23
  • 打赏
  • 举报
回复
没有遇到过

81,092

社区成员

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

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