当前位置: 首页 > news >正文

国内做网站的企业n加1网站建设

国内做网站的企业,n加1网站建设,网上怎么做网站赚钱,杭州vi设计策划一、基本介绍 过滤器 Filter 作为 Java 三大器之一#xff0c;在 Java Web 的使用中有很高的地位。所谓过滤器#xff0c;就是实现了 javax.servlet.Filter 接口的服务器端程序#xff0c;就是对事物进行过滤的。在 Web 中的过滤器#xff0c;当然就是对请求进行过滤#…一、基本介绍 过滤器 Filter 作为 Java 三大器之一在 Java Web 的使用中有很高的地位。所谓过滤器就是实现了 javax.servlet.Filter 接口的服务器端程序就是对事物进行过滤的。在 Web 中的过滤器当然就是对请求进行过滤我们使用过滤器就可以对请求进行拦截然后做相应的处理实现许多特殊功能。如登录控制权限管理过滤敏感词汇等。 使用Filter完整的流程是Filter对用户请求进行预处理接着将请求交给Servlet进行预处理并生成响应最后Filter再对服务器响应进行后处理。 二、过滤器原理 当我们使用过滤器时过滤器会对游览器的请求进行过滤过滤器可以动态的分为 3 个部分1. 放行之前的代码2. 放行3. 放行后的代码这 3 个部分分别会发挥不同作用。 第一部分代码会对游览器请求进行第一次过滤在 HttpServletRequest 到达 Servlet 之前拦截客户的 HttpServletRequest。 第二部分根据需要检查 HttpServletRequest也可以修改 HttpServletRequest 头和数据如果还有过滤器那么就继续交给下一个过滤器。 第三部分在 HttpServletRequest 到达客户端之前拦截 HttpServletResponse对返回的 Web 资源再次进行过滤处理。 我们使用过滤器也就是说不止请求会经过过滤器我们的响应也会经过过滤器。 三、过滤器的作用 * Examples that have been identified for this design are* 1) Authentication Filters, 即用户访问权限过滤* 2) Logging and Auditing Filters, 日志过滤可以记录特殊用户的特殊请求的记录等* 3) Image conversion Filters,图像转换过滤器* 4) Data compression Filters 数据转换* 5) Encryption Filters 安全加密* 6) Tokenizing Filters 词法分析* 7) Filters that trigger resource access events 资源访问事件触发过滤器* 8) XSL/T filters * 9) Mime-type chain Filter 文件类型链过滤器 四、过滤器Filter接口 我们学习过滤器肯定就要先看一下官方给我们提供的过滤器接口。下面我们使用 Idea 来查看 Filter。 Filter 有如下几个方法 void init(FilterConfig filterConfig) 用于完成过滤器的初始化。 doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) 实现过滤功能将该方法对每个请求增加额外的处理。 void destroy() 用于过滤器销毁前完成某些资源的回收。 五、使用过滤器Filter 先自定义 FirstFilter 类实现 Filter 接口 public class FirstFilter implements Filter {Override public void init(FilterConfig filterConfig) throws ServletException {Filter.super.init(filterConfig); System.out.println(--------FirstFilter 初始化完成-------); }Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println(------对 First request 进行过滤 --------);//下面这行代码就是放行 filterChain.doFilter(servletRequest, servletResponse); System.out.println(------对 First response 进行过滤 --------);}Override public void destroy() {Filter.super.destroy(); System.out.println(firstFilter 已销毁); }}再自定义 SecondFilter 类实现 Filter 接口 public class SecondFilter implements Filter {Override public void init(FilterConfig filterConfig) throws ServletException {Filter.super.init(filterConfig); System.out.println(--------SecondFilter 初始化完成-------); }Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println(------对 Second request 进行过滤 --------);//下面这行代码就是放行filterChain.doFilter(servletRequest, servletResponse); System.out.println(------对 Second response 进行过滤 --------);}Override public void destroy() {Filter.super.destroy(); System.out.println(SecondFilter 已销毁); }}再修改 WebConfig 配置类 Configuration public class WebConfig {Bean public FilterRegistrationBean firstFilterRegistrationBean() {FilterRegistrationBeanFilter filterFilterRegistrationBean new FilterRegistrationBean(); // 对哪些路径进行过滤filterFilterRegistrationBean.addUrlPatterns(/*); filterFilterRegistrationBean.setOrder(1); // 设置优先级 ,数字越小优先级越高FirstFilter filter new FirstFilter(); // 绑定过滤器 filterFilterRegistrationBean.setFilter(filter); return filterFilterRegistrationBean; }Bean public FilterRegistrationBean secondFilterRegistrationBean() {FilterRegistrationBeanFilter filterFilterRegistrationBean new FilterRegistrationBean();filterFilterRegistrationBean.addUrlPatterns(/hello); filterFilterRegistrationBean.setOrder(2); // 设置优先级// 绑定过滤器SecondFilter filter new SecondFilter(); filterFilterRegistrationBean.setFilter(filter); return filterFilterRegistrationBean; }} 启动服务器然后我们在浏览器中随便输入一个 url 地址进行访问 浏览器输出  控制台输出 ------对 request 进行过滤 --------- ------对 response 进行过滤 -------- 现在我们就已经可以得出两个结论了过滤器并不会管资源是否存在而只会对配置的拦截路径进行拦截。拦截不仅会对请求进行拦截而且还会对相应进行拦截。 六、多个 Filter 的执行顺序 上面我们配置了 2 个过滤器那么我们怎么知道那个过滤器先执行呢 启动服务器然后我们浏览器输入 http://localhost:8080/hello 来进行访问查看控制台输出 ------对 First request 进行过滤 -------- ------对 Second request 进行过滤 -------- ------对 Second response 进行过滤 -------- ------对 First response 进行过滤 -------- 我们可以看见 FirstFilter 先进行过滤然后交给 SecondFilter 然后访问资源然后 SecondFilter 对响应进行过滤然后 FirstFilter 对响应进行过滤。图示如下   七、过滤器Filter生命周期 Filter 有三个阶段分别是初始化拦截和过滤销毁。 初始化阶段web 应用程序启动时web 服务器将创建 Filter 的实例对象并调用其 init 方法完成对象的初始化功能从而为后续的用户请求作好拦截的准备工作filter 对象只会创建一次init 方法也只会执行一次。通过 init 方法的参数可获得代表当前 filter 配置信息的 FilterConfig 对象永远只调用一次拦截和过滤阶段只要请求资源的路径和拦截的路径相同那么过滤器就会对请求进行过滤这个阶段在服务器运行过程中会一直循环不管第几次都在调用doGet()doPost() 方法之前。销毁阶段当服务器Tomcat关闭时Web 容器调用 destroy 方法销毁 Filter。destroy 方法在 Filter 的生命周期中仅执行一次。在 destroy 方法中可以释放过滤器使用的资源(永远只调用一次) 八、FilterConfig 和 FilterChain 说明 FilterConfig 和 FilterChain 这2个对象是由服务器 (Tomcat) 在创建和调用 Filter 对象时所传入的这2个对象十分有用FilterConfig 对象可以读取我们配置的初始参数FilterChain 可以实现多个 Filter 之间的连接。 1、FilterConfig  先看一下源码 public interface FilterConfig {String getFilterName();ServletContext getServletContext();String getInitParameter(String var1);EnumerationString getInitParameterNames(); } 里面的方法就 4 个下面我们分别进行讲解 getFilterName()获取 filter 的名称getServletContext()获取 ServletContextgetInitparamter(String var1)获取配置的初始参数的值getInitParamterNames()获取配置的所有参数名称 2、FilterChain 先看一下源码 public interface FilterChain {void doFilter(ServletRequest var1, ServletResponse var2) throws IOException, ServletException; } 我们查看源码可以发现 FilterChain 就只有一个方法其实这个方法就是用来对拦截进行放行的如果有多个拦截器那么就会继续调用下一个 Filter 进行拦截。doFilter 方法需要传入个参数一个是 ServletRequest一个是 ServletResponse 参数这个直接传入进行。 Tomcat 在调用过滤器时默认就会传入 Request 和 Response这个参数封装了请求和响应我们直接使用就行。ServletResquest 和 ServletResponse 可以直接强转成 HttpServletRequest 和 HttpServletResponse然后使用相应的方法。 将 ServletRequest 转成 HttpServletRequest Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {HttpServletRequest httpServletRequest (HttpServletRequest) servletRequest;} 九、参考文档 JavaWeb 过滤器 (Filter) 详解
http://wiki.neutronadmin.com/news/338588/

