Struts2保存登陆信息和注销功能例子(转)
来源:互联网 发布:淘宝肖像权投诉 编辑:程序博客网 时间:2024/06/04 19:00
无论是开发WEB应用还是信息系统,总要遇到需要登录的问题。即使是开放度很高的网站,也需要有这个功能,除非是一些完全静态的网站,没有一点交互的内容。
这个是学习笔记,直奔主题。
LoginAction类是已经写好了,要记录用户登录的信息,只需要在return SUCCESS;前面加上以下这段代码就OK了。
Map<String, String> attibutes = ActionContext.getContext().getSession();//记录用户登录信息
attibutes.put("username", username);
attibutes.put("password", password);
还需要导入包:
import java.util.Map;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
这样就可以保存登录的信息了,而注销功能的代码更简单。可以在LoginAction里面写然后在struts.xml那里配置,也可以新建一个LogoutActoin的类如下:
import java.util.Map;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class LogoutAction extends ActionSupport {
private static final long serialVersionUID = 1L;
@SuppressWarnings("unchecked")
@Override
public String execute() throws Exception {
Map<String, String> attibutes = ActionContext.getContext().getSession();
attibutes.remove("username");
return SUCCESS;
}
}
至于struts.xml里面的配置转向,自己写上就可以了,然后是页面的问题。一般的系统在登录之前,登录板块显示的是登陆的一个form,而登录成功之后是显示用户的信息,用户注销之后显示的又是登录的form。用struts2实现起来也是非常的简单。用struts2的<s:set>、<s:if>、<s:else>标签就可以实现。这里是它的官方网站上的介绍,它的基本逻辑是这样的。
<s:if test="%{false}">
<div>Will Not Be Executed</div>
</s:if>
<s:elseif test="%{true}">
<div>Will Be Executed</div>
</s:elseif>
<s:else>
<div>Will Not Be Executed</div>
</s:else>
其中test属性是必须的,作为判断显示哪个div的依据。一个实际的例子是:
<!– 这是在session中取得的值 –>
<s:set name="username" value="#session.username"></s:set>
<s:set name="password" value="#session.password"></s:set>
<s:if test="#username != null">
<div >
欢迎你:
<s:property value="#session.username" />
<ul>
<li>
<a href="#">修改资料</a>
<a href="/logout.action">安全退出</a>
</li>
</ul>
</div>
</s:if>
<s:else>
<div>
<table>
<tr>
<s:form action="login" theme="ajax">
<s:textfield label="用户名" name="username"></s:textfield>
<s:password label="密码" name="password"></s:password>
<s:submit value="登录"></s:submit>
</s:form>
</tr>
<tr>
<td>
<a href="/niubonline/nodecorate/register.jsp">注册新用户</a>
</td>
<td>
<a href="#">忘记密码</a>
</td>
</tr>
</table>
</div>
</s:else>
在自己的机子上顺利测试通过,手头上没有书本,很多东西遇到了才上网查找资料,太麻烦了,如果手上有本书可以查就好了,网上的信息很多都重复的,COPY来COPY去的,很久才能解决一个问题。
----------------------------------------------------------------------------------------------------------------------------------
二.解决这个问题关键在以下两个方面: 1.在action中如何保存值>> 1.1使用ActoinContext类 Map<String> session = ActionContext.getContext().getSession(); 1.2实现ServletRequestAware接口,并实现其中的setServletRequest方法 private HttpSession session; @Override public void setServletRequest(HttpServletRequest arg0) { this.session = arg0.getSession(); } 1.3实现SessionAware接口,实现其中的setSession方法 private Map<String> session; @Override public void setSession(Map<String, Object> arg0) { this.Session = arg0; } ====> ok, 下面你可以从session取值或存值了 2.在jsp中页面中如何取出已保存的值>>> 2.1 使用ognl表达式得到相应的值 name:<s:property value="#session.name"/> 2.2 使用jsp表达式 name:<%=session.getAttribute("name") %><br> -------------------------------------------------------------------------------------------------------------
开发网站时,经常有这样的问题,登陆成功页面需要知道登陆页面登陆的用户信息,才能根据不同的用户不同的权限控制他们可以访问哪些页面。 为了解决这个问题,就需要把登陆信息保存在服务器的内存中,供多个页面共享。这片服务器的内存在JSP和Servlet里就是Session对象。我们只要在用户登陆成功后把用户信息保存在Session对象中就可以了。那么怎么在Action中访问Session对象呢?
在Struts1.x中,Action中execute的方法的参数包含代表当前请求的Request对象,可以从Requset对象中取得Session对象。
在Struts2中,Action已经不包含Request等信息,Action完全可以不继承任何类,虽然说这样做肯定有它的好处,但确实给我们带来了麻烦,怎么办呢?
其实很简单,查找一下Struts2的帮助我们就可以找到答案(struts-2.0.6\docs\docs\how-do-we-get-access-to-the-session.html)。
有两种方法,我们才用比较简单的,通过ActionContext类的静态方法getContext().getSession();取得Session对象。
和ActionSupport一样,我们需要先导入com.opensymphony.xwork2包下的ActionContext类: 在Login.java的import com.opensymphony.xwork2.ActionSupport;上面添加: import com.opensymphony.xwork2.ActionContext;导入包。
然后在execute()方法的return SUCCESS;代码前加入如下代码:
- Map attibutes = ActionContext.getContext().getSession();
- attibutes.put("username", username);
- attibutes.put("password", password);
这样我们就把登陆的用户名和密码保存在了Session对象中。
为了测试,可以在Success.jsp中添加如下代码:
- <br>登陆用户名:<s:property value="#session.username"/>
- <br>登陆密 码:<s:property value="#session.password"/>
或者
${sessionScope.username }
${sessionScope.对象.username}
部署项目,启动Tomcat,然后在浏览器中输入:
http://localhost:8080/xxx/Login!input.action 分别输入用户名和密码为scott和tiger,单击Submit提交网页,如果在Success.jsp中显示如下信息:
登录成功..................... 登陆用户名:scott 登陆密 码:tiger
则说明成功了^_^
- Struts2保存登陆信息和注销功能例子(转)
- Struts2保存登陆信息和注销功能例子
- Struts2保存登陆信息和注销功能例子
- XMPP实现登陆注销功能
- 用户登陆和注销方式
- javaWeb注册,登陆,注销功能的实现
- 【django4】简单注册/登陆/注销功能
- 注销登陆
- 登陆、注销
- 登陆、注销
- 注销登陆
- Oracle 学习笔记 登陆和注销
- Struts2.0登陆小例子
- javaweb登陆,注销功能实现的一般步奏
- android项目中注销或者退出登陆功能
- Struts2实现登陆功能Demo
- Struts2 简单的登陆功能
- 登陆功能验证数据库信息
- FFMPEG学习【libavcodec】:实用函数(一)
- 压力测试work——6.9
- fb_var_screeninfo 和fb_fix_screeninfo
- 20.蛇形矩阵打印
- C#多线程编程
- Struts2保存登陆信息和注销功能例子(转)
- Linux内核源码分析--内存管理(一、分页机制)
- 试卷批分 grade
- PCI-E 5.0标准正式公布!速度再次翻番达32GT/s
- 基于BlueZ5.44协议栈的RTL8723 BLE蓝牙连接(二)
- seajs如何正确加载jquery
- Bootstrap & EasyUI WEB开发框架
- 二叉树的下一个节点(Java实现)
- Spark最新的两大研发方向深度学习和结构化流处理