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

做网站分pc端和移动端的吗石碣仿做网站

做网站分pc端和移动端的吗,石碣仿做网站,网站备案没通过,中国百强城市榜单公布Interceptor 拦截器就是进来拦截一次#xff0c;出去拦截一次。过滤器就是进来#xff0c;通过了#xff0c;出去就走另一条路了。 拦截器一定在Controller之前执行#xff0c;就像Filter一定在Servlet之前执行 我们形象的比喻一下到达Controller和Servelt会发出咚的一声…Interceptor 拦截器就是进来拦截一次出去拦截一次。过滤器就是进来通过了出去就走另一条路了。 拦截器一定在Controller之前执行就像Filter一定在Servlet之前执行 我们形象的比喻一下到达Controller和Servelt会发出咚的一声然后这是有三个拦截器有三个过滤器。过滤器的执行步骤是过滤器1—过滤器2—过滤器3—咚而拦截器的执行步骤是拦截器1—拦截器2—拦截器3—咚—拦截器3—拦截器2—拦截器1 拦截器属于DispatcherServlet之后的过程 正常的一个请求发送到后端会先到达web.xml然后发给了Filter然后交给DispatcherServlet接着到达Interceptor…(可能会有很多个拦截器)然后才到达Controller处理完了以后在返回给DispatcherServlet然后直接返回给Tomcat SpringMVC执行原理中Handler是两种东西有可能是Controller也有可能是Interceptor。他们是一个响应链请求先到Interceptor1–Interceptor2–Interceptor3–Controller–Interceptor3–Interceptor2–Interceptor11 2 3 咚 3 2 1 拦截器可以将过滤器的活给做了 过滤器Filter依赖于Servlet容器要在web.xml文件中配置拦截器Interceptor依赖于web框架他要在SpringMVC配置文件中配置因此可以使用Spring的依赖注入DI进行一些业务操作同时一个拦截器实例在一个controller生命周期之内可以多次调用。但是缺点是只能对controller请求进行拦截对其他的一些比如直接访问静态资源的请求则没办法进行拦截处理。 拦截器和过滤器的区别 ①拦截器是基于java的反射机制的而过滤器是基于函数回调。②拦截器不依赖与servlet容器过滤器依赖与servlet容器。③拦截器只能对action请求起作用而过滤器则可以对几乎所有的请求起作用。④拦截器可以访问action上下文而过滤器不能访问。⑤在action的生命周期中拦截器可以多次被调用而过滤器只能在容器初始化时被调用一次。⑥拦截器以获取IOC容器中的各个bean而过滤器就不行这点很重要在拦截器里注入一个service可以调用业务逻辑。 过滤器的触发时机是容器后servlet之前所以过滤器的doFilter( ServletRequest request, ServletResponse response, FilterChain chain)的入参是ServletRequest 而不是httpservletrequest。因为过滤器是在httpservlet之前。 实现一个拦截器 public class MyInterceptor implements HandlerInterceptor {Override//前置判断决定这个请求到达能不能执行。这就相当于Controller层的AOP过程public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println(前置开始);return true;}Override//因为是Controller返回的ModelAndView也就意味着这个方法是在Controller执行完了以后再回到这里修改ModelAndViewpublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.println(处理完成 );}Override//最终完成后执行它public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {System.out.println(全部结束);} }要让这个Interceptor生效就要在容器中配置他让他进入到SpingMVC体系下 mvc:interceptors !-- ref beanmyInterceptor/reflt;!ndash;全连接的方式即所有映射都加拦截器ndash;gt;--mvc:interceptor!--映射链接只拦截满足映射的链接即user路径下的请求--mvc:mapping path/user/**/ref beanmyInterceptor/ref/mvc:interceptor/mvc:interceptorsbean idmyInterceptor classcom.lanou.controller.MyInterceptor/bean现在实现多个拦截器这次我们自定义的拦截器继承HandlerInterceptorAdaptorHandlerInterceptor接口的实现类如果实现的是接口那接口中的方法都要重写虽然有的方法是default的但是最好还是都要实实现的但如果继承实现类就可以挑选方法重写了拦截器执行顺序即配置顺序 public class MySecondInterceptor extends HandlerInterceptorAdapter {public MySecondInterceptor() {super();}Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println(second 前置);return super.preHandle(request, response, handler);}Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.println(second 后置);super.postHandle(request, response, handler, modelAndView);}Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {System.out.println(second 结束);super.afterCompletion(request, response, handler, ex);}Override//在分布式中处理最终事务一致性可能会用到//没有并发处理请求就不会走这里public void afterConcurrentHandlingStarted(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println(second concurrent);super.afterConcurrentHandlingStarted(request, response, handler);} }mvc:interceptorsmvc:interceptor!--只拦截user路径下的请求--mvc:mapping path/user/**/ref beanmyInterceptor/ref/mvc:interceptorbean idsecondInterceptor classcom.lanou.controller.MySecondInterceptor/bean/mvc:interceptorsbean idmyInterceptor classcom.lanou.controller.MyInterceptor/bean执行结果 发现其实拦截器真正执行的顺序是 1 2 3 咚 3 2 1 3 2 11 2 3表示拦截器1,2,3 如果调换两个拦截器配置的位置执行结果也就调换 mvc:interceptorsbean idsecondInterceptor classcom.lanou.controller.MySecondInterceptor/beanmvc:interceptor!--只拦截user路径下的请求--mvc:mapping path/user/**/ref beanmyInterceptor/ref/mvc:interceptor/mvc:interceptorsbean idmyInterceptor classcom.lanou.controller.MyInterceptor/bean有关Interceptor接口的preHandle方法的handler属性的操作 public class MyInterceptor implements HandlerInterceptor {Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {//这里的这个handler就是告诉我们这个请求将要找哪个方法HandlerMethod method (HandlerMethod) handler;System.out.println(method.getMethod().getName());//访问login.do,即要执行login方法。结果打印出 loginSystem.out.println(method.getBean().getClass().getName());//getBean()获得方法的所属对象//知道了方法所属对象知道了参数就能通过反射执行这个方法method.getMethod().invoke(method.getBean(),method.getMethodParameters());//这里就可以对这个方法来执行更多的操作//但是由于我们是非侵入编程最终只要让preHandle得到两个结果要么执行要么不执行这就行了。return true;}}一般用preHandle方法的前两个参数来判断传进来的参数的合法性的用后面的那个参数来判断用户状态的。 postHandle方法里的ModelAndView参数如果后端要向前端然后一个ModelAndView那么这里可以截获他然后修改他再返回给前端。 过滤器 Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {System.out.println(before...);chain.doFilter(request, response);System.out.println(after...);}拦截器 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);}preHandle()这个方法是在过滤器的chain.doFilter(request, response)方法的前一步执行也就是在 System.out.println(before...) chain.doFilter(request, response)之间执行。afterCompletion()方法是在过滤器返回给前端前一步执行也就是在chain.doFilter(request, response) System.out.println(after...)之间执行。 学习参考https://www.cnblogs.com/panxuejun/p/7715917.html
http://www.hkea.cn/news/14593931/

