struts2拦截器及其应用

一、struts2简介

Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。也就是说,struts2可以实现代码的MVC分离,而传统的servlet在面对庞大的工程时解耦不是很好。在团队协作里面,struts2的配置文件是联系不同模块之间的关键,方便解耦。

不过,Struts2曾曝出2个高危安全漏洞,一个是使用缩写的导航参数前缀时的远程代码执行漏洞,另一个是使用缩写的重定向参数前缀时的开放式重定向漏洞。这些漏洞可使黑客取得网站服务器的“最高权限”,从而使企业服务器变成黑客手中的“肉鸡”。所以有观点认为SpringMVC将逐步吞并struts2,不过本人没有学习过SpringMVC,所以无法对以上观点做出评判。

二、struts2拦截器介绍

拦截器是面向切面编程的实例,它将多个模块的共同代码模块提取出来,灵活地插入各个模块之中,减少了系统的重复代码,确保业务对象的整洁。

面向切面编程(AOP)举例:一个工程当中多个类需要在执行之后打印日志信息,“打印日志信息”这一功能并不是某个特定模块独有的功能,如果在每个模块都加入这部分代码,就会导致代码重用性降低,所以就有了面向切面编程编程,将打印日志信息这部分代码提取出来,灵活的嵌入各个模块。

struts2拦截器体现了AOP思想,它可以在指定action的代码执行前后加入拦截器类的代码,不需要的时候,只需要在配置文件中删除拦截器,同时可以保留拦截器的代码。

三、拦截器的使用例子

此处使用struts2拦截器实现登录验证功能来介绍拦截器的使用。

功能描述:网站的某部分内容在用户没登录之前是不能访问的,最简单的做法就是在每个展现内容的action中加入几句判断用户是否登录的代码,但如果涉及的action比较多,开发者就不得不复制粘贴同样的代码到不同的类中,而修改的时候也需要到各个类修改,比较麻烦。

struts2拦截器将代码实现和AOP的配置分开来,配置信息集中在struts2.xml中,比较方便修改。此外代码只有一份,可以做到一次修改,造福全局。

流程如下(登录之后才能访问的网页放在WEB-INF下):

登录->action1->验证成功->跳转到页面1->点击某个按钮->调用action2->使用登录后才能用的页面2.

通常action1不用拦截器,因为本身是登录验证部分,而action2则需要,所以需要在“”使用登录后才能用的页面2”前添加拦截器,变为:

登录->action1->验证成功->跳转到页面1->点击某个按钮->调用action2->拦截器验证当前是否登录->使用登录后才能用的页面2.

代码:

1、配置web.xml,使用struts2

图片发自简书App

2、jsp页面

图片发自简书App

图片发自简书App

图片发自简书App


3、编写对应的action

图片发自简书App

图片发自简书App

4、编写拦截器

图片发自简书App

5、配置struts2.xml

图片发自简书App

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、struts2工作流程 Struts 2框架本身大致可以分为3个部分: 核心控制器FilterDispatch...
    重山杨阅读 5,407评论 0 38
  • 拦截器是Struts2框架的核心,它主要完成解析请求参数、将请求参数赋值给Action属性、执行数据校验、文件上传...
    重山杨阅读 9,395评论 2 13
  • 标签 如果要配置的标签,那么必须要先配置标签,代表的包的概念。 包含的属性 name包的名称,要求是唯一的,管理a...
    偷偷得路过阅读 5,222评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,374评论 19 139
  • 你是否还记得我们第一次的相遇? 你是否还记得曾经的我们无话不谈? 人与人之间总是充满着一开...
    婷Kitty阅读 2,271评论 0 0