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

来源:互联网 发布:qq挂机升级软件 编辑:程序博客网 时间:2024/05/21 17:09

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

 

无论是开发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 {

/**
* @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的依据。一个实际的例子是:

<!C 这是在session中取得的值 C>

<s:set name="username" value="#session.username"></s:set>以下为一个登陆的jsp页面

<s:if test="#session.user == 'admin'"> 
欢迎你,${sessionScope.user},你已经成功登陆!
欢迎你,${sessionScope.user},你已经成功登陆!

<s:form action="Logout">
<s:submit value="注销"></s:submit>
</s:form>
</s:if> <s:else>
你还没有登陆!
<s:form action="Login">
<s:textfield name="username" label="用户名"></s:textfield>
<s:textfield name="password" label="密码"></s:textfield>
<s:submit value="登陆"></s:submit>
</s:form>
</s:else>
</center>
</body>



原创粉丝点击