當前位置:
                    首頁 >
                            前端技术
>                            javascript
>内容正文                
                        
                    javascript
Spring MVC 全注解配置 (十一)
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                Spring MVC 全注解配置 (十一)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                完整的項目案例:?springmvc.zip
目錄
?
實例
項目結構:
?
父級的pom配置:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>edu.nf</groupId><artifactId>springmvc</artifactId><version>1.0-SNAPSHOT</version><modules><module>ch01</module><module>ch02</module><module>ch03</module><module>ch04</module><module>ch05</module><module>ch06</module><module>ch07</module><module>ch08</module><module>ch09</module><module>ch10</module><module>ch11</module></modules><packaging>pom</packaging><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><java.version>1.8</java.version><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion><!-- spring版本 --><spring.version>5.1.1.RELEASE</spring.version><servlet.version>4.0.1</servlet.version></properties><dependencies><!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>${servlet.version}</version><scope>provided</scope></dependency><!-- Spring mvc依賴,會傳遞依賴context、core等核心包--><!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency></dependencies><!-- war插件 --><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-war-plugin</artifactId><version>2.2</version><configuration><warSourceDirectory>web</warSourceDirectory><!-- 指定web.xml路徑 --><!--<webXml>web\WEB-INF\web.xml</webXml>--><!-- 打包時忽略web.xml文件--><failOnMissingWebXml>false</failOnMissingWebXml></configuration></plugin></plugins></build></project> View Code子級的pom(ch11)配置:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>springmvc</artifactId><groupId>edu.nf</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>ch11</artifactId><packaging>war</packaging><dependencies><!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind --><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.9.6</version></dependency><!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload --><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.1</version></dependency><!-- https://mvnrepository.com/artifact/org.hibernate.validator/hibernate-validator --><dependency><groupId>org.hibernate.validator</groupId><artifactId>hibernate-validator</artifactId><version>6.0.13.Final</version></dependency></dependencies></project> View Code取代web.xml的配置類
?
package edu.nf.ch11.config;import edu.nf.ch11.filter.EncodingFilter; import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;import javax.servlet.DispatcherType; import javax.servlet.ServletContext; import javax.servlet.ServletException; import java.util.EnumSet;/*** @author wangl* @date 2018/11/6* 取代web.xml*/ public class WebInit extends AbstractAnnotationConfigDispatcherServletInitializer {@Overrideprotected Class<?>[] getRootConfigClasses() {return null;}/*** 指定mvc的核心配置類* @return*/@Overrideprotected Class<?>[] getServletConfigClasses() {return new Class[]{WebConfig.class};}/*** 等同于將DispatcherServlet的url-pattern設置為"/"* @return*/@Overrideprotected String[] getServletMappings() {return new String[]{"/"};}/*** 也可以在onStartup中可以添加自定義的Servlet、Listener、Filter* 這里以添加過濾器為演示* addMappingForUrlPatterns方法參數說明:* 參數一: 請求過濾的類型,如果要使用默認的EnumSet.of(DispatcherType.REQUEST)(表示過濾所有的請求),則為null* 參數二: 如果給定的過濾器映射應在其他任何聲明的過濾器映射之后匹配,則為true;* 如果在獲得此FilterRegistration的ServletContext的任何已聲明過濾器映射之前應該匹配,則為false* 參數三: 過濾器映射的url* @param servletContext* @throws ServletException*/@Overridepublic void onStartup(ServletContext servletContext) throws ServletException {servletContext.addFilter("encodingFilter", EncodingFilter.class).addMappingForUrlPatterns(null, false, "/*");//必須調用回父類的onStartup方法,否則不會初始化DispatcherServletsuper.onStartup(servletContext);} }?
mvc配置類,取代dispatcher-servlet.xml
?
package edu.nf.ch11.config;import edu.nf.ch11.interceptors.LoginInterceptor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.web.multipart.commons.CommonsMultipartResolver; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import org.springframework.web.servlet.view.InternalResourceViewResolver;/*** @author wangl* @date 2018/11/6* mvc配置類,取代dispatcher-servlet.xml*//*** 聲明配置類*/ //@Configuration /*** 啟用包掃描*/ @ComponentScan(basePackages = "edu.nf.ch11") /*** 啟用mvc注解驅動*/ @EnableWebMvc /*** 如果需要擴展webmvc配置,可以實現WebMvcConfigurer接口,* 覆蓋相關的default方法*/ public class WebConfig implements WebMvcConfigurer {/*** 配置靜態資源處理方式一:使用容器的默認Servlet處理*//*@Overridepublic void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {//啟用默認Servlet支持configurer.enable();}*//*** 配置靜態資源處理方式二:springmvc處理靜態資源*/@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/static/**").addResourceLocations("/static/");}/*** 添加攔截器* addInterceptor方法指定自定義攔截器對象* addPathPatterns方法指定哪些請求經過攔截器* excludePathPatterns方法指定哪些請求放行*/@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**").excludePathPatterns("/static/login.html","/static/js/**","/userLogin");}/*** 配置commons-upload上傳*/@Beanpublic CommonsMultipartResolver multipartResolver(){CommonsMultipartResolver resolver = new CommonsMultipartResolver();//設置限制上傳大小resolver.setMaxUploadSize(104857600);//設置編碼resolver.setDefaultEncoding("UTF-8");return resolver;}/*** 配置默認的視圖解析器*/@Beanpublic InternalResourceViewResolver viewResolver(){InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();viewResolver.setPrefix("/WEB-INF/jsp/");viewResolver.setSuffix(".jsp");//如果頁面需要使用JSTL標簽庫//viewResolver.setViewClass(JstlView.class);return viewResolver;} }?
BaseController:
package edu.nf.ch11.controller;import edu.nf.ch11.controller.vo.ResponseVO;/*** @author wangl* @date 2018/11/6*/ public class BaseController {protected ResponseVO success(Object value){ResponseVO vo = new ResponseVO();vo.setValue(value);return vo;}protected ResponseVO success(){ResponseVO vo = new ResponseVO();return vo;}protected ResponseVO error(int code, String message){ResponseVO vo = new ResponseVO();vo.setCode(code);vo.setMessage(message);return vo;} } View CodeUserController:
package edu.nf.ch11.controller;import edu.nf.ch11.controller.vo.ResponseVO; import edu.nf.ch11.entity.Users; import edu.nf.ch11.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpSession;/*** @author wangl* @date 2018/11/6*/ @Controller public class UserController extends BaseController{@Autowiredprivate UserService userService;@PostMapping("/userLogin")public @ResponseBody ResponseVO login(Users user, HttpSession session){user = userService.getUser(user);session.setAttribute("user", user);return success("/static/index.html");} } View CodeEncodingFilter:
package edu.nf.ch11.filter;import org.springframework.context.annotation.ComponentScan;import javax.servlet.*; import javax.servlet.annotation.WebFilter; import java.io.IOException;/*** @author wangl* @date 2018/11/6*/ //@WebFilter(urlPatterns = "/*") public class EncodingFilter implements Filter {@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println("字符過濾器...");servletRequest.setCharacterEncoding("utf-8");servletResponse.setCharacterEncoding("utf-8");//請求放行 filterChain.doFilter(servletRequest, servletResponse);}@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}@Overridepublic void destroy() {} } View Code?
轉載于:https://www.cnblogs.com/hhmm99/p/9925083.html
總結
以上是生活随笔為你收集整理的Spring MVC 全注解配置 (十一)的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: Catalyst3560密码破解
- 下一篇: ubuntu 16.04 安装PhpMy
