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

杭州seo建站制作公司网站设

杭州seo建站,制作公司网站设,怎么做网页快照,淘宝商城正品若要实现对请求的过滤#xff0c;有三种方式可供选择#xff1a;filter、interceptort和aop。本文主要讨论三种拦截器的使用场景与使用方式。 下文中的举例功能是计算每个请求的从开始到结束的时间#xff0c;例子来源是慕课网。 一、filter 特点#xff1a;可以获取原始的…若要实现对请求的过滤有三种方式可供选择filter、interceptort和aop。本文主要讨论三种拦截器的使用场景与使用方式。 下文中的举例功能是计算每个请求的从开始到结束的时间例子来源是慕课网。 一、filter 特点可以获取原始的ServletRequest但无法获取具体方法 实现 1.继承javax.servlet.Filter类 2.Component注解将其注入到框架中 3.实现其中的dofilter方法所有的请求都会经过该方法可以在此计算出每个请求的耗时代码如下 1 package com.zzy.web.filter;2 3 import java.io.IOException;4 import java.util.Date;5 6 import javax.servlet.Filter;7 import javax.servlet.FilterChain;8 import javax.servlet.FilterConfig;9 import javax.servlet.ServletException; 10 import javax.servlet.ServletRequest; 11 import javax.servlet.ServletResponse; 12 13 import org.springframework.stereotype.Component; 14 15 Component 16 public class TimeFilter implements Filter{ 17 18 Override 19 public void init(FilterConfig filterConfig) throws ServletException { 20 // TODO Auto-generated method stub 21 System.out.println(filter init); 22 23 } 24 25 Override 26 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) 27 throws IOException, ServletException { 28 // TODO Auto-generated method stub 29 Long startTime new Date().getTime(); 30 System.out.println(filter 请求开始时间: startTime); 31 chain.doFilter(request, response); 32 Long endTime new Date().getTime(); 33 System.out.println(filter 请求结束时间 endTime ,请求耗时 (endTime - startTime)); 34 35 } 36 37 Override 38 public void destroy() { 39 // TODO Auto-generated method stub 40 41 } 42 43 } 注如果有的框架没有Component 这个注解可以自己写一个配置类在该类中指定过滤器而且还可以指定过滤的url配置类如下 1 package com.zzy.web.config;2 3 import static org.assertj.core.api.Assertions.failBecauseExceptionWasNotThrown;4 5 import java.util.ArrayList;6 import java.util.List;7 8 import org.springframework.beans.factory.annotation.Autowired;9 import org.springframework.boot.web.servlet.FilterRegistrationBean; 10 import org.springframework.context.annotation.Bean; 11 import org.springframework.context.annotation.Configuration; 12 import org.springframework.web.servlet.config.annotation.InterceptorRegistry; 13 import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; 14 15 import com.zzy.web.filter.TimeFilter; 16 import com.zzy.web.interceptor.TimeInterceptor; 17 18 Configuration 19 public class WebConfig extends WebMvcConfigurerAdapter { 20 21 Autowired 22 private TimeInterceptor timeInterceptor; 23 24 // Override 25 // public void addInterceptors(InterceptorRegistry registry) { 26 // // TODO Auto-generated method stub 27 // registry.addInterceptor(timeInterceptor); 28 // } 29 30 Bean 31 public FilterRegistrationBean timeFilter() { 32 FilterRegistrationBean registrationBean new FilterRegistrationBean(); 33 TimeFilter timeFilter new TimeFilter(); 34 registrationBean.setFilter(timeFilter); 35 ListString urls new ArrayList(); 36 urls.add(/user/*); 37 registrationBean.setUrlPatterns(urls); 38 return registrationBean; 39 } 40 41 }     二、interceptor 特点可以获取到原始的request和请求的方法但无法获取方法的具体参数的值。 实现 1.继承HandlerInterceptor接口 2.请求前的逻辑写在prehandle请求前调用 3.请求后的逻辑写在posthandle请求成功后调用失败则不调用 4.请求后不管成功失败都会调用aftercompletion。 5.intceptor方式继承了之后还没起作用还需要在配置类里面加一下把刚声明的拦截器注册一下。 代码示例 1 package com.zzy.web.interceptor;2 3 import java.util.Arrays;4 import java.util.Date;5 6 import javax.servlet.http.HttpServletRequest;7 import javax.servlet.http.HttpServletResponse;8 9 import org.springframework.stereotype.Component; 10 import org.springframework.web.method.HandlerMethod; 11 import org.springframework.web.servlet.HandlerInterceptor; 12 import org.springframework.web.servlet.ModelAndView; 13 Component 14 public class TimeInterceptor implements HandlerInterceptor { 15 16 Override 17 public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) 18 throws Exception { 19 // TODO Auto-generated method stub 20 System.out.println(interceptor 执行preHandle); 21 22 request.setAttribute(startTime, new Date().getTime()); 23 return true; 24 } 25 26 Override 27 public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, 28 ModelAndView modelAndView) throws Exception { 29 // TODO Auto-generated method stub 30 Long startTime Long.parseLong(request.getAttribute(startTime).toString()); 31 Long endTime new Date().getTime(); 32 System.out.println(interceptor 执行postHandle); 33 System.out.println(interceptor 请求类((HandlerMethod)handler).getBean().getClass().getName()); 34 System.out.println(interceptor 请求方法((HandlerMethod)handler).getMethod()); 35 // System.out.println(interceptor 请求参数); 36 // Arrays.asList(((HandlerMethod)handler).getMethodParameters()).stream().forEach(arg-System.out.println(arg)); 37 System.out.println(interceptor 请求耗时 (endTime - startTime)); 38 39 } 40 41 Override 42 public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) 43 throws Exception { 44 // TODO Auto-generated method stub 45 Long startTime Long.parseLong(request.getAttribute(startTime).toString()); 46 Long endTime new Date().getTime(); 47 System.out.println(interceptor 执行afterCompletion); 48 System.out.println(interceptor 请求类((HandlerMethod)handler).getBean().getClass().getName()); 49 System.out.println(interceptor 请求方法((HandlerMethod)handler).getMethod()); 50 System.out.println(interceptor 请求耗时 (endTime - startTime)); 51 System.out.println(interceptor 请求异常 ex); 52 53 } 54 55 } 配置类如下 1 package com.zzy.web.config;2 3 import static org.assertj.core.api.Assertions.failBecauseExceptionWasNotThrown;4 5 import java.util.ArrayList;6 import java.util.List;7 8 import org.springframework.beans.factory.annotation.Autowired;9 import org.springframework.boot.web.servlet.FilterRegistrationBean; 10 import org.springframework.context.annotation.Bean; 11 import org.springframework.context.annotation.Configuration; 12 import org.springframework.web.servlet.config.annotation.InterceptorRegistry; 13 import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; 14 15 import com.zzy.web.filter.TimeFilter; 16 import com.zzy.web.interceptor.TimeInterceptor; 17 18 Configuration 19 public class WebConfig extends WebMvcConfigurerAdapter { 20 21 Autowired 22 private TimeInterceptor timeInterceptor; 23 24 Override 25 public void addInterceptors(InterceptorRegistry registry) { 26 // TODO Auto-generated method stub 27 registry.addInterceptor(timeInterceptor); 28 } 29 30 31 }   三、aop 特点能拿到方法和具体参数的值但是拿不到原始的servletrequest的信息。 实现 1.使用aspect注解 2.execution声明切面声明切面的语法可参考官网https://docs.spring.io/spring/docs/4.3.18.RELEASE/spring-framework-reference/htmlsingle/#aop-pointcuts 3.使用Around(方法前和方法后),Before方法前或After方法后 以下为Around举例代码如下 1 package com.zzy.web.aspect;2 3 import java.util.Date;4 5 import org.aspectj.lang.ProceedingJoinPoint;6 import org.aspectj.lang.annotation.Around;7 import org.aspectj.lang.annotation.Aspect;8 import org.codehaus.jackson.map.ObjectMapper;9 import org.springframework.stereotype.Component; 10 11 Aspect 12 Component 13 public class TimeAspect { 14 15 Around(execution(* com.zzy.web.controller.UserController.*(..))) 16 public Object test(ProceedingJoinPoint pjp) throws Throwable { 17 Long startTime new Date().getTime(); 18 Object[] args pjp.getArgs(); 19 for (Object arg : args) { 20 System.out.println(aspect 参数 arg); 21 } 22 Object object pjp.proceed(); 23 System.out.println(aspect 请求耗时 (new Date().getTime() - startTime)); 24 System.out.println(aspect 请求结果 new ObjectMapper().writeValueAsString(object)); 25 26 return object; 27 28 } 29 }  下图是三种方式的拦截顺序图片来自慕课网       转载于:https://www.cnblogs.com/zuxiaoyuan/p/9702363.html
http://www.lebaoying.cn/news/32078.html