相关文章:

  • 网站开发架构图泰兴做网站电话
  • 无锡市建设安全监督网站网页广告怎么去除
  • 新手建站网站开发授权书
  • 建设银行公户网站网站建设怎么好
  • 万盛经开区建设局官方网站做网站广告哪家好
  • 网站建设公司兴田德润i优惠吗商城网站素材
  • 网站制作收费明细表百度推广业务员电话
  • 建站步骤图网络营销有必要学吗
  • 郑州虚拟货币网站开发订单网站模块
  • 网站建设代码上海网站建设的报价
  • 制作网站平台玉器珠宝做网站
  • 批量网站建设网站 优化 分析
  • 基于python网站开发重庆网站公司设计方案
  • 番禺电商网站建设北京网站制作案例
  • 哪个网站做二手叉车回收好建设工程价款结算暂行办法
  • 有什么网站可以接设计做金融专业主要学什么
  • 岳阳网站开发公司推荐wordpress去掉首页
  • server2008做DNS与网站怎样做网站推广
  • 文化传播公司做网站宣传好吗做网站一定要云解析吗
  • 推荐几个看黄的网站数据库与网站
  • 骏驰网站建设梦幻西游网页版微信区和app互通吗
  • 帮别人做违法网站会判刑吗做视频网站用什么模板
  • 可以做查询功能的网站当今做啥网站致富
  • 房地产公司网站建设报价方案做图的网站
  • 有效的网站推广方案wordpress双语切换
  • 网站建设开发费用怎样入账网易企业邮箱免费和收费区别
  • 滤芯网站怎么做校园超市网站开发背景
  • 三合一网站建设用途无代码开发平台全免费
  • 建设综合信息网站需要多少钱网页版qq聊天登录入口
  • 章丘市网站建设seo网站的总体风格包括