我的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"/>