相关文章:

  • 化妆品企业网站建设的缺点html5网站动态效果
  • 用lnmp做网站wordpress拉
  • 网站建设做网站好吗建筑网片计算公式详解
  • 郑州做网站推广地网站开发的外文翻译
  • 专业做网站建设建站成都圣都装饰装修公司
  • 陵县网站建设网站301做排名
  • 网站建设结课总结模板网站做外贸好不好
  • 襄阳网站建设的公司一键生成房屋设计图
  • 鞍山建设局的网站合适的网站建设的公司怎么找
  • 触屏端网站开发最新的高端网站建设
  • 网站建设方案计划书可信网站认证收费
  • 哪些网站可以做网站全球十大创意广告
  • 美观网站建设哪家好百度商务合作电话
  • 舟山网站建设开发学做衣服上什么网站好
  • php网站开发教程网建筑设计模板
  • 怎么用wordpress建电商网站企业网站的主要内容
  • 服务器做内网网站2019销售网站开发与设计现状
  • 有哪个网站有免费视频素材外贸平台有哪些用户量大的
  • 一般什么行业做网站的多电子商务网站建设的四个步骤
  • 网站推广计划的内容中国建设银行行号查询网站
  • 私人定制网站行业信息采集软件
  • 广西建设厅网站优化软件排名优化
  • 站群搭建梅州做网站
  • 网站设置不能手机访问建网站服务器怎么选择
  • 网站制作公司十强网站建设江门 优荐
  • 同城分类网站建设珠海专业网站制作平台
  • 网站上传安装旅游网站建设色彩搭配表
  • 郑州网站服务公司网站建设的培训班
  • 做网站导航cms微信小程序购物商城
  • 只做早餐的网站辽宁省城乡和建设厅网站