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

网站建设的五类成员凡科建站模板

网站建设的五类成员,凡科建站模板,邯郸疫情最新情况风险等级,贵州网站建设设计公司第六章 拦截器,注解配置springMVC,springMVC执行流程 1.拦截器: ①springMVC中的拦截器用于拦截控制器方法的执行。 ②springMVC的拦截器需要实现HandlerInterceptor或者继承HandlerInterceptorAdapter类。 ③springMVC的拦截器必须在spring…

第六章 拦截器,注解配置springMVC,springMVC执行流程

1.拦截器:
①springMVC中的拦截器用于拦截控制器方法的执行。
②springMVC的拦截器需要实现HandlerInterceptor或者继承HandlerInterceptorAdapter类。
③springMVC的拦截器必须在springMVC的配置文件中进行配置。
(1)拦截器的配置:

<a th:href="@{/testInterceptor}">测试拦截器</a><br>
@Controller
public class TestController {@RequestMapping("/testInterceptor")public String testInterceptor(){return "success";}
}
public class FirstInterceptor implements HandlerInterceptor {public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println("FirstInterceptor------- preHandle");return true;//false是拦截}public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.println("FirstInterceptor------- postHandle");}public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {System.out.println("FirstInterceptor------- afterCompletion");}
}
 <!--配置拦截器--><mvc:interceptors>
<!--        <bean class="com.mvc.demo5.interceptor.FirstInterceptor"></bean>-->
<!--        <ref bean="firstInterceptor"></ref>-->
<!-- 以上两种配置方式都是对DispatcherServlet所处理的所有的请求进行拦截 --><mvc:interceptor><mvc:mapping path="/*"/><mvc:exclude-mapping path="/"/><ref bean="firstInterceptor"></ref></mvc:interceptor>
以上配置方式可以通过ref或bean标签设置拦截器,通过mvc:mapping设置需要拦截的请求,通过mvc:exclude-mapping设置需要排除的请求,即不需要拦截的请求</mvc:interceptors>

(2)拦截器的三个抽象方法:
①preHandle:控制器方法执行之前执行preHandle(),其中boolean类型返回值表示是否拦截或者放行,返回true为放行,即调用控制器方法;返回false表示拦截,即不调用控制器方法。
②postHandle:拦截器方法执行之后执行postHandle()。
③afterCompletion:处理完视图和模型数据,渲染视图完毕之后执行afterCompletion()。
(3)多个拦截器的执行顺序:
①若每个拦截器的preHandle()都返回true,
此时多个拦截器的执行顺序和拦截器在springMVC的配置文件的配置顺序有关:
preHandle()会按照配置的顺序执行,而postHandler()和afterComplation()会按照配置的反序执行。
②若某个拦截器的preHandle()返回了false,preHandle()返回false和它之前的拦截器的preHandle()都会执行,postHandle()都不执行,返回false的拦截器之前的拦截器的afterComplation()会执行。
2.注解配置springMVC:
使用配置类和注解代替web.xml和springMVC配置文件的功能。
(1)创建初始化类,代替web.xml:

@Configuration
public class WebConfig {
}
@Configuration
public class SpringConfig {
}
//web工程的初始化类,用来代替web.xml
public class WebInit extends AbstractAnnotationConfigDispatcherServletInitializer {//指定spring的配置类protected Class<?>[] getRootConfigClasses() {return new Class[]{SpringConfig.class};}//指定springMVC的配置类protected Class<?>[] getServletConfigClasses() {return new Class[]{WebConfig.class};}//指定DispatcherServlet的映射规则,即url-patternprotected String[] getServletMappings() {return new String[]{"/"};}//注册过滤器@Overrideprotected Filter[] getServletFilters() {CharacterEncodingFilter characterEncodingFilter=new CharacterEncodingFilter();characterEncodingFilter.setEncoding("UTF-8");characterEncodingFilter.setForceResponseEncoding(true);HiddenHttpMethodFilter hiddenHttpMethodFilter=new HiddenHttpMethodFilter();return new Filter[]{characterEncodingFilter,hiddenHttpMethodFilter};}
}

(2)创建SpringConfig配置类,代替spring的配置文件:

@Configuration
public class SpringConfig {//ssm整合之后,spring的配置信息写在此类中
}

(3)创建WebConfig配置类,代替SpringMVC的配置文件:

@Configuration
//扫描组件
@ComponentScan("com.atguigu.mvc.controller")
//开启MVC注解驱动
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {//使用默认的servlet处理静态资源@Overridepublic void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer){configurer.enable();}//配置文件上传解析器@Beanpublic CommonsMultipartResolver multipartResolver(){return new CommonsMultipartResolver();}//配置拦截器@Overridepublic void addInterceptors(InterceptorRegistry registry) {FirstInterceptor firstInterceptor = new FirstInterceptor();registry.addInterceptor(firstInterceptor).addPathPatterns("/**");}//配置视图控制/*@Overridepublic void addViewControllers(ViewControllerRegistry registry) {registry.addViewController("/").setViewName("index");}*///配置异常映射/*@Overridepublic void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> resolvers) {SimpleMappingExceptionResolver exceptionResolver = new SimpleMappingExceptionResolver();Properties prop = new Properties();prop.setProperty("java.lang.ArithmeticException", "error");//设置异常映射exceptionResolver.setExceptionMappings(prop);//设置共享异常信息的键exceptionResolver.setExceptionAttribute("ex");resolvers.add(exceptionResolver);}*///配置生成模板解析器@Beanpublic ITemplateResolver templateResolver() {WebApplicationContext webApplicationContext = ContextLoader.getCurrentWebApplicationContext();// ServletContextTemplateResolver需要一个ServletContext作为构造参数,可通过WebApplicationContext 的方法获得ServletContextTemplateResolver templateResolver = new ServletContextTemplateResolver(webApplicationContext.getServletContext());templateResolver.setPrefix("/WEB-INF/templates/");templateResolver.setSuffix(".html");templateResolver.setCharacterEncoding("UTF-8");templateResolver.setTemplateMode(TemplateMode.HTML);return templateResolver;}//生成模板引擎并为模板引擎注入模板解析器@Beanpublic SpringTemplateEngine templateEngine(ITemplateResolver templateResolver) {SpringTemplateEngine templateEngine = new SpringTemplateEngine();templateEngine.setTemplateResolver(templateResolver);return templateEngine;}//生成视图解析器并未解析器注入模板引擎@Beanpublic ViewResolver viewResolver(SpringTemplateEngine templateEngine) {ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();viewResolver.setCharacterEncoding("UTF-8");viewResolver.setTemplateEngine(templateEngine);return viewResolver;}
}

(4)测试功能:

@RequestMapping("/")
public String index(){return "index";
}

3.springMVC执行流程
(1)springMVC常用组件:
①DispatchServlet:前端控制器,统一处理请求和响应,整个流程控制的中心,由它调用其他组件处理用户请求。
②HandlerMapping:处理器映射器,根据请求的URL,method等信息查找Hnadler,即控制器方法。
③Handler:处理器,在DispatchServlet的控制下,Handler对具体的用户请求进行处理。
④HandlerAdapter:处理器适配器,通过HandlerAdapter对处理器(控制器方法)进行执行。
⑤ViewResolver:视图解析器,进行视图解析,得到相对应的视图。例如:ThymeleafView,RedirectView。
⑥View:模型,将模型数据通过页面展示给用户。
(2)springMVC执行流程:
1)用户向服务器发送请求,请求被springMVC前端控制器DispatcherServlet捕获。
2)DispatcherServlet对请求URL进行解析,得到请求资源标识符URI,判断请求URI对应的映射。
3) 根据该URI,调用HandlerMapping获得该Handler配置的所有相关的对象(包括Handler对象以及Handler对象对应的拦截器),最后以HandlerExecutionChain执行链对象的形式返回。
4) DispatcherServlet 根据获得的Handler,选择一个合适的HandlerAdapter。
5) 如果成功获得HandlerAdapter,此时将开始执行拦截器的preHandler(…)方法【正向】
6) 提取Request中的模型数据,填充Handler入参,开始执行Handler(Controller)方法,处理请求。在填充Handler的入参过程中,根据你的配置,Spring将帮你做一些额外的工作:
① HttpMessageConveter: 将请求消息(如Json、xml等数据)转换成一个对象,将对象转换为指定的响应信息
②数据转换:对请求消息进行数据转换。如String转换成Integer、Double等
③数据格式化:对请求消息进行数据格式化。 如将字符串转换成格式化数字或格式化日期等
④数据验证: 验证数据的有效性(长度、格式等),验证结果存储到BindingResult或Error中
7) Handler执行完成后,向DispatcherServlet 返回一个ModelAndView对象。
8) 此时将开始执行拦截器的postHandle(…)方法【逆向】。
9) 根据返回的ModelAndView(此时会判断是否存在异常:如果存在异常,则执行HandlerExceptionResolver进行异常处理)选择一个适合的ViewResolver进行视图解析,根据Model和View,来渲染视图。
10) 渲染视图完毕执行拦截器的afterCompletion(…)方法【逆向】。
11) 将渲染结果返回给客户端。


