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

网站建设中忽略的字体侵权行为云浮市做网站的公司

网站建设中忽略的字体侵权行为,云浮市做网站的公司,佛山网站建设开发团队,如何做返利网站前言#xff1a;在工作中#xff0c;遇到需要记录日志的情况#xff0c;不知道该选择过滤器还是拦截器#xff0c;故总结了一下。 servlet 过滤器 定义 java过滤器能够对目标资源的请求和响应进行截取。过滤器的工作方式分为四种 应用场景 可以通过 doFilter 方法的 reques… 前言在工作中遇到需要记录日志的情况不知道该选择过滤器还是拦截器故总结了一下。 servlet 过滤器 定义   java过滤器能够对目标资源的请求和响应进行截取。过滤器的工作方式分为四种 应用场景   可以通过 doFilter 方法的 request、response 提前过滤一些不想要的信息统一设置一些参数、统一设置字符集、控制权限是否登录等。 配置   !-- 定义Filter --filter!-- Filter的名字 --filter-nameloginFilter/filter-name!-- Filter的实现类 --filter-classcom.yule.common.filters.LoginFilter/filter-class/filter!-- 定义Filter拦截的URL地址 --filter-mapping!-- Filter的名字 --filter-nameloginFilter/filter-name!-- Filter负责拦截的URL 全部以/的请求,如果/*,将会所有的请求--url-pattern/*/url-pattern/filter-mapping 过滤器的4种工作方式 filter-mappingfilter-namemyFilter/filter-nameservlet-name目标资源/servlet-namedispatcherREQUEST/dispatcher /filter-mapping   四中工作方式通过配置 dispatcher 标签来决定 request 过滤器不配 dispatcher 标签或者配置为 dispatcherREQUEST/dispatcher 。说明只有直接访问该目标资源时该过滤器才会起作用对转发到该目标资源的请求将忽略不处理。forward 过滤器配置为 dispatcherFORWARD/dispatcher 。表示对转发到目标资源的请求过滤如果直接访问目标资源过滤器则不起作用。include 过滤器配置为 dispatcherINCLUDE/dispatcher 。表示对包含了目标资源的请求过滤如果直接访问目标资源则此过滤器将不起作用 include 包含以下语句 在 JSP 页面中的动作jsp:include page....... 在 Java 代码中的 request.getRequestDispatcher(....).include 注意如果目标资源一通过 % include file目标资源二% 指令包含这时此过滤器不工作因为这个是指令在JSP 编译时插入一个包含文本或代码的文件这个包含的过程是静态的。 error 过滤器配置为 filter-mappingfilter-namemyFilter/filter-nameurl-pattern/error.jsp/url-patterndispatcherERROR/dispatcher /filter-mappingerror-pageerror-code404/error-codelocation/error.jsp/location /error-page 当我们访问一个web目标资源时如果服务器没有找到该目标资源那么服务器就会给出一个404错误代码。如果我们给404错误代码定义一个页面那么当404发生时就会调用该页面。 当我们访问一个不存在的文件时就会访问error.jsp但是配置了过滤器对错误页面进行过滤所以过滤器先接受到请求然后再转发给error.jsp。 如果我们访问一个已经存在的页面会不会调用error.jsp呢如果这个页面中有response.sendError(404,出错了);那么该错误页面仍然会被调用过滤器也会工作。 执行顺序   根据 web.xml 的代码顺序来决定过滤器的执行顺序。Filter 链 一个Web应用中可以编写多个Filter这些 Filter 组合起来称之为一个Filter链。   当第一个 Filter 的 doFilter 方法被调用时web 服务器会创建一个代表 Filter 链的 FilterChain 对象传递给该方法。在 doFilter 方法中如果调用了 FilterChain 对象的 doFilter 方法则 web 服务器会检 FilterChain 对象中是否还有 filter 如果有则调用第下一个 filter如果没有则调用目标资源。   init() 方法和 destroy() 方法随着项目的启动和关闭才会被调用且仅一次。 举个栗子   web.xml 中 !-- 定义Filter --filter!-- Filter的名字 --filter-namedemoFilter/filter-name!-- Filter的实现类 --filter-classcom.yule.common.filters.DemoFilter/filter-class/filter!-- 定义Filter拦截的URL地址 --filter-mapping!-- Filter的名字 --filter-namedemoFilter/filter-name!-- Filter负责拦截的URL 全部以/的请求,如果/*,将会所有的请求--url-pattern/*/url-pattern/filter-mapping   Java 代码 package com.yule.common.filters;import javax.servlet.*; import java.io.IOException;/*** 过滤器* author yule* date 2018/7/2 21:52*/ public class DemoFilter implements Filter {Overridepublic void init(FilterConfig filterConfig) throws ServletException {System.out.println(demo过滤器init。。。);}Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println(demo过滤器doFilter。。。此处省略业务处理逻辑);//通过判断是否继续往下走filterChain.doFilter(servletRequest, servletResponse);}Overridepublic void destroy() {System.out.println(demo过滤器destroy。。。);} }   springmvc 拦截器 定义   springMVC 拦截器源码解析   Spring Web MVC的处理器拦截器。类似于Servlet开发中的过滤器Filter用于对处理器进行预处理和后处理。拦截器是面向切面编程的依赖的技术就是Java的动态代理。 应用场景 日志记录记录请求日志等。权限检查白名单等性能监控可以通过拦截器在进入处理器之前记录开始时间在处理完后记录结束时间从而得到该请求的处理时间通用行为读取cookie得到用户信息并将用户对象放入请求从而方便后续流程使用还有如提取Locale、Theme信息等只要是多个处理器都需要的即可使用拦截器实现。OpenSessionInView如Hibernate在进入处理器打开Session在完成后关闭Session。  本质是AOP面向切面编程符合 AOP 的所有功能都可以使用拦截器实现。 配置   在 spring-mvc.xml 中 mvc:interceptors!-- 使用bean定义一个Interceptor直接定义在mvc:interceptors根下面的Interceptor将拦截所有的请求 --!-- bean classcom.bybo.aca.web.interceptor.Login/ --mvc:interceptor!--进行拦截的地址--mvc:mapping path/**/bean classcom.yule.common.interceptors.DemoInterceptor//mvc:interceptor/mvc:interceptors 执行顺序   根据 xml 中的配置顺序来执行。拦截器的执行顺序在过滤器之间。 方法说明 preHandle(HttpServletRequest request, HttpServletResponse response, Object handle)方法该法在请求处理之前进行调用。SpringMVC 中的 Interceptor 是链式调用的在一个应用中或者说是在一个请求中可以同时存在多个 Interceptor 。每个 Interceptor 的调用会依据它的声明顺序依次执行而且最先执行的都是 Interceptor 中的 preHandle 方法所以可以在这个方法中进行一些前置初始化操作或者是对当前请求做一个预处理也可以在这个方法中进行一些判断来决定请求是否要继续进行下去。该方法的返回值是布尔值 Boolean 类型的当它返回为 false 时表示请求结束后续的 Interceptor 和 Controller 都不会再执行当返回值为 true 时就会继续调用下一个 Interceptor 的 preHandle 方法如果已经是最后一个 Interceptor 的时候就会是调用当前请求的 Controller 中的方法。postHandle(HttpServletRequest request, HttpServletResponse response, Object handle, ModelAndView modelAndView)方法通过 preHandle 方法的解释咱们知道这个方法包括后面要说到的 afterCompletion 方法都只能在当前所属的 Interceptor 的 preHandle 方法的返回值为 true 的时候才能被调用。postHandle 方法在当前请求进行处理之后也就是在 Controller 中的方法调用之后执行但是它会在 DispatcherServlet 进行视图返回渲染之前被调用所以咱们可以在这个方法中对 Controller 处理之后的 ModelAndView 对象进行操作。postHandle 方法被调用的方向跟 preHandle 是相反的也就是说先声明的 Interceptor 的 postHandle 方法反而会后执行。afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handle, Exception ex)方法也是需要当前对应的 Interceptor 的 preHandle 方法的返回值为 true 时才会执行。因此该方法将在整个请求结束之后也就是在 DispatcherServlet 渲染了对应的视图之后执行这个方法的主要作用是用于进行资源清理的工作。afterCompletion 方法被调用的方向也跟 preHandle 是相反的也就是说先声明的 Interceptor 的 afterCompletion 方法反而会后执行举个栗子   spring-mvc 中 mvc:interceptors!-- 使用bean定义一个Interceptor直接定义在mvc:interceptors根下面的Interceptor将拦截所有的请求 --!-- bean classcom.bybo.aca.web.interceptor.Login/ --mvc:interceptor!--进行拦截的地址--mvc:mapping path/**/bean classcom.yule.common.interceptors.DemoInterceptor//mvc:interceptor/mvc:interceptors   Java 代码 package com.yule.common.interceptors;import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;/*** 自定义拦截器方式一* Created by yule on 2018/7/2 22:37.*/ public class DemoInterceptor implements HandlerInterceptor{Overridepublic boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {//return true 表示继续下一个拦截器或者 control 层//return false 表示被拦截下来return false;}Overridepublic void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {}Overridepublic void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {} } package com.yule.common.interceptors;import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;/*** 自定义拦截器方式二* 一般都是通过实现HandlerInterceptor接口或者继承HandlerInterceptorAdapter抽象类复写preHandle()、postHandle()和afterCompletion()这 3 个方法来对用户的请求进行拦截处理* Created by yule on 2018/7/2 22:43.*/ public class Demo2Interceptor extends HandlerInterceptorAdapter {Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {return true;} }  区别   其实两者还是有相似之处就是都可以用作权限检查、日志记录等情况但是在这些情况下如何选择就要知道不同之处。 不同之处   使用范围不同Filter 只能用于 Web 程序中。而拦截器可以用于 Web 程序Application、Swing 程序中。   规范不同Filter 是 servlet 规范规定的是 servlet 支持的。而拦截器是在 spring 容器内是 spring 框架支持的。   使用资源不同Filter 不能直接使用 spring 的资源、对象等。而拦截器是一个 spring 组件归 spring 管理配置在 spring 文件中因此能使用 spring 的任何资源、对象例如 Service 对象、数据源、事务管理等通过 IoC 注入到拦截器即可。也就是说在拦截器中可以注入一个 service 用于业务逻辑或者访问数据库。   深度不同Filter 只在 Servlet 前后起作用。而拦截器能够深入到方法前后、异常抛出前后等因此拦截器的使用具有更大的弹性。   作用范围不同拦截器只能对 Controller 层请求起作用而过滤器则可以对几乎所有的请求起作用如 .js、.css等。   所以在 Spring 构架的程序中要优先使用拦截器。 注意   拦截器是在过滤器之间运行的。 执行顺序举例 拦截器spring-mvc.xml 中 mvc:interceptors!-- 使用bean定义一个Interceptor直接定义在mvc:interceptors根下面的Interceptor将拦截所有的请求 --!-- bean classcom.bybo.aca.web.interceptor.Login/ --mvc:interceptor!--进行拦截的地址--mvc:mapping path/**/bean classcom.yule.common.interceptors.DemoInterceptor//mvc:interceptormvc:interceptor!--进行拦截的地址--mvc:mapping path/**/bean classcom.yule.common.interceptors.Demo2Interceptor//mvc:interceptor/mvc:interceptors java 代码 package com.yule.common.interceptors;import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;/*** 自定义拦截器方式一* Created by yule on 2018/7/2 22:37.*/ public class DemoInterceptor implements HandlerInterceptor{Overridepublic boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {//return true 表示继续下一个拦截器或者 control 层//return false 表示被拦截下来System.out.println(preHandle);return true;}Overridepublic void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {System.out.println(postHandle);}Overridepublic void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {System.out.println(afterCompletion);} } View Code package com.yule.common.interceptors;import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;/*** 自定义拦截器方式二* 一般都是通过实现HandlerInterceptor接口或者继承HandlerInterceptorAdapter抽象类复写preHandle()、postHandle()和afterCompletion()这 3 个方法来对用户的请求进行拦截处理* Created by yule on 2018/7/2 22:43.*/ public class Demo2Interceptor extends HandlerInterceptorAdapter {Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println(preHandle 2222222...);return true;}Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.println(postHandle 22222222);}Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {System.out.println(afterCompletion 2222222);} } View Code 过滤器 web.xml 中 !-- 定义Filter --filter!-- Filter的名字 --filter-namedemoFilter/filter-name!-- Filter的实现类 --filter-classcom.yule.common.filters.DemoFilter/filter-class/filter!-- 定义Filter拦截的URL地址 --filter-mapping!-- Filter的名字 --filter-namedemoFilter/filter-name!-- Filter负责拦截的URL 全部以/的请求,如果/*,将会所有的请求--url-pattern/*/url-pattern/filter-mappingfilterfilter-namedemo2Filter/filter-namefilter-classcom.yule.common.filters.Demo2Filter/filter-class/filterfilter-mappingfilter-namedemo2Filter/filter-nameurl-pattern/*/url-pattern/filter-mapping java 代码 package com.yule.common.filters;import javax.servlet.*; import java.io.IOException;/*** 过滤器* author yule* date 2018/7/2 21:52*/ public class DemoFilter implements Filter {Overridepublic void init(FilterConfig filterConfig) throws ServletException {System.out.println(demo过滤器init。。。);}Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println(demo过滤器doFilter。。。此处省略业务处理逻辑);//通过判断是否继续往下走filterChain.doFilter(servletRequest, servletResponse);}Overridepublic void destroy() {System.out.println(demo过滤器destroy。。。);} } View Code package com.yule.common.filters;import javax.servlet.*; import java.io.IOException;/*** Created by yule on 2018/7/2 22:18.*/ public class Demo2Filter implements Filter{Overridepublic void init(FilterConfig filterConfig) throws ServletException {System.out.println(demo2过滤器init 2222222);}Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println(demo过滤器doFilter 222222);//通过判断是否继续往下走filterChain.doFilter(servletRequest, servletResponse);}Overridepublic void destroy() {System.out.println(demo2过滤器destroy 22222 );} } View Code 调用 controller 打印结果  转载于:https://www.cnblogs.com/yuxiaole/p/9230742.html
http://www.yutouwan.com/news/297926/

