Struts2应用基础_自定义拦截器

在Struts2中,拦截器是核心部分。所以了解拦截器的执行过程以及对它的应用是非常重要的。在这里通过使用自定义拦截器的一个简单例子来剖析Struts2的拦截器,让大家更好地了解。
[b]1、新建一个Action类,代码如下:[/b]
public class VerifyAction {
private String message;
……
public String addUI(){
this.message="addUI";
return "message";
}

public String execute() throws Exception{
this.message="execute";
return "message";
}
}
[b]2、再新建一个类,这个类要实现Interceptor接口,代码如下:[/b]
public class PermissionInterceptor implements Interceptor {
@Override
public void destroy() { }
@Override
public void init() { }
@Override
public String intercept(ActionInvocation invocation) throws Exception {
// TODO Auto-generated method stub
Object user=ActionContext.getContext().getSession().get("user");
if(user!=null)
return invocation.invoke();
ActionContext.getContext().put("message", "你没有权限执行该操作");
return "message";
}
}
[b]3、用户的登录与退出,代码如下:[/b]
user.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
request.getSession().setAttribute("user", "huhui");
%>
[color=green] 用户已经登录[/color]

quit.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
request.getSession().removeAttribute("user");
%>
[color=green] 用户已经退出登录[/color]
[b]4、struts.xml文件的配置,代码如下:[/b]
<package name="base" extends="struts-default">
<global-results><!-- 全局视图 -->
<result name="message">/WEB-INF/page/message.jsp</result>
</global-results>
</package>
<package name="example" namespace="/huhui" extends="base">
<interceptors>
[color=green]为这类添加拦截器[/color]
<interceptor name="permission" class="cn.huhui.Interceptor.PermissionInterceptor"></interceptor>
<interceptor-stack name="permissionStack">[color=green]建一个拦截器栈[/color]
[color=green]默认拦截器[/color]
<interceptor-ref name="defaultStack"></interceptor-ref>
[color=green]自定义拦截器[/color]
<interceptor-ref name="permission"></interceptor-ref>
</interceptor-stack>
</interceptors>
[color=green]若直接在action里添加自定义拦截器,则会覆盖默认拦截器,故建个栈[/color]
<action name="huhui*" class="cn.huhui.action.VerifyAction" method="{1}">
<interceptor-ref name="permissionStack"></interceptor-ref>
</action>
</package>
[b]在action里设置了name="huhui*"和method="{1}"是使用了通配符,通配符的使用这里简单说明一下:[/b]
此时若你访问的路径为:http://localhost:8080/one/test/hui/huhuiadd.action,则执行add()方法,若访问路径为:http://localhost:8080/one/test/hui/huhuidelete.action,则执行delete()方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值