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

建材网站建设 南宁网页设计分几个步骤

建材网站建设 南宁,网页设计分几个步骤,不备案 网站 盈利,手机能做网站吗目录 代码演示过滤器Demo拦截器Demo 过滤器自定义拦截器配置拦截器过滤器执行原理多个过滤器的执行顺序 拦截器自定义拦截器注册拦截器1#xff09;注册拦截器2#xff09;配置拦截的路径3#xff09;配置不拦截的路径 多个拦截器的执行顺序 过滤器和拦截器的区别 代码演示 … 目录 代码演示过滤器Demo拦截器Demo 过滤器自定义拦截器配置拦截器过滤器执行原理多个过滤器的执行顺序 拦截器自定义拦截器注册拦截器1注册拦截器2配置拦截的路径3配置不拦截的路径 多个拦截器的执行顺序 过滤器和拦截器的区别 代码演示 我们这里先上代码看看拦截器和过滤器在代码实现上的区别。 过滤器Demo 1、定义一个类实现接口Filter public class FilterDemo implements Filter { }2、实现Filter接口的方法 public class FilterDemo implements Filter {public static int i 0;Overridepublic void init(FilterConfig filterConfig) throws ServletException {System.out.println(执行init方法);}Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println(执行doFilter方法 i);filterChain.doFilter(servletRequest,servletResponse);}Overridepublic void destroy() {System.out.println(执行destroy方法);} }3、配置拦截路径 1通过web.xml文件配置 filterfilter-nameFilterDemo/filter-namefilter-classcom.example.springboot_demo.filter.FilterDemo/filter-class /filterfilter-mappingfilter-nameFilterDemo/filter-name!-- 拦截路径 --url-pattern/*/url-pattern /filter-mapping2、注解 WebFilter(/*) 拦截器Demo 1、定义一个类实现HandlerInterceptor 并实现此接口的方法 public class InterceptorDemo implements HandlerInterceptor {Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println(执行preHandle方法);return true;}Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.println(执行postHandle方法);}Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {System.out.println(执行afterCompletion方法);} }2、创建一个配置类实现WebMvcConfigurer Configuration public class MyConfig implements WebMvcConfigurer {}3、实现WebMvcConfigurer 的addInterceptors方法 Configuration public class MyConfig implements WebMvcConfigurer {Overridepublic void addInterceptors(InterceptorRegistry registry) {} }4、将自定义的拦截器进行注册并配置拦截路径和放行路径 Configuration public class MyConfig implements WebMvcConfigurer {Overridepublic void addInterceptors(InterceptorRegistry registry) {// 注册自定义的拦截器InterceptorRegistration interceptorRegistration registry.addInterceptor(new InterceptorDemo());// 定义拦截所有路径interceptorRegistration.addPathPatterns(/**);// 定义排查/user/下的所有路径interceptorRegistration.excludePathPatterns(/user/**);} }这就是过滤器和拦截器的代码实现展示了它们在代码层面的不同。后面将会进行详细解释。 过滤器 过滤器是Servlet的高级特性之一就是Web服务器在处理请求的时候会经过每一过滤器再处理请求。 自定义拦截器 自定义拦截器其实就是实现Filter接口然后实现他的方法。 那它的方法都有什么作用呢? 1init方法 public void init(FilterConfig filterConfig) 在Web容器启动初始化过滤器时被调用它在 Filter 的整个生命周期只会被调用一次。注意这个方法必须执行成功否则过滤器会不起作用。 2doFilter方法 public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) 容器中的每一次请求都会调用该方法一次请求会调用两次进Web容器时调用一次出Web容器时调用一次要使用filterChain.doFilter(servletRequest, servletResponse);来调用下一个过滤器否则这个请求就到此结束了。 3destroy方法 public void destroy() 当容器销毁 过滤器实例时调用该方法一般在方法中销毁或关闭资源在过滤器 Filter 的整个生命周期也只会被调用一次 public class FilterDemo implements Filter {Overridepublic void init(FilterConfig filterConfig) throws ServletException {System.out.println(执行init方法);}Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println(执行doFilter方法);filterChain.doFilter(servletRequest,servletResponse);}Overridepublic void destroy() {System.out.println(执行destroy方法);} }配置拦截器 1通过web.xml文件配置 filterfilter-nameFilterDemo/filter-namefilter-classcom.example.springboot_demo.filter.FilterDemo/filter-class /filterfilter-name用于为过滤器指定一个名字该元素的内容不能为空。filter-class元素用于指定过滤器的完整的限定类名。init-param元素用于为过滤器指定初始化参数它的子元素param-name指定参数的名字param-value指定参数的值。在过滤器中可以使用FilterConfig接口对象来访问初始化参数。 filter-mappingfilter-nameFilterDemo/filter-name!-- 拦截路径 --url-pattern/*/url-pattern /filter-mappingfilter-mapping元素用于设置一个Filter 所负责拦截的资源。filter-name子元素用于设置filter的注册名称。该值必须是在filter元素中声明过的过滤器的名字。url-pattern设置 filter 所拦截的请求路径(过滤器关联的URL样式) 2、注解 WebFilter(filterName FilterDemo,urlPatterns /*) 理解了web.xml方式注解方式看起来就一目了然了 过滤器执行原理 过滤器执行主要是通过函数回调的方式。 在我们自定义的过滤器中都会实现一个 doFilter()方法这个方法有一个FilterChain 参数而实际上它是一个回调接口。 所以如果我们写这样的过滤器 public class FilterDemo implements Filter {Overridepublic void init(FilterConfig filterConfig) throws ServletException {System.out.println(执行init方法);}Overridepublic void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {System.out.println(准备放行);//执行这一句说明放行让下一个过滤器执行或者执行目标资源chain.doFilter(req, resp);System.out.println(放行完成);}Overridepublic void destroy() {System.out.println(执行destroy方法);} }程序在执行到chain.doFilter(req,resp)时会执行下一个过滤器或目标资源然后执行完成回到此方法继续往下执行。 多个过滤器的执行顺序 过滤器之间的执行顺序看在web.xml文件中mapping的先后顺序的如果放在前面就先执行放在后面就后执行 如果是通过注解的方式配置就比较urlPatterns的字符串优先级 拦截器 拦截器是SpringMVC自己的功能虽然看起来和过滤器一样但是底层使用的是面向切面编程AOP。 自定义拦截器 前面我们直到自定义拦截器要实现HandlerInterceptor接口然后再实现它的方法。 那这几个方法都有什么作用呢 1preHandle方法 public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler); 再请求处理之前执行Controller方法调用之前返回值是boolean类型返回false表示拦截不会让此请求访问Controller返回true则可继续执行 2postHandle方法 public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView); 在请求结束之后(Controller请求返回)在ModelAndView渲染之前调用主要就是用来对ModelAndView对象进行操作 3afterCompletion方法 public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex); 在整个请求结束之后调用主要是用于资源清理工作 public class InterceptorDemo implements HandlerInterceptor {Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println(执行preHandle方法);return true;}Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.println(执行postHandle方法);}Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {System.out.println(执行afterCompletion方法);} }注册拦截器 创建一个实现WebMvcConfigurer的拦截器然后将自定义的拦截器注册到其中。可以注册多个拦截器。 实现方法addInterceptors通过参数InterceptorRegistry registry来进行一系列配置 Configuration public class MyConfig implements WebMvcConfigurer {Overridepublic void addInterceptors(InterceptorRegistry registry) {// 注册自定义的拦截器InterceptorRegistration interceptorRegistration registry.addInterceptor(new InterceptorDemo());// 定义拦截所有路径interceptorRegistration.addPathPatterns(/**);// 定义排查/user/下的所有路径interceptorRegistration.excludePathPatterns(/user/**);// 确定执行顺序interceptorRegistration.order(1);} }1注册拦截器 InterceptorRegistration interceptorRegistration registry.addInterceptor(new InterceptorDemo()); 将自定义的拦截器对象传入其中即可如果要注册多个拦截器调用多次这个方法即可。 2配置拦截的路径 interceptorRegistration.addPathPatterns(/**); 如果需要拦截多个路径可以多次传入一个字符串也可以传入一个List集合。 3配置不拦截的路径 interceptorRegistration.excludePathPatterns(/user/**); 这个和addPathPatterns一样可以传入字符串也可以传入List 多个拦截器的执行顺序 多个拦截器可通过order()方法来确定执行顺序order()传入一个数字数字越小则越先执行。 过滤器和拦截器的区别 适用范围不同Filter是Servlet容器规定的只能使用在servlet容器中而拦截器的使用范围就大得多使用的资源不同拦截器是属于spring的一个组件因此可以使用spring的所有对象如service对象数据源事务控制等而过滤器就不行深度不同Filter还在servlet前后起作用。而拦截器能够深入到方法前后异常抛出前后因此拦截器具有更大的弹性所有在spring框架中应该优先使用拦截器
http://www.pierceye.com/news/37762/

