- 浏览: 800406 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (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)
最新评论
1、配置Filter
2、Filter类
<!-- AuthFilter --> <filter> <filter-name>authFilter</filter-name> <filter-class>com.crm.filter.AuthFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>authFilter</filter-name> <url-pattern>/crm/*</url-pattern> </filter-mapping>
2、Filter类
import java.io.IOException; import java.io.PrintWriter; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; import com.alibaba.fastjson.JSONObject; /** * 权限校验过滤器 */ public class AuthFilter implements Filter{ private static final Logger logger = LoggerFactory.getLogger(AuthFilter.class); private CrmService crmService; private static String encoding;//不能用final修饰 @Override public void init(FilterConfig filterConfig) throws ServletException { String logStr="AuthFilter.init..."; encoding=filterConfig.getInitParameter("encoding"); logger.info(logStr+"初始化encoding="+encoding); //Filter中不能直接获取spring中的service //用注解的方式无法注入crmService,打印日志如下:“AuthFilter.doFilter...过滤处理, commonService=null” ApplicationContext context=WebApplicationContextUtils.getRequiredWebApplicationContext(filterConfig.getServletContext()); crmService=(CrmService) context.getBean("crmService"); } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { String logStr="AuthFilter.doFilter..."; logger.info(logStr+"过滤处理"); HttpServletRequest request=(HttpServletRequest) servletRequest; HttpServletResponse response=(HttpServletResponse) servletResponse; request.setCharacterEncoding(encoding); // PrintWriter out=null; 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()));//serveletPath拿不到 request.setAttribute("CRM_REQUEST_USERINFO_DEMO", userInfo); filterChain.doFilter(request, response); }catch(DemoValidateException e){ //公共校验异常 logger.error(logStr+"接口公共校验异常"); BaseResponse rsp=new BaseResponse(); rsp.setErrCode(e.getCode()); rsp.setErrMsg(e.getMessage()); //响应 response.setContentType("application/json"); response.setCharacterEncoding(encoding); 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(); } } } @Override public void destroy() { String logStr="AuthFilter.destroy..."; logger.info(logStr+"销毁过滤器"); } }
相关推荐
Spring MVC的拦截器基于Servlet API的Filter和HandlerInterceptor接口,但相比Filter,Interceptor更关注于业务逻辑,更易于与Spring MVC的其他组件集成。 接下来,我们来创建一个简单的自定义拦截器。首先,我们...
SpringMVC拦截器是实现登录认证的一种常见方法,它允许开发者在请求被实际处理之前或之后执行特定的逻辑。本文将深入探讨如何利用SpringMVC拦截器来实现这一功能。 首先,了解SpringMVC的核心组件是必要的。...
在实际开发中,`Interceptor_demo`这个压缩包文件可能包含了示例代码,包括Interceptor的实现以及相关的配置文件,帮助开发者更好地理解和实践Spring MVC的拦截器功能。通过阅读和学习这些示例,开发者可以快速掌握...
过滤器是Java Servlet规范的一部分,通过实现javax.servlet.Filter接口来创建。过滤器在请求到达目标Servlet或JSP之前进行拦截,对请求和响应进行修改,或者完全阻止请求。它们遵循一个预定义的生命周期,包括初始化...
首先,了解拦截器(Interceptor)在Spring MVC中的角色。拦截器是Spring MVC提供的一种AOP(面向切面编程)特性,允许我们在请求处理之前、之后或者在视图渲染之后进行一些预处理或后处理操作。我们可以利用拦截器来...
在Spring MVC框架中,拦截器(Interceptor)是一种用于处理请求和响应之间通用逻辑的机制,例如权限检查、日志记录等。本示例主要展示了如何创建一个登录验证拦截器,确保只有登录过的用户才能访问特定的页面。 ...
SpringMVC拦截器可以用来执行一些通用的操作,如权限校验、日志记录、请求处理时间统计等。 拦截器配置及使用方法主要涉及以下几点: 1. 拦截器应用场景 拦截器在实际开发中有很多常见的应用场景。例如: - 日志...
我们可以创建一个拦截器接口和实现,处理预处理和后处理任务。 通过以上步骤,我们可以手动实现Spring MVC的基本功能。这不仅加深了对Spring MVC的理解,也有助于我们在实际开发中更加灵活地使用和扩展该框架。在`...
SpringMVC 通过拦截器实现 IP 黑名单 SpringMVC 是一款基于 Java 语言的 Web 应用程序框架,它提供了许多强大的功能和灵活的配置方式。拦截器是 SpringMVC 中的一种机制,用于在请求处理过程中的某个点截断请求,并...
过滤器的实现方式是自定义的过滤器都必须实现javax.Servlet.Filter接口,并重写接口中定义的三个方法:init、destroy和doFilter。init方法用于完成Filter的初始化,destroy方法用于Filter销毁前,完成某些资源的回收...
"springMVC拦截器HandlerInterceptor用法代码示例" springMVC拦截器HandlerInterceptor是一种非常重要的技术,它可以帮助我们拦截用户的请求,从而知道页面请求的是哪个class的哪个方法。本文将详细介绍springMVC...
过滤器需要实现`javax.servlet.Filter`接口,包含三个方法: 1. `doFilter(ServletRequest request, ServletResponse response, FilterChain chain)`: 这是过滤器的核心方法,通过`chain.doFilter(request, ...
7. **拦截器(Interceptor)**:可以添加自定义拦截器,对请求进行预处理或后处理,例如权限检查、日志记录等。 8. **转换器与格式化器(Converter & Formatter)**:这些组件用于在模型和HTTP请求之间自动转换数据类型...
SpringMVC 用户登录权限验证实现过程解析 本文主要介绍了 SpringMVC 中用户登录权限验证的实现过程解析,通过示例代码介绍了非常详细,对大家的学习或者工作具有一定的参考学习价值。 一、Interceptor 概述 在 ...
6. **Interceptor**:拦截器,可以实现预处理和后处理,例如权限检查、日志记录等。 **总结** Spring MVC 是一款强大的 Web 开发框架,它的 "Hello, World!" 程序只是一个简单的起点。随着对框架的深入学习,你...
在SpringBoot中,我们可以通过实现javax.servlet.Filter接口或使用注解来定义过滤器。过滤器的主要方法包括init、doFilter、destroy。 示例代码: ```java @WebFilter(filterName="customFilter", urlPatterns="/*...
9. **Interceptor**:拦截器,允许在请求处理前后执行自定义逻辑,如权限验证、日志记录等。 **关键配置:** 1. **web.xml**:通常会配置 DispatcherServlet,以及可能的 ContextLoaderListener,用于初始化 Spring...
12. **拦截器(Interceptor)**:SpringMVC的拦截器可以实现预处理和后处理逻辑,比如登录检查、权限控制、性能监控等。 13. **国际化与主题**:SpringMVC支持多语言和主题切换,通过消息源和主题解析器实现。 14....
SpringMVC中基于Token防止表单重复提交方法是指通过在SpringMVC配置文件中添加拦截器配置,来拦截页面请求和表单提交请求,以防止表单重复提交。下面是该方法的实现思路和实现方式: 实现思路: 1. 在SpringMVC...