码迷,mamicode.com
首页 > 其他好文 > 详细

Struts自定义拦截器

时间:2015-03-30 16:08:18      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:

首先我们来以一个权限拦截器 的例子来说明自定义拦截器,登录之后才可以访问action中的方法,没有登录的话提示用户登录

首先建立一个设置登录状态的jsp  login.jsp

<%request.getSession().setAttribute("user","dbq_00");%>

建立一个退出登录状态的jsp quit.jsp

<%request.getSession.removeAttribute("user");%>

现在来建立action

package com.day05;

public class demo {

private String message;

public String getMessage() {
return message;
}

public void setMessage(String messsage) {
this.message = messsage;
}

public String addUI(){
this.message = "addUI()";
return "success";
}

public String execute(){
this.message = "execute()";
return "success";
}
}

 

在action中配置

<package name="day05" namespace="/day05" extends="struts-default">
<action name="demo_*" class="com.day05.demo" method="{1}">
<result name="success">/show.jsp</result>
</action>
</package>

 

访问一下 能访问

技术分享

 

下面我们来建立拦截器拦截浏览器的访问

package com.day05;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;

public class demo1 implements Interceptor{

@Override
public void destroy() {
// TODO Auto-generated method stub

}

@Override
public void init() {
// TODO Auto-generated method stub

}

@Override
public String intercept(ActionInvocation arg0) throws Exception {
// TODO Auto-generated method stub
Object user = ActionContext.getContext().getSession().get("user");

if(user!=null) //如果用户不为空 证明用户已经登录
{
return arg0.invoke(); //返回的是action中的视图 success
}
else
{
ActionContext.getContext().put("message", "对不起您还没有登录");
return "message"; //跳转到message视图
}
}然后在struts中注册拦截器

 

}

<interceptors>
<interceptor name="demo" class="com.day05.demo1">
</interceptor>
</interceptors>

然后在action中使用就行了

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

我们 没有登录就会提示没有登录

技术分享

 

登录之后就可以 访问action 了

 

技术分享

但是这样在action中直接使用拦截器struts的默认拦截器不会被执行 不过我们可以使用 拦截器栈

<interceptors>
<interceptor name="demo" class="com.day05.demo1" />
<!-- 拦截器栈 -->
<interceptor-stack name="myStack">
<interceptor-ref name="defaultStack" />   <!--struts的拦截器栈-->
<interceptor-ref name="demo" />             <!--自定义的拦截器-->
</interceptor-stack>
</interceptors>
<action name="demo_*" class="com.day05.demo" method="{1}">
<interceptor-ref name="myStack" />        <!--在action中直接使用拦截器栈-->
<result name="success">/show.jsp</result>
<result name="message">/message.jsp</result>
</action>

 

Struts自定义拦截器

标签:

原文地址:http://www.cnblogs.com/dbqjava/p/4378099.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!