相关文章:

  • 招商网站建设方案海安公司网站建设
  • 公司网站设计 上海手机网站建设林肖
  • 马来西亚做公路投标网站怎么在微商城开店
  • 网站建设属于营业范围里的哪一项食品建设网站
  • 网站建设询价函电子商务网站规划与建设论文
  • 徐州h5模板建站龙岩兼职招聘最新发布
  • 外汇网站建设ps软件下载网站
  • 河北省建设厅注册中心网站首页响应适网站开发
  • 如何租用服务器做网站建筑公司企业资料
  • 个人做网站需要多少钱c2c平台举例
  • 排名好的宜昌网站建设学校校园网站 资源建设方案
  • 更新公司网站内容需要做网站有必要要源码吗
  • 苍南建设网站dw企业网站开发教程
  • seo网站推广工作内容昆明官网seo公司
  • 网站后台怎么做alt标签莱芜都市网招聘
  • 大埔做网站东莞最新招聘信息
  • 什邡市建设局网站深圳外贸公司有哪些公司
  • perl做网站太原seo网络推广平台
  • 网站布局英文企业自适应网站制作
  • 明星网站建设创客联盟网站建设
  • 网站建设 网站制作服务器网站80端口打不开
  • 家教中介怎么利用网站来做的高密做网站哪家好价位
  • 网站建设大神级公司施工企业现状
  • 手机端做网站软件软件开发文档编写流程
  • 软文网站大全上海网站建设网站游戏
  • 移动网站怎么做优化上海礼品定制网站
  • 关于电商网站的数据中心建设方案互联网搜索引擎有哪些
  • 企业产品展示网站源码做视频网站什么平台好
  • 个人网站设计与开发redis 移动 wordpress
  • wordpress页面不能访问惠州seo博客报价