全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

java中的Struts2拦截器详解

最近在学习struts的拦截器,现在来总结一下。

1、拦截器是什么?

拦截器相当于过滤器:就是将不想要的去掉,想要的留下。拦截器抽象出一部分代码可以用来完善原来的action。同时可以减轻代码冗余,提高重用率。通俗地讲就是一张网,过滤掉不需要的沙子,留下水。

2、拦截器的作用:

拦截器可以构成特定的功能。比如权限认证、日志记录和登陆判断。

3、拦截器的原理

  

其每一个Action请求都在拦截器中,每一个action可以将操作转交给下面的拦截器,也可以直接退出到界面上。

4、定义拦截器:

(1)自定义一个实现Interceptor接口(不过我初学者一般直接实现框架中的Interceptor)

(2)在struts.xml中注册定义的拦截器

(3)可以需要的action中引用拦截器

Interceptor接口声明了三个方法

public interface Interceptor extends Serializable {
 
  void destroy();
 
  void init();
 
  String intercept(ActionInvocation invocation) throws Exception;
}

Init方法是在action作用之前调用,就是开始给烂机器的初始化操作。

Destory方法在拦截器被垃圾回收之前调用,用来回收init方法初始化的资源。

interceptor方法是拦截器的主要操作。如果需要调用后续的Action或者拦截器,只需要在该方法中调用invocation.invoke()方法即可,在该方法调用的前后可以插入Action调用前后拦截器需要做的方法。

现在对用户登录进行拦截,代码如下:

public String intercept(ActionInvocation invocation) throws Exception {
    
    System.out.println("在action执行之前");
    ActionContext actionContext=invocation.getInvocationContext();
    Map<String,Object> session=actionContext.getSession();
    
    Object currentUser=session.get("currentUser");
    String result=null;
    if(currentUser!=null){
      result=invocation.invoke();
      
    }else{
      
      HttpServletRequest request=(HttpServletRequest)invocation.getInvocationContext().get(ServletActionContext.HTTP_REQUEST);
      request.setAttribute("error", "请先登录");
      result="error";
    }
    System.out.println("result+"+result);
    System.out.println("在action执行之后");
    return result;
  }

注册拦截器:

<interceptors>
       <interceptor name="myInterceptor"
       class="com.fangchao.interceptor.MyInterceptor"></interceptor>
       <interceptor name="loginInterceptor"
       class="com.fangchao.interceptor.LoginInterceptor"></interceptor>
       
       <interceptor-stack name="myStack">
         <interceptor-ref name="loginInterceptor"></interceptor-ref>
         <interceptor-ref name="defaultStack"></interceptor-ref>  
       </interceptor-stack>
     </interceptors>

上述代码中的interceptor-stack是个拦截器栈。到目前为止,就是在下面引用时,比较方便。一般来讲,每个action都会使用defaultStack。

拦截器参数:

配置参数:

  • excludeMethods:过滤掉不使用拦截器的方法
  • includeMethods:使用拦截器的方法。

有两种配置方式:

<interceptor-ref name="validation">
 <param name="excludeMethods">myValidationExcudeMethod</param>
</interceptor-ref>
<interceptor-ref name="workflow">
 <param name="excludeMethods">myWorkflowExcludeMethod</param>
</interceptor-ref>

或者

<interceptor-ref name="defaultStack">
  <param name="validation.excludeMethods">myValidationExcludeMethod</param>
  <param name="workflow.excludeMethods">myWorkflowExcludeMethod</param>
</interceptor-ref>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# struts拦截器  # struts2  # 拦截器  # struts2拦截器详解  # 修改request的parameter的几种方式总结  # Struts2之Action接收请求参数和拦截器详解  # Struts2源码分析之ParametersInterceptor拦截器  # 解决struts2 拦截器修改request的parameters参数失败的问题  # 过滤掉  # 是个  # 是在  # 都在  # 不需要  # 只需  # 要在  # 请先  # 可以直接  # 自定义  # 有两种  # 将不  # 用户登录  # 大家多多  # 可以用来  # 器中  # 张网  # 就是在  # 不过我 


相关文章: php8.4新语法match怎么用_php8.4match表达式替代switch【方法】  如何选择CMS系统实现快速建站与SEO优化?  宁波自助建站系统如何快速打造专业企业网站?  如何通过山东自助建站平台快速注册域名?  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  自助网站制作软件,个人如何自助建网站?  建站之星IIS配置教程:代码生成技巧与站点搭建指南  c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  网站企业制作流程,用什么语言做企业网站比较好?  网站制作费用多少钱,一个网站的运营,需要哪些费用?  娃派WAP自助建站:免费模板+移动优化,快速打造专业网站  武汉网站制作费用多少,在武汉武昌,建面100平方左右的房子,想装暖气片,费用大概是多少啊?  如何在IIS中新建站点并配置端口与IP地址?  如何在万网ECS上快速搭建专属网站?  建站之星导航如何优化提升用户体验?  外贸公司网站制作,外贸网站建设一般有哪些步骤?  建站OpenVZ教程与优化策略:配置指南与性能提升  建站主机CVM配置优化、SEO策略与性能提升指南  重庆市网站制作公司,重庆招聘网站哪个好?  南宁网站建设制作定制,南宁网站建设可以定制吗?  魔毅自助建站系统:模板定制与SEO优化一键生成指南  如何用虚拟主机快速搭建网站?详细步骤解析  建站之星备案是否影响网站上线时间?  建站之星伪静态规则如何正确配置?  做企业网站制作流程,企业网站制作基本流程有哪些?  江苏网站制作公司有哪些,江苏书法考级官方网站?  php json中文编码为null的解决办法  韩国服务器如何优化跨境访问实现高效连接?  公司网站设计制作厂家,怎么创建自己的一个网站?  为什么Go需要go mod文件_Go go mod文件作用说明  如何正确选择百度移动适配建站域名?  如何通过IIS搭建网站并配置访问权限?  商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  如何做静态网页,sublimetext3.0制作静态网页?  网站制作公司广州有几家,广州尚艺美发学校网站是多少?  清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?  如何在Windows虚拟主机上快速搭建网站?  成都响应式网站开发,dw怎么把手机适应页面变成网页?  定制建站哪家更专业可靠?推荐榜单揭晓  建站主机空间推荐 高性价比配置与快速部署方案解析  平台云上自主建站:模板化设计与智能工具打造高效网站  上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?  nginx修改上传文件大小限制的方法  如何通过建站之星自助学习解决操作问题?  宝塔建站教程:一键部署配置流程与SEO优化实战指南  如何选择香港主机高效搭建外贸独立站?  建站之星CMS建站配置指南:模板选择与SEO优化技巧  湖北网站制作公司有哪些,湖北清能集团官网? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。