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

php新手网站开发网站建设与管理的展望与未来

php新手网站开发,网站建设与管理的展望与未来,江苏省住房和城市建设厅网站,设计师服务平台网站目录 spring中拦截器 过滤器跟拦截器的区别 HandlerInterceptor拦截器 拦截器工作原理 拦截器使用场景 定义拦截器 LoginInterceptor 注册拦截器 MethodInterceptor拦截器 方式一#xff1a;继承 MethodInterceptor 方式二#xff1a;基于注解的AspectJ方…目录 spring中拦截器 过滤器跟拦截器的区别 HandlerInterceptor拦截器 拦截器工作原理   拦截器使用场景         定义拦截器 LoginInterceptor 注册拦截器 MethodInterceptor拦截器 方式一继承 MethodInterceptor 方式二基于注解的AspectJ方式 HandlerInterceptor拦截器与MethodInterceptor拦截器总结 spring中拦截器 在说拦截器之前不得不说一下过滤器有时候往往被这两个词搞的头大。 其实我们最先接触的就是过滤器 你应该知道spring mvc的拦截器是只拦截controller而不拦截jsp,html 页面文件的如果想要拦截那怎么办 这就用到过滤器filter了filter是在servlet前执行的你也可以理解成过滤器中包含拦截器一个请求过来 先进行过滤器处理看程序是否受理该请求 。 过滤器放过后 程序中的拦截器进行处理 。 过滤器跟拦截器的区别 1、拦截器是基于java的反射机制的而过滤器是基于函数回调职责链 2、过滤器依赖与servlet容器而拦截器不依赖与servlet容器 3、拦截器只能对action请求起作用而过滤器则可以对几乎所有的请求起作用 4、拦截器可以访问action上下文、值栈里的对象而过滤器不能 5、在action的生命周期中拦截器可以多次被调用而过滤器只能在容器初始化时被调用一次 6、拦截器可以获取IOC容器中的各个bean而过滤器不行这点很重要在拦截器里注入一个service可以调用业务逻辑。 7、过滤器属于Servlet而拦截器属于springmvc 8、过滤器可以拦截所有请求包括访问静态资源的请求拦截器只能拦截action请求即访问controller的请求。   1过滤器Filter当你有一堆东西的时候你只希望选择符合你要求的某一些东西。定义这些要求的工具就是过滤器。理解就是一堆字母中取一个B 2拦截器Interceptor在一个流程正在进行的时候你希望干预它的进展甚至终止它进行这是拦截器做的事情。理解就是一堆字母中干预他通过验证的少点顺便干点别的东西。   HandlerInterceptor拦截器 HandlerInterceptor是springMVC项目中的拦截器它拦截的目标是请求的地址比MethodInterceptor先执行。 实现一个HandlerInterceptor拦截器可以直接实现HandlerInterceptor接口也可以继承HandlerInterceptorAdapter类。 这两种方法殊途同归其实HandlerInterceptorAdapter也就是声明了HandlerInterceptor接口中所有方法的默认实现而我们在继承他之后只需要重写必要的方法。   拦截器主要应用于登陆校验、权限验证、乱码解决、性能监控和异常处理等功能Spring Boot 同样提供了拦截器功能 拦截器工作原理   一个拦截器只有 preHandle 方法返回 true postHandle 、 afterCompletion 才有可能被执行如果 preHandle 方法返回 false 则该拦截器的 postHandle 、 afterCompletion 必然不会被执行。拦截器不是Filter却实现了Filter的功能其原理在于 所有的拦截器 (Interceptor) 和处理器 (Handler) 都注册在 HandlerMapping 中。 Spring MVC 中所有的请求都是由 DispatcherServlet 分发的。         当请求进入 DispatcherServlet.doDispatch() 时候首先会得到处理该请求的 Handler 即 Controller 中对应的方法以及所有拦截该请求的拦截器。拦截器就是在这里被调用开始工作的。 拦截器使用场景         拦截器本质上是面向切面编程AOP符合横切关注点的功能都可以放在拦截器中来实现主要的应用场景包括 -登录验证判断用户是否登录。         -权限验证判断用户是否有权限访问资源如校验token         - 日志记录记录请求操作日志用户ip访问时间等以便统计请求访问量。         -处理cookie、本地化、国际化、主题等。         -性能监控监控请求处理时长等。   定义拦截器 在 Spring Boot 中定义拦截器十分的简单只需要创建一个拦截器类并实现 HandlerInterceptor 接口即可。 HandlerInterceptor 接口中定义以下 3 个方法如下表。 返回值类型 方法声明 描述 boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) 该方法在控制器处理请求方法前执行其返回值表示是否中断后续操作返回 true 表示继续向下执行返回 false 表示中断后续操作。 void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) 该方法在控制器处理请求方法调用之后、解析视图之前执行可以通过此方法对请求域中的模型和视图做进一步修改。 void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) 该方法在视图渲染结束后执行可以通过此方法实现资源清理、记录日志信息等工作。 LoginInterceptor public class LoginInterceptor implements HandlerInterceptor {private final Logger logger LoggerFactory.getLogger(LoginInterceptor.class);Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {String requestURI request.getRequestURI();log.info(请求的URI,requestURI);String token request.getParameter(token);if(StrUtil.isEmpty(token)){response.sendRedirect(/login);}return true;} } 注册拦截器 Configuration public class MyMvcConfig implements WebMvcConfigurer {......Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new LoginInterceptor()).addPathPatterns(/**) //拦截所有请求包括静态资源文件.excludePathPatterns(/register, /login, /css/**, /images/**, /js/**); //放行登录页登陆操作静态资源} } 在指定拦截器拦截规则时调用了两个方法这两个方法的说明如下 addPathPatterns该方法用于指定拦截路径例如拦截路径为“/**”表示拦截所有请求包括对静态资源的请求。 excludePathPatterns该方法用于排除拦截路径即指定不需要被拦截器拦截的请求。 MethodInterceptor拦截器 MethodInterceptor是AOP项目中的拦截器它拦截的目标是方法即使不是controller中的方法。实现MethodInterceptor拦截器大致也分为两种一种是实现MethodInterceptor接口另一种利用AspectJ的注解或配置。 方式一继承 MethodInterceptor public class MethodInvokeInterceptor implements MethodInterceptor { Override public Object invoke(MethodInvocation methodInvocation) throws Throwable { System.out.println(before method invoke); Object object methodInvocation.proceed(); System.out.println(after method invoke); return object; } } 方式二基于注解的AspectJ方式 Component Aspect public class AutoAspectJInterceptor { Around(execution (* com.test.controller..*.*(..))) public Object around(ProceedingJoinPoint point) throws Throwable{ System.out.println(AutoAspectJInterceptor begin around); Object object point.proceed(); System.out.println(AutoAspectJInterceptor end around); return object; } } HandlerInterceptor拦截器与MethodInterceptor拦截器总结 HandlerInterceptor拦截的是请求地址所以针对请求地址做一些验证、预处理等操作比较合适。当你需要统计请求的响应时间时MethodInterceptor将不太容易做到因为它可能跨越很多方法或者只涉及到已经定义好的方法中一部分代码。MethodInterceptor利用的是AOP的实现机制在对一些普通的方法上的拦截HandlerInterceptoer就无能为力了这时候只能利用AOP的MethodInterceptor。
http://wiki.neutronadmin.com/news/181208/

