精华内容
下载资源
问答
  • struts2创建自定义拦截器

    千次阅读 2018-01-10 22:14:16
    1.创建自定义拦截器类 package com.bos.web.intercepter; import org.apache.struts2.ServletActionContext; import com.bos.domain.User; import com.opensymphony.xwork2.ActionInvocation; import ...

    1.创建自定义拦截器类

    package com.bos.web.intercepter;
    import org.apache.struts2.ServletActionContext;
    import com.bos.domain.User;
    import com.opensymphony.xwork2.ActionInvocation;
    import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;


    public class ManagerIntercepter extends MethodFilterInterceptor {
    /**
    *判断用户是否登录,如果没有登录,只能访问用户登录界面,放行登录的方法 

    */

    @Override
    protected String doIntercept(ActionInvocation invocation) throws Exception {

    User user = (User) ServletActionContext.getRequest().getSession().getAttribute("loguser");

    if(user==null){
    return "login";
    }


    return invocation.invoke();
    }
    }

    2.配置拦截器类

    <interceptors>
    <interceptor name="myintercepter" class="com.bos.web.intercepter.ManagerIntercepter">
    <param name="excludeMethods">dologin</param>
    </interceptor>
    <interceptor-stack name="mystack">
    <interceptor-ref name="defaultStack"></interceptor-ref>
    <interceptor-ref name="myintercepter"></interceptor-ref>
    </interceptor-stack>
    </interceptors>
    <default-interceptor-ref name="myintercepter"></default-interceptor-ref>
    <!-- 全局结果集定义 -->
    <global-results>
    <result name="login">/login.jsp</result>
    </global-results>
    <!-- 需要进行权限控制的页面访问 -->
    <action name="page_*_*">
    <result type="dispatcher">/WEB-INF/pages/{1}/{2}.jsp</result>
    </action>

    展开全文
  • 自定义拦截器使用步骤: 1. 创建自定义类,实现HandlerInterceptor接口 package com.springmvc.interceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; ...

    自定义拦截器使用步骤:

    1. 创建自定义类,实现HandlerInterceptor接口

    package com.springmvc.interceptor;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.springframework.web.servlet.HandlerInterceptor;
    import org.springframework.web.servlet.ModelAndView;
    
    public class Myinterceptors implements  HandlerInterceptor{
    	
    	/*
    		该方法会在Controller业务方法执行之前调用,用于做权限验证等操作.
    	方法返回true/false来确定后续的方法和拦截器是否继续执行.
    	*/
    	@Override
    	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
    			throws Exception {
    		System.out.println("Myinterceptors: preHandle ");
    		return true;
    	}
    
    	/*
    		该方法会在Controller业务方法执行之后调用,用于对请求中的数据或者视图进行修改.
    	*/
    	@Override
    	public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
    			ModelAndView modelAndView) throws Exception {
    		
    		System.out.println("Myinterceptors: postHandle ");
    	}
    	
    	/*
    		该方法会在返回视图之后调用,用于资源释放操作.
    	*/
    	@Override
    	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
    			throws Exception {
    		System.out.println("Myinterceptors: afterCompletion ");
    	}
    	
    	
    }
    
    

    2. 在springmvc的配置文件中配置自定义拦截器

    	/*
    		<mvc:interceptors>
    			<bean class="自定义拦截器类名全称"></bean>
    		</mvc:interceptors>
    		表示对所有映射的请求处理时,该配置的拦截器都会生效
    	*/
    	<mvc:interceptors>
    		<bean class="com.springmvc.interceptor.Myinterceptors"></bean>
    	</mvc:interceptors>
    
    	/*
    		<mvc:interceptors>
    			<mvc:interceptor>
    				<mvc:mapping path="/interceptor1"/>
    				<bean class="自定义拦截器类名全称"></bean>
    			</mvc:interceptor>
    		</mvc:interceptors>
    		表示只只针对Path属性表示的映射的请求处理时,该配置的拦截器才 会生效
    	*/
    	<mvc:interceptors>
    		<mvc:interceptor >
    			<mvc:mapping path="/interceptor1"/>
    			<bean class="com.springmvc.interceptor.Myinterceptors"></bean>
    		</mvc:interceptor>
    	</mvc:interceptors>
    

    3. 同时配置多个拦截器时的调用顺序

    • 按照配置文件中的先后顺序依次调用生效拦截器的preHandler方法
    • 按照配置文件中的先后顺序逆序调用生效拦截器的postHandler方法
    • 按照配置文件中的先后顺序逆序调用生效拦截器的afterCompletion方法

    注意: 如果一个生效的拦截器调用了preHandler方法并且返回true,那么它一定会调用自己的afterCompletion方法。




    总结:Java编程中经常会有一些需要我们进行登录拦截的操作,或者实现,那么怎么用java代码实现一个拦截器呢?一般情况下实现拦截器需要两步(如上)。

    博主:点赞的都是帅锅,美女哦!!!💕💕💕

    展开全文
  • 创建自定义拦截器 创建自定义拦截器——SysInterceptor.java 继承HandlerInterceptorAdapter 实现prHandle() SysInterceptor.java源代码public class SysInterceptor extends HandlerInterceptorAdapter { @...

    创建自定义拦截器

    • 创建自定义拦截器——SysInterceptor.java
      • 继承HandlerInterceptorAdapter
      • 实现prHandle()
    SysInterceptor.java源代码
    public class SysInterceptor extends HandlerInterceptorAdapter {
    
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
                throws Exception {
            return super.preHandle(request, response, handler);
        }
    }
    springmvc-config.xml源代码
    <mvc:interceptors>
        <mvc:interceptor >
            <!-- 拦截路径指定 -->
            <mvc:mapping path="/sys/**"/>
            <bean class="interceptor.SysInterceptor" />
        </mvc:interceptor>
    </mvc:interceptors>

    以上仅为代码示例,并无任何可执行代码。

    下面是对HandlerInterceptor接口中声明的三个方法的方法说明

    • preHandle:预处理回调方法,实现处理器的预处理(如登录检查),第三个参数为响应的处理器(如我们上一章的Controller实现);
      • 返回值:true表示继续流程(如调用下一个拦截器或处理器);
      • 返回值:false表示流程中断(如登录检查失败),不会继续调用其他的拦截器或处理器,此时我们需要通过response来产生响应;
    • postHandle:后处理回调方法,实现处理器的后处理(但在渲染视图之前),此时我们可以通过modelAndView(模型和视图对象)对模型数据进行处理或对视图进行处理,modelAndView也可能为null。
    • afterCompletion:整个请求处理完毕回调方法,即在视图渲染完毕时回调,如性能监控中我们可以在此记录结束时间并输出消耗时间,还可以进行一些资源清理,类似于try-catch-finally中的finally,但仅调用处理器执行链中preHandle返回true的拦截器的afterCompletion。
    展开全文
  • 实现自定义拦截器 在实际的项目开发中,虽然 Struts2 的内建拦截器可以完成大部分的拦截任务,但是,一些与系统逻辑相关的通用功能(如权限的控制和用户登录控制等),则需要通过自定义拦截器实现。本节将详细讲解...

    实现自定义拦截器

    在实际的项目开发中,虽然 Struts2 的内建拦截器可以完成大部分的拦截任务,但是,一些与系统逻辑相关的通用功能(如权限的控制和用户登录控制等),则需要通过自定义拦截器实现。本节将详细讲解如何自定义拦截器。

    1.实现Interceptor接口

    在 Struts2 框架中,通常开发人员所编写的自定义拦截器类都会直接或间接地实现 com.opensymphony.xwork2.interceptor.Interceptor 接口。Interceptor 接口中的主要代码如下所示:

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

    从上述代码中可以看出,该接口共提供了以下三个方法。

    1)void init()
    该方法在拦截器被创建后会立即被调用,它在拦截器的生命周期内只被调用一次。可以在该方法中对相关资源进行必要的初始化。

    2)void destroy()
    该方法与 init() 方法相对应,在拦截器实例被销毁之前,将调用该方法释放和拦截器相关的资源,它在拦截器的生命周期内,也只被调用一次。

    3)String intercept(ActionInvocation invocation)throws Exception

    该方法是拦截器的核心方法,用于添加真正执行拦截工作的代码,实现具体的拦截操作,它返回一个字符串作为逻辑视图,系统根据返回的字符串跳转到对应的视图资源。每拦截一个动作请求,该方法就会被调用一次。

    该方法的 ActionInvocation 参数包含了被拦截的 Action 的引用,可以通过该参数的 invoke() 方法,将控制权转给下一个拦截器或者转给 Action 的 execute() 方法。

    2.继承抽象类AbstractInterceptor

    AbstractIntercepter 类实现了 Interceptor 接口,并且提供了 init() 方法和 destroy() 方法的空实现。使用时,可以直接继承该抽象类,而不用实现那些不必要的方法。AbstractInterceptor 类中定义的方法如下所示:

    public abstract class AbstractInterceptor implements Interceptor{
        public void init(){}
        public void destroy(){}
        public abstract String intercept (ActionInvocation invocation) throws Exception;
    }
    

    AbstractInterceptor 类已经实现了 Interceptor 接口的所有方法,一般情况下,只需继承 AbstractInterceptor 类,实现 interceptor() 方法就可以创建自定义拦截器。

    需要注意的是,只有当自定义的拦截器需要打开系统资源时,才需要覆盖 AbstractInterceptor 类的 init() 方法和 destroy() 方法。与实现 Interceptor 接口相比,继承 AbstractInterceptor 类的方法更为简单。

    3.继承MethodFilterInterceptor

    MethodFilterInterceptor提供了一个doIntercept方法供我们实现拦截器功能。

    
    public abstract class MethodFilterInterceptor extends AbstractInterceptor {
        /**
         * Subclasses must override to implement the interceptor logic.
         * 
         * @param invocation the action invocation
         * @return the result of invocation
         * @throws Exception
         */
        protected abstract String doIntercept(ActionInvocation invocation) throws Exception;
        
    }
    

    示例:

    import com.opensymphony.xwork2.ActionInvocation;
    import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;
    
    //继承:MethodFilterInterceptor 方法过滤拦截器
    //功能: 定制拦截器拦截的方法.
    //	定制哪些方法需要拦截.
    //	定制哪些方法不需要拦截
    public class MyInterceptor3 extends MethodFilterInterceptor{
    
    	@Override
    	protected String doIntercept(ActionInvocation invocation) throws Exception {
    		//前处理
    		System.out.println("MyInterceptor3 的前处理!");
    		//放行
    		String result = invocation.invoke();
    		//后处理
    		System.out.println("MyInterceptor3 的后处理!");
    		
    		return result;
    	}
    
    }
    
    展开全文
  • struts自定义拦截器三种方式

    千次阅读 2015-07-02 23:15:30
    struts自定义拦截器三种方式: 方式一、实现Interceptor 接口 public interface Interceptor extends Serializable{ public void init(); public void destroy(); public String intercep
  • SpringMVC拦截器与SpringBoot自定义拦截器 ...传统拦截器的写法 第一步创建一个类实现HandlerInterceptor接口,重写接口的方法。...SpringBoot实现自定义拦截器方法 实现自定义拦截器只需要3步: 1、创建我们自己的拦截
  • SpringMVC 中自定义拦截器
  • flume自定义拦截器

    2019-09-19 15:33:53
    1. 自定义拦截器实现说明 ...2. 自定义拦截器内部添加静态内部类,实现Builder接口,并实现其方法,接口完全限定名为:Interceptor.Builder 以下是最简单的代码示例(每个方法的作用都有注释说明):...
  • Struts2自定义拦截器

    2016-06-18 22:12:07
    Struts2自定义拦截器 概述 Struts2 拦截器在访问某个 Action 方法之前或之后实施拦截, Struts2 拦截器是 可插拔的, 拦截器是 AOP 的一实现。拦截器栈(Interceptor Stack): 将拦截器按一定的顺序联结成一条链...
  • 1、创建自定义拦截器实现 HandlerInterceptor(拦截器处理器) 下面展示一些 内联代码片。 /** * 创建自定义拦截器 * @author xiao_wu * @date 2020/10/20 13:11 */ @Slf4j public class MyInterceptor implements...
  • 自定义拦截器

    2015-08-07 11:24:13
    自定义拦截器的步骤及细节
  • 实现SpringBoot自定义拦截器

    万次阅读 多人点赞 2018-02-10 15:56:08
    第二步在XML中进行如下配置,就可以实现自定义拦截器了SpringBoot实现自定义拦截器方法:第一步创建一个类实现HandlerInterceptor接口,重写接口的方法,只是多了一个@Component注解,这个注解是为后面的使用时进行...
  • 本文主要是关于怎样自定义拦截器及通过自定义的拦截器来了解拦截器的生命周期. 二,自定义拦截器 1)写一个拦截器类HelloInterceptor,它实现了Interceptor接口. package cn.bighuan.a_interceptor; import ...
  • struts2自定义拦截器 拦截器生命周期: 随着程序的开始而创建,随着程序的结束而销毁 (不可能每个访问都创建一个拦截器) 方式一 实现Interceptor接口 public class MyInterceptor1 implements Interceptor...
  • struts2自定义拦截器

    千次阅读 2017-03-29 18:02:30
    在这里我们需要关注的是这一部分 struts在执行Action之前会先创建一个ActionInvocation实例,然后检查Action是否配置有拦截器,如果有按照拦截器顺序一个一个的执行,然后进入result结果视图,调用相关的jsp或其它...
  • struts2自定义拦截器并配置拦截器使其生效
  • flume常用的拦截器和自定义拦截器

    千次阅读 2019-03-29 14:11:16
    在我们公司的一个项目中,在手机日志信息的时候需要设计一个拦截器方便后面数据的清洗和分类,减轻集群的压力。因此深入的研究了一下flume的拦截器 Flume中的拦截器(interceptor),用户Source读取events发送到Sink...
  • Mybatis自定义拦截器

    千次阅读 2018-03-30 18:49:01
    定义 Mybatis 拦截器只需要实现 Interceptor 类, 并通过注解设置需要拦截的对象即可: type=&gt;mybatis 的四大对象:[ParameterHandler],[ResultSetHandler],[StatementHandler],[Executor]. me...
  • SpringMVC自定义拦截器与异常处理

    千次阅读 2017-08-24 20:42:17
    SpringMVC自定义拦截器与异常处理
  • 一、前言 在前面,我们在讲拦截器的时候也讲到了拦截器的调用顺序,会优先...二、自定义拦截器 自定义一个拦截器类,实现Interceptor接口,如下所示 /** * 添加公共参数 * * @author freak * @date 2019/3/1...
  • Sprinboot自定义拦截器

    千次阅读 2019-01-11 14:20:49
    Springboot在通过重载WebMvcConfigurationSupport的方法添加拦截器后会出现一个bug是的我们在application.properties配置的视图解析失效 我在application.properties的配置如下 spring.mvc.view.prefix=/views/ ...
  • Java自定义拦截器详细教程

    万次阅读 2018-10-31 10:59:29
    前言 Java编程中经常会有一些需要我们进行登录拦截的操作,或者实现,那么怎么用java代码实现一个...第一步:自定义拦截器 import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletR...
  • struts2自定义拦截器示例

    千次阅读 2014-03-02 22:13:47
    struts2自定义拦截器示例及步骤解释。
  • flume之自定义拦截器

    2018-12-23 21:48:02
    在flume接收数据时,有时候数据很杂乱,可以通过自定义拦截器,对数据进行拦截或者处理,这样就可以简单的对数据进行数据清洗了,下面是一个自定义的拦截器,把数据通过拦截器变成json格式的数据 在定义拦截器时...
  • Struts2--自定义拦截器

    千次阅读 2017-08-12 11:55:06
    拦截器作用和Filter类似。 它可以在action方法调用之前被调用,可以拦截请求,也可以放行请求,还可以在action方法执行完毕之后做一些处理。 Struts中已经给我们定义好了多个拦截器,可以满足我们的大部分需求。...
  • Spring MVC自定义拦截器

    2018-01-23 22:15:24
    2、本文讲解的是怎么自定义拦截器,并非讲解拦截器基本原理,如需了解拦截器原理等理论知识请移步其他教程,谢谢! 如需了解Spring MVC入门项目创建流程,请转Intellij IDEA创建spring MVC项目(博主带领你一步一步...
  • Flume 自定义拦截器

    千次阅读 2018-05-27 23:16:41
    做项目时遇到一个问题,需要对接收到的日志数据做复杂逻辑处理并将一条转换成多条。 对比了td-agent,filebeat、flume日志采集工具,td-...于是决定通过自定义flume拦截器实现这一功能。来增强对flume拦截器的认识。 ...
  • struts2默认拦截器与自定义拦截器

    千次阅读 2014-03-18 13:36:18
    拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作。拦截是AOP的一实现策略。在Webwork的中文文档的解释为——拦截器是动态拦截Action调用的...
  • Flume(自定义拦截器

    千次阅读 2019-02-28 14:34:07
    flume(自定义拦截器) 1、在pom.xml文件中导入依赖 &amp;amp;amp;lt;!-- flume核心依赖 --&amp;amp;amp;gt; &amp;amp;amp;lt;dependency&amp;amp;amp;gt; &amp;amp;amp;lt;groupId&...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 82,778
精华内容 33,111
关键字:

创建自定义拦截器的三种方法