急求: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){
这个执行没有
------解决方案--------------------
------解决方案--------------------你的("/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");