相关文章:

  • 什么是网站的二级目录2022年度关键词
  • 做网站的设计流程怎么给公司网站上放视频
  • 昌平石家庄网站建设传媒公司起名
  • 做外贸兼职的网站有哪些外包一个企业网站多少钱
  • vs2017js网站开发方法胶州国际网站建设效果
  • wordpress 机械 主题郑州做网站优化外包
  • g4560做网站服务器wordpress 4.5 漏洞
  • 国内建网站多少钱广东省建设信息中心官网
  • 网站建设实习招聘网站建设功能设计
  • 超链接到网站怎么做手机商城下载
  • 有机玻璃东莞网站建设技术支持建站与备案的具体流程是什么
  • 天津做网站公司官方网站推广策划
  • 儿童教育自适应网站模板wordpress分类目录进不去
  • 海南网站建设fwlitwordpress编写文章
  • 南宁百度网站推广公众号怎么做链接
  • 包装在线设计网站保定定兴网站建设
  • 微信网站如何开发重庆最新消息今天
  • 做业务查牙医诊所一般用什么网站老板电器分销系统
  • 出口网站建设方案设计理念
  • 网站cms系统哪个好用吗做网站时需要注意什么
  • 企业网站用织梦好吗施工企业资质等级划分
  • 东莞整合网站建设苏州网站建设永阳网络
  • 韩国建筑网站做一个网站多久
  • ckplayer怎么上传做网站菏泽建设
  • 注册个网站怎么注册网站开发环境是什么意思
  • 做少儿培训网站的公司个人网站备案代理
  • 毕业设计做网站选题自动写论文神器app
  • 加盟手机网站源码网站建设收费标准不一
  • 抚州网站建设公司中山精品网站建设价位
  • 营销网站设计与规划方案百度通用网址