当前位置: 代码迷 >> J2EE >> Struts2 的action中怎么获得JSP里面session保存的值
  详细解决方案

Struts2 的action中怎么获得JSP里面session保存的值

热度:7   发布时间:2016-04-17 23:27:30.0
Struts2 的action中如何获得JSP里面session保存的值
我的JSP页面是一个登陆页面
当用户输入登录名之后,我想把登录名保存在session中
JSP 中代码是这样的
表单:

 <tr>
       <td><label for="username">用户名</label></td>
       <td><input type="text" id="username" name="user.username"></td>
 </tr>        


JSP中将用户名存入session的代码如下:

<%   String name = request.getParameter("user.username");
  session.setAttribute("name",name);%>


这样是不是就可以在JSP中用户写入的用户名存入到session中了?

接下来在action中获取session中值的代码如下:
HttpServletRequest request=ServletActionContext.getRequest();//获得session
  HttpSession session=request.getSession();   
  String a = (String) session.getAttribute("name");
  System.out.println(a);


可是最后在控制台输出的 却是 null  意思就是我没有将用户输入的用户名保存到session中喽,是程序写的不对吗?还是什么原因,请各位大神赐教,纠结这个问题两天了

是JSP写得不对还是action里面写得不对?

------解决思路----------------------
String name = request.getParameter("user.username");
session.setAttribute("name",name);
看一下session这里存进去了没有不就知道了
------解决思路----------------------
首先String name = request.getParameter("user.username")应该是娶不到值的。要想在Struts2的Action中获取Session在session中存放数据,可以这么来 ActionContext.getContext().getSession().put(String, Object);,这里获得的Session对象是一个Map,Struts2对原有的Session进行封装。不是所以这里不是调用ActionContext.getContext().getSession().setAttribute();而是调用ActionContext.getContext().getSession().put(String, Object);  
在jsp那边就可以访问了。注意一点put( "username" , username) 而不是put( "user.username" , username)...
另一种做法:使用OGNL表达式。引入struts2标签 <%@taglib uri="/struts-tags" prefix="s" %>直接在另一个页面<s:property value="user.username"/> 
  相关解决方案