博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Struts2--拦截器的配置和使用
阅读量:2442 次
发布时间:2019-05-10

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

拦截器

要使用拦截器,首先要对它进行配置。拦截器的配置是在 struts.xml 文件中完成的,它通常以 <interceptor> 标签开头,以 </interceptor> 标签结束。定义拦截器的语法格式如下所示:

paramValue

上述语法格式中,<interceptor> 元素的 name 属性用于指定拦截器的名称,class 属性用于指定拦截器的实现类。有时,在定义拦截器时需要传入参数,这时需要使用 <param> 标签,其中 name 属性用于指定参数的名称,paramValue 表示参数的值。

拦截器栈

在实际的项目开发中,经常需要在 Action 执行之前执行多个拦截动作,如登录日志记录、权限管理等。

为了方便代码管理和程序的执行,开发者通常会将这些拦截器组成一个拦截器栈,在使用时,可以将栈内的多个拦截器当成一个整体引用。当拦截器栈被附加到一个 Action 上时,在执行 Action 之前必须先执行拦截器栈中的每一个拦截器。

定义拦截器栈使用 <\interceptors> 元素和 <\interceptor-stack> 子元素,当配置多个拦截器时,需要使用 <\interceptor-ref> 元素指定多个拦截器,配置语法如下所示:

...

在上述语法中,interceptorStackName 值表示配置的拦截器栈的名称;interceptorName 值表示拦截器的名称。除此之外,在一个拦截器栈中还可以包含另一个拦截器栈,示例代码如下所示:

在上述代码中,定义的拦截器栈的名称是 myStack,在 myStack 栈中,除了引用了两个自定义的拦截器 interceptor1 和 interceptor2 以外,还引用了一个内置拦截器栈 defaultStack,这个拦截器是必须要引入的。

默认拦截器

如果想对一个包下的 Action 使用相同的拦截器,则需要为该包中的每个 Action 都重复指定同一个拦截器,这样写显然过于繁琐。为了解决此问题,Struts2 中支持使用默认拦截器,它可以对其指定的包中的所有 Action 都起到拦截作用。

一旦为某一个包指定了默认拦截器,并且该包中的 Action 未显示指定拦截器,则会使用默认拦截器。反之,若此包中的 Action 显示的指定了某个拦截器,则该默认拦截器将会被屏蔽。此时,如果还想使用默认拦截器,则需要用户手动配置该默认拦截器的引用。

配置默认拦截器需要使用 元素,此元素为 元素的子元素。其语法格式如下所示:

在上述语法格式中,name 属性的值必须是已经存在的拦截器或拦截器栈的名称。下面用该语法格式配置一个默认拦截器,示例代码如下所示:

/login.jsp

在上述代码中,指定了包下面的默认拦截器为一个拦截器栈,该拦截器栈将会作用于包下所有的 Action。

注意:每一个包下只能定义一个默认拦截器,如果需要多个拦截器作为默认拦截器,则可以将这些拦截器定义为一个拦截器栈,再将这个拦截器栈作为默认拦截器即可。

完整示例

add,delete
/index.jsp
/tag1.jsp
/tag2.jsp

转载地址:http://aasqb.baihongyu.com/

你可能感兴趣的文章
laravel集成谷歌验证_如何将Google的两因素身份验证添加到Laravel
查看>>
rails 创建_使用Rails和Icecast创建在线流媒体广播
查看>>
票务小程序源码_使用AdonisJs构建支持票务应用程序-第2部分
查看>>
使用Vue,ASP.NET Core和Okta构建安全的待办应用
查看>>
前端长列表渲染优化_用于前端开发的浏览器渲染优化
查看>>
使用Vue.js和Electron创建桌面测验应用程序
查看>>
js 数组从头添加到数组_编码练习:从头开始构建JavaScript数组方法
查看>>
react-hooks_使用React Hooks构建一个React To-Do应用(无类组件)
查看>>
chrome开发者工具_如何使用Chrome开发者工具查找性能瓶颈
查看>>
vue 使用人脸识别_使用Vue.js和Kairos构建简单的人脸识别应用
查看>>
vue 构建单页应用_如何使用Vue 2构建简单的单页应用程序(第1部分)
查看>>
使用Webtask.io构建无服务器MERN Story应用程序-部署零:1
查看>>
使用Webtask.io构建无服务器的MERN Story应用程序-部署零:2
查看>>
firebase vue_Firebase Cloud Firestore入门:构建Vue联系人应用
查看>>
node.js hapi_使用Hapi使用JavaScript异步构建安全的Node.js应用程序
查看>>
javascript入门_Netlify入门:部署JavaScript应用程序的最简单方法
查看>>
react hooks使用_使用React Hooks将React类组件转换为功能组件的5种方法
查看>>
使用Node.JS,React,Redux和Redux-saga Part3:身份验证构建Retrogames存档
查看>>
使用Node.JS,React,Redux和Redux-Saga Part2:Redux集成构建Retrogames存档。
查看>>
使用Selenium WebDriver测试Flask应用程序-第1部分
查看>>