日期:2014-05-17  浏览次数:20720 次

急求:jsp页面怎样获取 session值
我在登录后,用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();


------解决方案--------------------
你可以看看servlet和jsp中获得的session是否相同,不同的话,自然获得不到。
------解决方案--------------------
看不出问题来,应该是其他地方的问题
确认下
if(result > 0){ 
这个执行没有
------解决方案--------------------
探讨
看不出问题来,应该是其他地方的问题
确认下
if(result > 0){
这个执行没有

------解决方案--------------------
你的("/Report/index.jsp“)
和当前filter好像不是同一个工程。
那怎么实现session共享呢
------解决方案--------------------
没见你的session.setAttribute()啊

------解决方案--------------------
看看你的跳转方式,是不是参数没带过去
------解决方案--------------------
你有没有禁用Cookie,如果禁用Cookie,每次请求都是不同的Session
------解决方案--------------------
在servlet和jsp中分别得到session的sessionid看两个的sessionid是否一样
如果不一样就是session的问题
------解决方案--------------------
用session.getAttribute()接收
------解决方案--------------------
使用的是post方法还是get方法?最好在get方法里面调用下post方法,万无一失

------解决方案--------------------
你用“request.getRequestDispatcher("/Report/index.jsp").forward(request, response); ”跳转页面,实际上是请求转发,也就是说系统是将你请求的参数放下后跳转到另一个页面的,在跳转后当然获取不到你存到session里的值了;你应该使用“response.sendRedirect("页面地址");”跳转后就可以获取你存进session里的值了。
------解决方案--------------------
貌似是url重写问题,应该将session附加到url中
将request.getRequestDispatcher("/Report/index.jsp").forward(request, response);改成下面的代码试试:
String encodedURL=response.encodeRedirectURL("/Report/index.jsp");