相关文章:

  • 重庆响应式网站方案东莞知名企业
  • 论网站建设技术的作者是谁大型网站 中小型网站
  • 网站相对路径和绝对路径wordpress m3u8
  • 昆山网站制作哪家好游戏软件开发公司排名
  • 门户网站模板 免费vx小程序怎么开发
  • 网站空间的价格网页制作免费的素材网站
  • 福州公司做网站手机商务彩铃制作教程
  • 网站编程脚本语言建设银行流水账网站查询
  • 深圳龙华做网站公司网站建设的最新技术
  • 网站建设和使用情况揭阳市seo上词外包
  • 广东网站设计的公司福州本地推广
  • 网站建设与开发英文文献关键词挖掘查询工具爱站网
  • 公司网站开发实训报告网站的主流趋势
  • 小程序网站开发运行合同封面型网页网站有哪些
  • 用wordpress开发网站模板免费创建论坛网站
  • 上海网站建设工作室工程资料外包公司
  • 做网站名词网站建设费用模板
  • 网站订制公司自媒体wordpress
  • 网站建设云南找人做仿网站
  • 轮播网站响应式网站 谷歌 移动网站
  • 北京高端网站建设优势开源展示型网站
  • 代理会计公司网站模版长沙网站建站公司
  • 建一个网站大概需要多少钱百度公司可以做网站么
  • 护肤品网站建设方案设计素材网站
  • php手机网站如何制作教程wordpress文字编辑器
  • 外国网站签到做任务每月挣钱展示型手机网站模板下载
  • 一个网站怎么做软件好用吗规划建立一个网站
  • 需要推销自己做网站的公司公关到底做什么
  • 销售类网站数据库的建设郴州网络推广公司排名
  • 做的网站百度没收录网页的后缀名有那些