137_Java_SpringMVC_注解配置

      網友投稿 802 2025-04-03

      使用配置類和注解代替web.xml和SpringMVC配置文件的功能


      1 創建初始化類,代替web.xml

      在Servlet3.0環境中,容器會在類路徑中(src, resource)查找實現javax.servlet.ServletContainerInitializer接口的類,如果找到的話就用它來配置Servlet容器 Spring提供了這個接口的實現,名為SpringServletContainerInitializer,這個類反過來又會查找實現WebApplicationInitializer的類并將配置的任務交給它們來完成。 Spring3.2引入了一個便利的WebApplicationInitializer基礎實現,名為AbstractAnnotationConfigDispatcherServletInitializer, 當我們的類擴展了AbstractAnnotationConfigDispatcherServletInitializer并將其部署到Servlet3.0容器的時候,容器會自動發現它,并用它來配置Servlet上下文

      137_Java_SpringMVC_注解配置

      //web工程的初始化類,用來代替web.xml public class WebInit extends AbstractAnnotationConfigDispatcherServletInitializer { /** * 制定spring配置類 * @return */ @Override protected Class[] getRootConfigClasses() { return new Class[]{SpringConfig.class}; } /** * 指定springMVC的配置類 * @return */ @Override protected Class[] getServletConfigClasses() { return new Class[]{WebConfig.class}; } /** * 指定DispatcherServlet的映射規則,即url-pattern * @return */ @Override protected String[] getServletMappings() { return new String[]{"/"}; } @Override protected Filter[] getServletFilters() { CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter(); characterEncodingFilter.setEncoding("UTF-8"); characterEncodingFilter.setForceRequestEncoding(true); HiddenHttpMethodFilter hiddenHttpMethodFilter = new HiddenHttpMethodFilter(); return new Filter[]{characterEncodingFilter, hiddenHttpMethodFilter}; } }

      2 創建SpringConfig配置類,代替spring的配置文件

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

      3 創建WebConfig配置類,代替SpringMVC的配置文件

      /** * 代替SpringMVC的配置文件: * 1、掃描組件 2、視圖解析器 3、view-controller 4、default-servlet-handler * 5、mvc注解驅動 6、文件上傳解析器 7、異常處理 8、- */ //將當前類標識為一個配置類 @Configuration //1、掃描組件 @ComponentScan("com.alex.mvc.controller") //5、mvc注解驅動 @EnableWebMvc // 靜態資源,本身不是一個bean,需要通過實現接口 WebMvcConfigurer來實現 public class WebConfig implements WebMvcConfigurer { //4、default-servlet-handler @Override public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { configurer.enable(); } /** * * 上下文下的一層目錄 * 攔截所有 * 排除 / * * */ //8、- @Override public void addInterceptors(InterceptorRegistry registry) { TestInterceptor testInterceptor = new TestInterceptor(); registry.addInterceptor(testInterceptor).addPathPatterns("/**"); // /* 一層, /** 所有 } //3、view-controller @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/hello").setViewName("hello"); } //6、文件上傳解析器 @Bean public MultipartResolver multipartResolver(){ CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver(); return commonsMultipartResolver; } //7、異常處理 /** * * * * * * * error * * * * * * @param resolvers */ @Override public void configureHandlerExceptionResolvers(List resolvers) { SimpleMappingExceptionResolver exceptionResolver = new SimpleMappingExceptionResolver(); Properties prop = new Properties(); prop.setProperty("java.lang.ArithmeticException", "error"); //設置異常映射 exceptionResolver.setExceptionMappings(prop); //設置共享異常信息的鍵 exceptionResolver.setExceptionAttribute("exception"); resolvers.add(exceptionResolver); } //配置生成模板解析器 @Bean public 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; } //生成模板引擎并為模板引擎注入模板解析器 @Bean public SpringTemplateEngine templateEngine(ITemplateResolver templateResolver) { SpringTemplateEngine templateEngine = new SpringTemplateEngine(); templateEngine.setTemplateResolver(templateResolver); return templateEngine; } //生成視圖解析器并未解析器注入模板引擎 @Bean public ViewResolver viewResolver(SpringTemplateEngine templateEngine) { ThymeleafViewResolver viewResolver = new ThymeleafViewResolver(); viewResolver.setCharacterEncoding("UTF-8"); viewResolver.setTemplateEngine(templateEngine); return viewResolver; } }

      Java MVC Spring

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:為什么國產工控主板的價格會比較貴呢
      下一篇:在線協作表單(協同表單)
      相關文章
      亚洲一卡一卡二新区无人区| 亚洲天天在线日亚洲洲精| 综合亚洲伊人午夜网 | 亚洲国产精品免费视频| 亚洲人成77777在线播放网站| 色偷偷亚洲第一综合| 国产偷国产偷亚洲高清在线| 国产亚洲人成在线播放| 国产成人高清亚洲一区久久| 国内成人精品亚洲日本语音 | 亚洲国产一区国产亚洲| 久久亚洲国产精品| 久热综合在线亚洲精品| 亚洲v高清理论电影| 久久青青草原亚洲av无码app| 亚洲久本草在线中文字幕| 亚洲今日精彩视频| 亚洲精品自在线拍| 亚洲喷奶水中文字幕电影 | 亚洲av无码片区一区二区三区| 亚洲伊人久久大香线蕉啊| 97久久国产亚洲精品超碰热| 一本色道久久88亚洲精品综合 | 亚洲精品无AMM毛片| 国产成人亚洲精品无码AV大片| 亚洲AV无码不卡在线观看下载| 亚洲婷婷国产精品电影人久久| 亚洲一区二区女搞男| 亚洲av午夜福利精品一区人妖| 亚洲邪恶天堂影院在线观看| 亚洲男人电影天堂| 亚洲综合无码一区二区痴汉| 亚洲av色香蕉一区二区三区蜜桃| 亚洲国产精品激情在线观看| 亚洲中文字幕无码永久在线| 亚洲av网址在线观看| 亚洲一卡二卡三卡四卡无卡麻豆| 亚洲人成电影网站免费| 亚洲av再在线观看| 亚洲αv久久久噜噜噜噜噜| 亚洲黄网在线观看|