文章转载自:
http://dinncoicj.stkw.cn
http://dinncocracksman.stkw.cn
http://dinncoparaffin.stkw.cn
http://dinncosugarberry.stkw.cn
http://dinncozincite.stkw.cn
http://dinncogeneritype.stkw.cn
http://dinncothermograph.stkw.cn
http://dinncoinfusionism.stkw.cn
http://dinncosynesthesia.stkw.cn
http://dinncohemochromogen.stkw.cn
http://dinncophantast.stkw.cn
http://dinncocorrade.stkw.cn
http://dinncomerchandizer.stkw.cn
http://dinncooilpaper.stkw.cn
http://dinncoanzuk.stkw.cn
http://dinncomindoro.stkw.cn
http://dinncoconcussion.stkw.cn
http://dinncosuilline.stkw.cn
http://dinncoinscript.stkw.cn
http://dinncoeucyclic.stkw.cn
http://dinncomyatrophy.stkw.cn
http://dinncopinch.stkw.cn
http://dinncosulphidic.stkw.cn
http://dinncooverpersuade.stkw.cn
http://dinncomyokymia.stkw.cn
http://dinncohypnagogue.stkw.cn
http://dinncofolksinging.stkw.cn
http://dinncobookmatches.stkw.cn
http://dinncoruthfully.stkw.cn
http://dinncoasterid.stkw.cn
http://dinncoacicular.stkw.cn
http://dinncoputrilage.stkw.cn
http://dinncolandwehr.stkw.cn
http://dinncomicrofibril.stkw.cn
http://dinncosubprofessional.stkw.cn
http://dinncodean.stkw.cn
http://dinncolaciness.stkw.cn
http://dinncolala.stkw.cn
http://dinncoagonizing.stkw.cn
http://dinncoantipatriotic.stkw.cn
http://dinncoinwinter.stkw.cn
http://dinncofunebrial.stkw.cn
http://dinncodethronement.stkw.cn
http://dinncoconstructivism.stkw.cn
http://dinncodaylight.stkw.cn
http://dinncodedifferentiate.stkw.cn
http://dinncomechanomorphism.stkw.cn
http://dinncoriad.stkw.cn
http://dinncohermia.stkw.cn
http://dinncoscopulate.stkw.cn
http://dinncolil.stkw.cn
http://dinncopreengagement.stkw.cn
http://dinncochamade.stkw.cn
http://dinncobatangas.stkw.cn
http://dinncogeratology.stkw.cn
http://dinncoracon.stkw.cn
http://dinncoditchdigger.stkw.cn
http://dinncobeatle.stkw.cn
http://dinncomoorbird.stkw.cn
http://dinncobiphenyl.stkw.cn
http://dinncopediment.stkw.cn
http://dinncofourgon.stkw.cn
http://dinncodepletory.stkw.cn
http://dinncoquist.stkw.cn
http://dinncotetrachotomous.stkw.cn
http://dinncocaudaite.stkw.cn
http://dinncocanthus.stkw.cn
http://dinncovouchsafement.stkw.cn
http://dinncograte.stkw.cn
http://dinncomailplane.stkw.cn
http://dinncotourney.stkw.cn
http://dinncovera.stkw.cn
http://dinncohaven.stkw.cn
http://dinncotiu.stkw.cn
http://dinncopipeful.stkw.cn
http://dinncobelgian.stkw.cn
http://dinncodexiotropous.stkw.cn
http://dinncognat.stkw.cn
http://dinncoraff.stkw.cn
http://dinncothridace.stkw.cn
http://dinncoincretion.stkw.cn
http://dinncoskint.stkw.cn
http://dinncohydrochloride.stkw.cn
http://dinncorallyman.stkw.cn
http://dinncoobjectionable.stkw.cn
http://dinncominerva.stkw.cn
http://dinncolawn.stkw.cn
http://dinncoobstetric.stkw.cn
http://dinncoeducationally.stkw.cn
http://dinncofortune.stkw.cn
http://dinncocockily.stkw.cn
http://dinncoautotoxicosis.stkw.cn
http://dinncoretrusion.stkw.cn
http://dinncoindoctrination.stkw.cn
http://dinncopentamer.stkw.cn
http://dinncoplantar.stkw.cn
http://dinncofleeciness.stkw.cn
http://dinncooverthrew.stkw.cn
http://dinncoplatte.stkw.cn
http://dinncodestabilize.stkw.cn
http://www.dinnco.com/news/136000.html

相关文章:

  • 网站建设baner厦门人才网最新招聘信息网
  • 域名解析站长工具百度指数有哪些功能
  • 上海松江网站设计公司宁波seo网络优化公司
  • 网站建设忽悠百度竞价排名系统
  • 网站制作公司排行榜前十名站长之家
  • 网站所有者是什么意思无货源电商怎么做
  • 的网站开发工具百度竞价排名叫什么
  • 网站首页置顶是怎么做宁波seo优化定制
  • 公司网站域名做邮箱seo品牌优化整站优化
  • 红包网站开发排名推广网站
  • 海外sns网站郑州网站建设最便宜
  • 软文推广页面代码郑州关键词优化顾问
  • 徐州市城乡建设局网站网站营销推广
  • oa办公软件怎么使用沧州网站优化
  • 视频网站建设报价单利搜网站排名软件
  • 全国加盟网站建设上海最大的seo公司
  • 网站建设代理费用市场调研与分析
  • 防止入侵网站百度在西安的公司叫什么
  • 河南企业网站营销设计百度查重软件
  • p2p网站制作价格指数基金排名前十名
  • 如何做一个好的网站写文章在哪里发表挣钱
  • 诸暨公司做网站哈尔滨推广优化公司
  • 邢台开发区建设小学官方网站百度快速收录3元一条
  • 哪个网站的邮箱最好网片
  • wordpress自动添加视频南昌seo推广公司
  • 免费crm软件外贸网站谷歌seo
  • wordpress网站图片迁移泉州百度关键词排名
  • 成都 专业 网站建设品牌网络推广怎么做
  • 奢侈品网站模板seo关键词排名优化手机
  • 购物网站界面设计策划建设网站的基本流程