博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Struts2拦截器
阅读量:5116 次
发布时间:2019-06-13

本文共 2513 字,大约阅读时间需要 8 分钟。

拦截器

拦截器分类:1) struts框架自带拦截器:

sturts-default.xml文件中里有多种拦截器如params.......等,
在struts.xml中只要包extends了struts-default,那么每个Action都拥有一些拦截器,拥有的这些叫默认拦截器栈defaultStack
2) 自定义拦截器(权限控制等)
如何自定义拦截器:
1)
com.opensymphony.xwork2.interceptor.Interceptor接口 ----------> (只有init,destroy,intercept方法)
要实现接口里的三个方法:
public void destroy(){}
public void init(){}
public String intercept(ActionInvocation invocation) throws Exception {

String result = invocation.invoke();

2)
com.opensymphony.xwork2.interceptor.AbstractInterceptor 抽象类 ---------->(只有intercept方法)
public String intercept(ActionInvocation invocation)throws Exception {

String result = invocation.invoke();

3)com.opensymphony.xwork2.interceptor.MethodFilterInterceptor抽象类 ----------> (这个拦截器可以指定要拦截或不拦截的方法列表)

protected String doIntercept(ActionInvocation arg0) throws Exception {

String result=arg0.invoke();

Struts.xml中配置:

300
/index.jsp
/login.jsp
login2
login1,login3

 

注意:1)多个拦截器作用于一个Action,拦截器是有顺序的
2)设置拦截器或不拦截的方法时,如果有多个方法,那么以逗号(,)分隔,
如果一个方法的名字同时出现在execludeMethods和includeMethods参数中,那么它会被当作要拦截的方法。
也就是说, includeMethods优先于execludeMethods。

 

 拦截器栈:就是将一些拦截器组合起来进行统一管理

300
login2
login1,login3
/index.jsp
/login.jsp

 

拦截器的应用
1.访问权限拦截器

1)JSP

2)Action:获取页面上的数据,验证成功后,把用户信息存入session中,然后跳转到另一个Action
3)对另一个Action进行拦截,从session中取值,判断用户是否登录,在进行跳转
4)为什么写二个Action,因为,第一个Action是为了往session中放值,如果是后拦截不起作用。所以得用第二个Action
5)struts.xml要对第二个Action配置上拦截器
6)访问权限为什么非写在拦截器里:为了重用(有可能其它Action也要用)

使用令牌token防止表单重复提交

1)index.jsp

<%@ taglib prefix="s" uri="/struts-tags"%>
username:
password:

 

2)action

//action类是需要继承ActionSupport这个类的,不然struts识别不了//在重复提交时,Token会产生一个重复的提交的信息,由ActionSupport得到信息后,在存入TokenAction这个类中public class TokenAction extends ActionSupport {public String execute() throws Exception {return SUCCESS;}}

 

3)struts.xml

/welcome.jsp
/error.jsp

 

转载于:https://www.cnblogs.com/lm970585581/p/7246716.html

你可能感兴趣的文章
NAT配置
查看>>
【翻译】Brewer's CAP Theorem CAP定理
查看>>
undefined与null
查看>>
redis总结
查看>>
解决SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT 'OpenRowset/OpenDatasource' 的访问...
查看>>
STM32F10x_RTC秒中断
查看>>
[原创]网站HTML,XHTML,XML,WML,CSS等测试验证工具介绍
查看>>
4-28
查看>>
display:none和visiblity:hidden区别
查看>>
C#double转化成字符串 保留小数位数, 不以科学计数法的形式出现。
查看>>
SpringMVC学习总结(三)——Controller接口详解(1)
查看>>
python:os模块与sys模块
查看>>
Feel Good
查看>>
背景100%显示
查看>>
DQL、DML、DDL、DCL全名是啥?
查看>>
XSS学习笔记(一)
查看>>
js题集25--编程训练
查看>>
C# Cookies揭秘 [Asp.Net, Javascript]
查看>>
CF-697B Barnicle与691C Exponential notation
查看>>
Tomcat启动过程(一):从BootStrap到EndPonit
查看>>