相关文章:

  • 推广网站推广网站媒体作风建设年工作总结
  • 网站中备案与不备案的区别烟台网站建设推广
  • 台州市城市建设投资公司网站浙江省建设监理协会官方网站
  • 安徽省住房城乡建设厅网站wordpress旧版本哪个好些
  • 网站 内容 不收录 权重 1网站网站怎么建设
  • 广告网站建设案例网络营销设计公司
  • 湖南省造价管理站官网品牌设计流程
  • 建网站公建网站公司天体摄影
  • 北京市企业网站建设免费资源部落wordpress
  • 做国际网站学习网页制作的网站
  • 衣柜推拉门图案设计网站如何维护自己的网站
  • 途牛旅行网网站建设社区子网站群建设
  • 肇庆网站制作系统天津建设工程信息
  • 地产flash网站菏泽做公司简介网站
  • 梧州自助建站seo做网站怎么不被找到
  • 一个网站一年多少钱wordpress live-calendar
  • 爱站seo综合查询华为弹性云服务器创建wordpress
  • 电子商务网站seo湖南郴州市区号
  • 邮箱类网站模板雄安网建 网站建设
  • 织梦网站怎么做404页面wordpress怎么做分页
  • 十堰做网站wordpress课程表单
  • 国内做网站最大的公司有哪些网站作业二级网页
  • 建设银行网站缺点网站开发文档word
  • 网站建设与维护网课wordpress自动上传至cdn
  • 网站注册网站违法吗网站后续建设说明
  • 举报网站建设自查报告wordpress权限问题
  • 网站建设开发设计公司江苏省建设工程安全监督网站
  • 欧美设计网站推荐做运营必知网站
  • 太原网站建设vhuashi济南城市建设学院网站
  • 什么是企业网站营销网页布局类型