- 浏览: 800479 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (480)
- Spring (12)
- Hibernate (8)
- Struts2 (4)
- Java 基础-JDK-类-接口-URI-专题研究 (27)
- 线程、线程池、多线程高并发高可用、Socket通信 (15)
- Oracle数据库 (20)
- 一般-前端js-html-其它 (25)
- JYSK-互联网金融、金融科技、支付、公司、新闻等等 (8)
- Ajax-jQuery开源框架 (7)
- Json-轻量级的数据交换格式 (14)
- JavaScript (15)
- Jsp、Servlet、Servlet+JSP+JavaBean开发模式(MVC) (18)
- Html-JavaScript-前端-调用接口 (12)
- Sql Server 2005 (6)
- 正则表达式 (2)
- Java tools (18)
- 加签与验签、加密与解密 (3)
- Ajax技术核心-xmlHttpRequest(简称XHR) (6)
- xml-数据交换格式 (3)
- 信息采集 (1)
- Http - Https - HttpClient - httpCore-SSL-TLS (10)
- HtmlParser (2)
- 标签库 (1)
- SMS (2)
- jxl-导入导出 (4)
- poi-导入导出 (2)
- 定时器Timer+Quartz (6)
- 工作流引擎JBPM3.2.3 (4)
- 工作流引擎JBPM4 (0)
- 数据源-JNDI (0)
- tomcat、weblogic等应用服务器 (6)
- 工作流引擎jbpm5 (1)
- 搜索引擎Lucene (1)
- ant (1)
- 大数据-HBase (2)
- bigtable (0)
- 数据库设计 (4)
- jquery tab (0)
- mybatis (5)
- jquery ui 1.10.3 (5)
- Jboss7 (1)
- 规则引擎drools (0)
- 工作流引擎Activiti5 (0)
- 数据库-用户自定义函数 (0)
- 数据库-存储过程 (2)
- 数据库-视图 (0)
- 数据库-触发器 (0)
- 数据库-sql (2)
- highcharts-图表工具 (1)
- sql server 2008 (6)
- 诗词-工作室 (2)
- 数据割接 (1)
- GIS-地理信息系统 (2)
- RS-遥感技术 (1)
- GPS-全球定位系统 (1)
- java整合flex_RIA开发 (3)
- C#编程语言 (5)
- webservice_axis2_cxf_soap_wsdl (2)
- sql语句 (3)
- Flex_WebService_GIS (25)
- PHP编程语言 (0)
- ExtJS4.2 (1)
- Spring mvc (5)
- EasyUI1.4.2 (16)
- 日期时间工具类 (4)
- 随机数 (1)
- Arcgis api for js (0)
- Mysql数据库 (9)
- 移动互联网 java html5/flash socket netty (0)
- API接口 (1)
- AndroidStudio (0)
- Git (2)
- Maven (5)
- IDEA (0)
- 大数据-Hadoop (2)
- JPA (0)
- Spring boot (4)
- JSF (0)
- nginx_lua_module_redis (2)
- Activiti (1)
- bootstrap (1)
- AngularJS (10)
- 数据库-索引 (1)
- Linux及其连接工具SSH (4)
- java日志管理 (2)
- islider滑动控件 (1)
- jquery (1)
- 异常处理Exception (1)
- 秒杀与类秒杀系统 (1)
- 连接数据库、数据库连接池 (4)
- 数据库-临时表 (1)
- 软件设计模式-单例、多例、代理、工厂、观察者 (3)
- 集合框架 (5)
- 人工智能--Artificial intelligence、神经网络算法、机器学习 (1)
- 分布式应用 (1)
- SOA服务-Dubbo框架-Thrift框架 (2)
- Zookeeper分布式服务框架 (2)
- intellij idea (1)
- python编程语言 (0)
- 消息队列_MQ (0)
- 消息队列_RabbitMQ (2)
- 消息队列_ActiveMQ (1)
- 消息队列_Kafka (2)
- 缓存_Redis (4)
- 缓存_Memcache (0)
- 缓存_Ehcache (0)
- ivy-ivyde (1)
- google-protocol buffers (1)
- 正向代理-正向代理服务器 (1)
- 反向代理-反向代理服务器 (1)
- JVM内存模型 (0)
- Thunder框架 (1)
- NIO-非阻塞式IO (0)
- 软件测试、性能测试 (1)
- 序列化、Serializable接口、Externalizable接口 (3)
- 线程池-ExecutorService-ThreadPoolExecutor (1)
- web.xml (1)
- java开发-java工具-实用工具网站 (6)
- 医疗 (1)
- Filter-过滤器 (2)
- Unicode码-双字节字符编码 (1)
- OpenResty (1)
- 计算机网络 (1)
- eclipse_myeclipse_intellij idea (3)
- Enum (1)
- 大数据--Big Data (1)
- 云计算--Cloud computing (1)
- Elastic-Job (1)
- Redis (2)
- 文件流-IO操作 (6)
- 计算机基础知识 (1)
- Hessian-二进制RPC协议 (1)
- String类 (3)
- BigDecimal类 (1)
- java重要接口 (1)
- ReactJS (1)
- 跨域问题 (0)
- Map (1)
- 注解 (1)
- ASCII码-单字节字符编码 (1)
- 微服务、微服务架构 (2)
- RPC协议、RPC服务、RPC框架 (0)
- java反射 (1)
- java项目之classpath (1)
- 经典算法-树 (1)
- listener-监听器 (1)
- Interceptor-拦截器 (1)
- pojo javabean (2)
- 计算机科学与技术-进阶 (1)
- 代码规范与文档编写 (1)
- UML-统一建模语言 (1)
- 对接微信、支付宝 (3)
- 压力测试 (1)
- 办公软件-Excel (1)
- 办公软件-PPT (0)
- UTF8、GBK编码 (1)
- 微服务架构:Spring Cloud架构-Dubbo架构 (6)
- Nginx (1)
- 点滴业务 (1)
- form表单-json数据-转换与接口调用 (1)
- Junit单元测试 (1)
- 大数据-Spark (1)
- 大数据-Storm (1)
- 数据库事务-Spring事务 (0)
- elasticsearch (1)
- windows (1)
最新评论
<!-- 测试公共校验拦截器 --> <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/crm/**"/> <mvc:exclude-mapping path="*/crm/resource/download,*/crm/home/homeInit"/> <bean class="com.test.interceptor.DemoInterceptor"/> </mvc:interceptor> </mvc:interceptors>
import java.io.PrintWriter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; import com.alibaba.fastjson.JSONObject; import com.test.exception.DemoValidateException; import com.test.common.PublicResponse; import com.test.bean.UserInfo; import com.test.service.CrmService; /** * 测试公共校验拦截器 */ public class DemoInterceptor extends HandlerInterceptorAdapter { private static final Log logger = LogFactory.getLog(DemoInterceptor.class); @Autowired private CrmService crmService; /** * 在业务处理器处理请求之前被调用 */ @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { PrintWriter out=null; String logStr="DemoInterceptor.preHandle..."; logger.info(logStr+"拦截器preHandle方法"); try{ UserInfo userInfo=crmService.validateMethod(request); logger.info(logStr+String.format("拦截校验通过:token=%s, servletPath=%s, uri=%s, url=%s", request.getHeader("TOKEN_KEY_NAME_DEMO"),request.getServletPath(),request.getRequestURI(),request.getRequestURL())); /* 打印结果: token=CEEADEC1C6591A84E08DCE54136608BC3, servletPath=, //取不到 uri=/crm/stu/init, url=http://192.168.12.100:9898/crm/stu/init */ request.setAttribute("CRM_REQUEST_USERINFO_DEMO", userInfo); return true; }catch(DemoValidateException e){ logger.error(logStr+"公共校验异常"); PublicResponse rsp=new PublicResponse(); rsp.setRspCode(e.getCode()); rsp.setRspMsg(e.getMessage()); response.setContentType("application/json"); response.setCharacterEncoding("UTF-8"); out = response.getWriter(); out.print(JSONObject.toJSONString(rsp)); logger.info(logStr+String.format("拦截校验未通过:token=%s, rsp=%s", request.getHeader("TOKEN_KEY_NAME_DEMO"),JSONObject.toJSONString(rsp))); out.flush(); }finally { if(null!=out){ out.close(); } } return false; } /** * 在业务处理器处理请求完成之后,生成视图之前执行 */ @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { String logStr="DemoInterceptor.postHandle..."; logger.info(logStr+"拦截器postHandle方法"); super.postHandle(request, response, handler, modelAndView); } /** * 在DispatcherServlet完全处理完请求之后被调用,可用于清理资源 */ @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { super.afterCompletion(request, response, handler, ex); } /** * 处理异步请求(当Controller中有异步请求方法的时候会触发该方法) */ @Override public void afterConcurrentHandlingStarted(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { super.afterConcurrentHandlingStarted(request, response, handler); } }
@RequestMapping(value = "/stu/init", method = RequestMethod.GET) @ResponseBody public PublicResponse testControllerMethod(final HttpServletRequest request, final HttpServletResponse response){ PublicResponse rsp=new PublicResponse(); //add code here try{ //从拦截器过来的request中获取UserInfo UserInfo stu=(UserInfo)request.getAttribute("CRM_REQUEST_USERINFO_DEMO"); logger.info(logStr+"测试stu="+stu.toString()); }catch(Exception e){ e.printStackTrace(); logger.error("接口异常"); } logger.info("接口响应rsp="+rsp.toString()); return rsp; }
参考博客:
-- SpringMvc中使用Interceptor与Filter的注意点
https://www.cnblogs.com/FlyHeLanMan/p/6640941.html
发表评论
-
Spring MVC的异步模式
2018-05-28 11:19 870引用参考 1、高性能的关键:Spring MVC的异步模式 h ... -
spring mvc
2017-09-08 18:22 394参考博客: 【基础】 --springmvc处理返回的JSON ... -
spring mvc导入excel
2016-05-16 10:55 843前台jsp: <form id="i ... -
spring mvc 项目运行报错:元素类型为 "resultMap" 的内容必须匹配 "(constructor?,id*,result
2015-08-14 15:57 6982报错内容: Bean creation exception o ...
相关推荐
本实验报告将探讨如何利用 SpringMVC 的拦截器(Interceptor)来实现用户登录权限验证,确保只有已登录的用户才能访问特定的受保护资源。 首先,我们来看一下实验的基本步骤: 1. 创建 `User` 类:这是表示用户...
- 自定义拦截器需要继承`HandlerInterceptor` 或 `HandlerInterceptorAdapter` 类,并重写相关方法。 - `preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)`:在请求处理之前...
1. **定义拦截器类**:创建一个实现了Spring MVC的`HandlerInterceptor`接口的类,或者继承`HandlerInterceptorAdapter`抽象类。在这个类中,你需要重写`preHandle()`方法,进行登录验证逻辑。 2. **实现登录验证...
要创建自定义拦截器,你需要继承 `HandlerInterceptor` 或实现 `HandlerInterceptorAdapter` 类。这两个类都提供了三个核心方法: 1. `preHandle(HttpServletRequest request, HttpServletResponse response, ...
同时,多个拦截器可以按照指定顺序执行,通过`HandlerInterceptorAdapter`还可以简化拦截器的实现。 在实际开发中,`Interceptor_demo`这个压缩包文件可能包含了示例代码,包括Interceptor的实现以及相关的配置文件...
在这个"SpringMVC拦截器"的实践中,我们将探讨如何实现一个用于登录验证的拦截器。 首先,我们需要创建一个自定义的拦截器类,该类需要继承自Spring MVC的`HandlerInterceptor`接口或实现`...
创建一个Spring MVC拦截器需要实现`HandlerInterceptor`接口或者继承`HandlerInterceptorAdapter`抽象类。例如,我们创建一个名为`LoggingInterceptor`的拦截器: ```java public class LoggingInterceptor extends...
在Spring MVC中,拦截器接口由`HandlerInterceptor`定义,而`HandlerInterceptorAdapter`类则提供了一个适配器模式的默认实现,简化了拦截器的开发过程。`HandlerInterceptor`接口包含以下三个核心方法: 1. **`...
SpringMVC拦截器是Spring MVC框架中用于处理请求和响应之间的一种机制,它允许开发者在请求到达控制器之前或之后执行一些额外的操作。拦截器对于资源和权限管理至关重要,因为它们可以实现诸如登录检查、访问控制、...
通过实现`HandlerInterceptor`接口或者继承`HandlerInterceptorAdapter`抽象类,开发者可以定义自己的拦截器。拦截器通常用于实现如登录检查、权限验证、日志记录、性能统计等跨切面的功能。 1. 拦截器的注册:拦截...
首先,我们需要创建一个自定义的拦截器类,该类通常会实现Spring MVC提供的`HandlerInterceptor`接口或继承`HandlerInterceptorAdapter`抽象类。在这个示例中,我们可以定义一个名为`LoginInterceptor`的类,如下: ...
### Java实训教程知识点详解——SpringMVC拦截器 #### 一、SpringMVC概述与应用场景 SpringMVC作为Spring框架中的一个模块,主要用于构建Web应用。它是一个基于MVC(Model-View-Controller)设计模式的轻量级框架...
在实际开发中,如果需要自定义拦截器,可以通过实现HandlerInterceptor接口或者继承HandlerInterceptorAdapter抽象类来实现。例如,一个自定义的AuthInterceptor拦截器,可以在preHandle方法中实现用户权限验证,...
Spring MVC的拦截器基于AOP(面向切面编程)原理,它们通过实现`HandlerInterceptor`接口或继承`HandlerInterceptorAdapter`抽象类来定义。拦截器链的概念使得多个拦截器可以按照特定顺序执行,每个拦截器都可以决定...
要创建一个自定义的拦截器,你需要继承`HandlerInterceptorAdapter`类,并重写其中的三个方法: 1. `preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)`: 在目标处理器执行前...
自定义拦截器是扩展Spring MVC功能、添加自定义行为的一种常见方式。以下是对自定义拦截器实现步骤的详细解释: ### 1. 自定义拦截器类 #### 1.1 继承 `HandlerInterceptorAdapter` 你可以选择继承`...
在Spring MVC中,拦截器是通过实现`HandlerInterceptor`接口或者继承`HandlerInterceptorAdapter`抽象类来创建的。 `HandlerInterceptor`接口定义了三个方法: 1. `preHandle(HttpServletRequest request, ...
在Spring MVC框架中,Interceptor(拦截器)是一个强大的工具,用于在请求被控制器处理之前或之后执行特定的逻辑。它们可以用来实现通用的功能,如权限验证、日志记录、性能统计等,避免在每个控制器方法中重复编写...
在Spring MVC中,Interceptor(拦截器)是一种强大的机制,它允许开发者在请求处理前后执行自定义逻辑,而不必侵入到Controller代码中。本篇文章主要探讨了Interceptor的使用及其源码解析,帮助深入理解其工作原理。...
定义一个拦截器需要继承`HandlerInterceptor`接口或实现`HandlerInterceptorAdapter`抽象类,并重写`preHandle()`, `postHandle()` 和 `afterCompletion()` 方法。在Spring MVC配置中,通过`<mvc:interceptors>`标签...