题目:使用struts2自定义拦截器,完成用户登陆才能访问权限的实现
- 在session中存放user变量表示用户登陆,若user为空则用户没有登陆,反之登陆
- 显示提示信息(请先登录)
定义拦截器
在struts.xml中定义拦截器使用标签<Intercaptors>、<Intercapter>。
1
2
3
4
5
6
7
|
< interceptors > < interceptor name = "test" class = "Intercaptor.Intercaptor" /> < interceptor-stack name = "testStack" > < interceptor-ref name = "defaultStack" /> < interceptor-ref name = "test" /> </ interceptor-stack > </ interceptors > |
注:当我们为某个action添加Intercaptor时就会放弃struts2的其他的拦截器,所以我们要把自定义的拦截器放在一个一个拦截器栈中。
name属性就是Intercaptor.Intercaptor类在服务器上的一个实例
class属性就是这个拦截器的的类
实现拦截器
拦截器的java类要实现Intercaptor这个接口和里面的方法intercept()。我们这里拦截的条件是用户是否登陆,也就是session中的user变量是否为空。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
public class Intercaptor implements Interceptor{ public void destroy() { } public void init() { } public String intercept(ActionInvocation invocation) throws Exception { Object user=ActionContext.getContext().getSession().get( "user" ); if (user!= null ){ return invocation.invoke(); } ActionContext.getContext().put( "message" , "请先登陆" ); return "success" ; } } |
实现业务逻辑
在action中添加拦截器
1
2
3
4
|
< action name = "Action" class = "Action.Action" > < interceptor-ref name = "test" ></ interceptor-ref > < result name = "success" >Message.jsp</ result > </ action > |
其他
action的实现
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
public class Action extends ActionSupport{ private String message; public String getMessage() { return message; } public void setMessage(String message) { this .message = message; } public String execute() throws Exception { return "success" ; } } |
index.jsp
1
2
3
4
5
6
7
8
|
<body> 用户状态:${user!= null ? "已登陆" : "未登陆" }<br> <a href= "UserLogin.jsp" rel= "external nofollow" >用户登陆</a> <a href= "UserQuit.jsp" rel= "external nofollow" >用户退出</a> <form action= "<%request.getContextPath(); %>/testIntercaptor/Action" > <input type= "submit" value= "登陆后的操作" > </form> </body> |
UserLogin.jsp
在request.getSesssion中存放user变量
1
2
3
4
5
6
7
|
<%@ page language= "java" import = "java.util.*" pageEncoding= "utf-8" %> 登陆成功 <% request.getSession().setAttribute( "user" , "user" ); response.setHeader( "refresh" , "1;url=index.jsp" ); %> |
UserQuit.jsp
移除request.getSesssion中user变量
1
2
3
4
5
6
7
|
<%@ page language= "java" import = "java.util.*" pageEncoding= "utf-8" %> 退出成功 <% request.getSession().removeAttribute( "user" ); response.setHeader( "refresh" , "1;url=index.jsp" ); %> |
Message.jsp
简单是输出message和debug
1
2
3
4
|
<body> ${message } <br/> <s:debug></s:debug> </body> |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:http://www.jianshu.com/p/fc9e8ef59790?utm_source=tuicool&utm_medium=referral