struts2自定义拦截器的示例代码

题目:使用struts2自定义拦截器,完成用户登陆才能访问权限的实现

  1. 在session中存放user变量表示用户登陆,若user为空则用户没有登陆,反之登陆
  2. 显示提示信息(请先登录)

定义拦截器

在struts.xml中定义拦截器使用标签<Intercaptors>、<Intercapter>。

<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变量是否为空。

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中添加拦截器

<action name="Action" class="Action.Action">

<interceptor-ref name="test"></interceptor-ref>

<result name="success">Message.jsp</result>

</action>

其他

action的实现

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

<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变量

<%@ 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变量

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

退出成功

<%

request.getSession().removeAttribute("user");

response.setHeader("refresh", "1;url=index.jsp");

%>

Message.jsp

简单是输出message和debug

<body>

${message } <br/>

<s:debug></s:debug>

</body>

以上是 struts2自定义拦截器的示例代码 的全部内容, 来源链接: utcz.com/p/214335.html

回到顶部