当前位置: 首页 > 图灵资讯 > 技术篇> Struts2拦截器及其工作原理

Struts2拦截器及其工作原理

来源:图灵教育
时间:2023-03-30 17:39:51

  拦截器(Interceptor),Struts2框架的核心功能之一。Struts 基于MVC设计模式的开源框架,(Struts2拦截器主要完成要求参数的分析,将页面表单参数赋予值栈中的相应属性、执行功能检验、程序异常调试等。)弄懂Struts2拦截器及其工作原理是一名合格java程序员的必修课。

  Struts2拦截器是一种可插拔策略,实现了面向截面的组件开发。当需要扩展功能时,只需提供相应的拦截器并在Struts2容器中配置即可。如果不需要此功能,则只需取消配置文件中拦截器的设置,用户无需在整个过程中添加额外代码。拦截器中更重要的概念是拦截器栈(Interceptor Stack),拦截堆栈是Struts2中的拦截器按一定顺序组成的线性链。当页面发出请求并访问Action对象或方法时,堆栈中设置的拦截器将根据堆栈的原理顺序调用。当我们想引用多个拦截器时,只要我们把所有的拦截器都放在堆栈里,并在外面引用拦截器。

  过滤器调度程序必须做很多事情,而不停留在过滤器调度程序类别中的代码通常被模块化为一系列拦截器。拦截器可以编辑Struts配置文件被插入或拔出。表格列出了Struts的默认拦截器。括号部分是在配置文件中注册拦截器时使用的名称。在使用拦截器之前,必须在配置文件中注册。例如,alias拦截器的注册名称是alias。

  Struts2拦截器的实现原理相对简单,当要求struts2的action时,Struts 2将找到配置文件,并根据其配置实例化相对拦截器对象,然后串成一个列表,最后一个调用列表中的拦截器。例如,应用程序要求用户登录,并且必须指定用户名才能查看系统中的视图资源;否则,系统将直接转移到登录页面。对于上述要求,权限检查逻辑可以在每个Action执行实际处理逻辑之前执行,但这种做法不利于代码重用。由于Action中的权限检查代码大多相似,因此在拦截器中放置这些权限检查的逻辑将更加优雅。

  Struts Action执行前后拦截拦截器, 围绕Action执行, 例如实现日志管理拦截器和安全功能的拦截器, 拦截器与系统Action相关, 在Action执行过程中添加后, 系统的整个执行过程变为记录日志、安全检测和Action、执行安全检测,记录日志, 在执行过程中, 每个拦截器类别的拦截方法决定了传递请求, 或终止请求。

  在实际的Web应用软件项目, 开发人员需要自定义拦截器来实现与项目业务逻辑相关的一般功能。例如,Web应用程序涉及权限控制, 用户访问系统的受保护资源时, 首先要检查用户是否已登录, 以及是否有权限访问, 拦截器可以拦截用户请求, 判断用户是否已登录。