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

安微网站建设软件培训机构有哪些?哪个比较好

安微网站建设,软件培训机构有哪些?哪个比较好,沈阳logo设计工作室,推广什么前言很多时候#xff0c;当你以为掌握了事实真相的时间#xff0c;如果你能再深入一点#xff0c;你可能会发现另外一些真相。比如面向切面编程的最佳编程实践是AOP#xff0c;AOP的主要作用就是可以定义切入点#xff0c;并在切入点纵向织入一些额外的统一操作#xff0…前言很多时候当你以为掌握了事实真相的时间如果你能再深入一点你可能会发现另外一些真相。比如面向切面编程的最佳编程实践是AOPAOP的主要作用就是可以定义切入点并在切入点纵向织入一些额外的统一操作避免与业务代码过度耦合。熟悉java web项目的都知道另外还有过滤器filter、拦截器interceptor也有类似AOP的功能特性那么问题来了为什么一般说面向切面编程就是指AOP而不是过滤器和拦截器过滤器和拦截器在Spring boot中怎么实现这三者之间有什么区别Springboot项目快速实现Aop功能中分享了AOP的相关实现下面将再用两到三篇文章分别和大家分享一下过滤器、拦截器的实现以及AOP、过滤器、拦截器之间的横向对比以便在业务开发中能够快速、正确选对具体实现方法。环境配置jdk版本:1.8开发工具Intellij iDEA 2020.1springboot:2.3.9.RELEASEFilter简介Filter 中文意思是过滤器Filter的全限定类名是javax.servlet.Filter可以看出这是与servelt相关的一个接口SpringMVC核心是DispatcherServlet而DispatcherServlet又继承了Servlet进而可以推测出Filter与SpringMVC也是关联关系。事实上这样的推测也是正确的在SpringMVC项目中filter在浏览器与服务器之间起过滤的作用可以截取客户端和服务端之间的请求和响应信息并根据这些请求-响应信息作一些其他的操作但是要注意filter并不能改变请求-响应信息核心类FilterFilter接口的全限定类名是javax.servlet.Filter该接口有三个方法分别是1、init(...)用于初始化Filter2、doFilter(...)过滤请求和拦截响应信息的具体实现在这个方法里3、destroy(...)Filter对象被销毁时触发主要用于做一些收尾工作如资源的释放等FilterConfigFilterConfig接口的全限定类名是javax.servlet.FilterConfig该接口主要有四个方法分别是1、getFilterName() 获取Filter的名字2、getServletContext() 获取ServletContext对象即application3、getInitParameter() 获取Filter的初始化参数4、getInitParameterNames() 获取所有初始化参数的名字FilterChainFilterChainr接口的全限定类名是javax.servlet.FilterChain该接口只有一个方法是doFilter()方法用于调用Filter链上的下一个过滤器如果当前过滤器为最后一个或只有一个过滤器则该过滤器则将请求发送到目标资源。MyFilter2是自己实现的过滤器实现了Filter接口Filter接口依赖FilterChain接口和FilterConfig接口其中FilterChain接口的实现类是org.apache.catalina.core.ApplicationFilterChainFilterConfig接口的实现类是org.apache.catalina.core.ApplicationFilterConfig工作原理1、项目启动的时候先执行Filter的构造方法完成相关Filter对象的注册2、紧接着Filter对象的init()方法被调用开始对Filter做一些初始化操作3、项目启动完成后客户端每次向服务端发起请求时如果请求地址与过滤器定义的地址匹配则会执行Filter的doFilter()如果匹配上多个过滤器则会形成一个链路依次调用各个过滤器对象的doFilter()服务端作出响应后也会再次执行到各个过滤器对象的doFilter()请求和响应时过滤器链的执行顺序是先进后出4、服务器停止时调用Filter的destroy()方法用来释放资源。实现方式Springboot项目中一般有两种方式1、WebFilter注解即javax.servlet.annotation.WebFilter2、FilterRegistrationBean即org.springframework.boot.web.servlet.FilterRegistrationBean两种方式都需要在启动类上增加注解ServletComponentScan用于开启servlet相关bean的扫描其中包含有过滤器FilterSpringBootApplication ServletComponentScan public class FanfuApplication {public static void main(String[] args) {SpringApplication.run(FanfuApplication.class, args);} }代码实现1、WebFilter注解里定义一下过滤器的名字以及要对哪些请求进行过滤“/*”表示对所有的请求都过滤在实际业务中可具体对待如果在初始化的时候需要携带一些初始化的参数可以在initParams属性上使用WebInitParam注解来定义初始化参数名称和具体的值这些参数可以在filter对象初始化的时候获取到MyFIlter1和MyFIlter2使用的注解方式定义的过滤器Slf4j WebFilter(filterName myFilter1, urlPatterns /*, initParams {WebInitParam(name creator, value fanfu)}) public class MyFilter1 implements Filter {Overridepublic void init(FilterConfig filterConfig) throws ServletException {log.info(//myFilter1初始化开始);String creator filterConfig.getInitParameter(creator);log.info(//初始化参数creator:{},creator);}Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {log.info(//myFilter1开始执行);chain.doFilter(request, response);log.info(//myFilter1结束执行);}Overridepublic void destroy() {log.info(//myfilter1被销毁);} }Slf4j WebFilter(filterName myFilter2, urlPatterns /*) public class MyFilter2 implements Filter {Overridepublic void init(FilterConfig filterConfig) throws ServletException {log.info(//myFilter2初始化开始);}Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {log.info(//myFilter2开始执行);chain.doFilter(request, response);log.info(//myFilter2结束执行);}Overridepublic void destroy() {log.info(//myFilter2被销毁);} }2、FilterRegistrationBean方式在Springboot项目的配置类中使用FilterRegistrationBean来包装自定义的过滤器这种方式的最大好处就是可以自定义过滤器的执行顺序数字越小执行时的优先级就越高MyFIlter3和MyFIlter4是使用FilterRegistrationBean方式定义的过滤器Configuration public class WebConfig {Beanpublic FilterRegistrationBean filterRegistration1() {FilterRegistrationBean filterRegistrationBean new FilterRegistrationBean();filterRegistrationBean.setFilter(new MyFilter3());filterRegistrationBean.addUrlPatterns(/*);//定义过滤器对哪些请求路径进行过滤/*表示对所有请求都过滤filterRegistrationBean.setOrder(2);//定义过滤器的执行优先级数据越小优先级越高return filterRegistrationBean;}Beanpublic FilterRegistrationBean filterRegistration2() {FilterRegistrationBean filterRegistrationBean new FilterRegistrationBean();filterRegistrationBean.setFilter(new MyFilter4());filterRegistrationBean.addUrlPatterns(/*);filterRegistrationBean.setOrder(1);return filterRegistrationBean;} }Slf4j public class MyFilter3 implements Filter {Overridepublic void init(FilterConfig filterConfig) throws ServletException {log.info(//MyFilter3初始化开始);}Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {log.info(//MyFilter3开始执行);chain.doFilter(request,response);log.info(//MyFilter3结束执行);}Overridepublic void destroy() {log.info(//MyFilter3被销毁);} }Slf4j public class MyFilter4 implements Filter {Overridepublic void init(FilterConfig filterConfig) throws ServletException {log.info(//MyFilter4初始化开始);}Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {log.info(//MyFilter4开始执行);chain.doFilter(request,response);log.info(//MyFilter4结束执行);}Overridepublic void destroy() {log.info(//MyFilter4被销毁);} }未定义myFilter3、myFilter4的执行优先级即采取自然排序时的执行结果在请求前myFilter3的执行时机早于myFilter4响应后myFilter3的执行时机要晚于myFilter4定义myFilter4的优先级高于myFilter3时执行结果在请求前myFilter4的执行时机早于myFilter3响应后的myFilter4的执行时机要晚于myFilter3总结过滤器的实现是比较简单通过梳理这个过程我get到以下几个点1、过滤器是用于SpringMVC项目中即与servlet相关的项目2、过滤器的执行时机是在请求前和响应后有两种实现方式即WebFilter注解和FilterRegistrationBean如果对过滤器的执行顺序没有限制要求则可以使用第一种如果对过滤器的执行顺序有明确限制则可以使用第二种3、如果有多个过滤器对象时会形成一个过滤器链过滤器的执行顺序是先进后出4、过滤器可以过滤请求和拦截响应但是不能改变请求值和响应值
http://www.dnsts.com.cn/news/134965.html

