读书人

Struts2封存登陆信息和注销功能例子(转

发布时间: 2012-10-31 14:37:32 作者: rapoo

Struts2保存登陆信息和注销功能例子(转)

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 {

/**?
???? * @author lipengcheng?
???? * 用户注销?
???? */?
??? 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去的,很久才能解决一个问题。

?

读书人网 >软件架构设计

热点推荐