相关文章:

  • 最专业的营销网站建设公司哪家好济南软件外包公司
  • 直接用apk 做登陆网站网站软文设计
  • 现在去横琴会变黄码吗企业网站优化的重要性
  • 网站建设维护合同广州网页设计机
  • 国外的模板网站有哪些郑州seo博客
  • 流浪动物网站开发网站建设配图
  • 南通企业网站有哪些企业网站建设应注意什么
  • 电商网站建设概念wordpress改成中文的
  • 注册的空间网站石家庄网站app制作
  • app手机电视网站设计方案模板网站定制网站
  • 制作网站报价单wordpress调用分类目录名称
  • 怎样查到一些做品牌包的网站宝安网站建设推广
  • php class 做网站郑州医疗网站建设
  • 免费网站软件正能量企信网官网查询入口
  • 网站建设代理渠道wordpress视频主题推荐
  • 湘潭城乡建设发展集团网站如何用织梦猫做网站和后台
  • 17网一起做网店网站宜兴建设局网站
  • 杭州微跑网站建设公司西安网站seo排名优化
  • 高端品牌网站建设电商网站设计做食品的网站设计要注意
  • 中国建设监理协会网站查询成绩广州企业宣传片
  • 网站备案时核验单免费图片素材高清
  • 做招聘信息的网站有哪些方面网站栏目标题
  • 站长网站工具dw做视频网站
  • 设计专业干货推荐网站小伟破解WordPress主题
  • 做网站需要学数据库吗响应式布局网站
  • 中国建设银行网站余额查询佛山网站优化推广方案
  • 苏州集团网站制作开发造价通工程造价信息网
  • 古建设计素材网站东阳科技网站建设
  • 给人做网站赚钱吗动漫设计师
  • 有哪些html5制作的网站网站开发者密钥