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 Code
UserController:
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 Code
EncodingFilter:
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 全注解配置 (十一)相关推荐
- java spring mvc_java spring mvc 全注解
本人苦逼学生一枚,马上就要毕业,面临找工作,实在是不想离开学校.在老师的教导下学习了spring mvc ,配置文件实在繁琐,因此网上百度学习了spring mvc 全注解方式完成spring的装配工 ...
- 2.3.3 spring属性注入-注解注入-全注解-配置类扫描
代码: spring2-属性注入-全注解-配置类扫描.zip - 蓝奏云文件大小:12.3 K|https://www.lanzouw.com/iPK5vvq21uf 这个博客,我们使用全注解的方式来 ...
- springmvc3.2+spring+hibernate4全注解方式整合(一)
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http:// ...
- Spring MVC常用注解说明
2019独角兽企业重金招聘Python工程师标准>>> 使用Spring MVC的注解及其用法和其它相关知识来实现控制器功能. 02 之前在使用Struts2实现MV ...
- Spring MVC原理及配置详解
转载自 http://blog.csdn.net/jianyuerensheng/article/details/51258942 [Spring]Spring MVC原理及配置 1.Spring M ...
- Spring MVC 无XML配置入门示例
Spring MVC 无XML(纯 Java)配置入门示例 本示例是从<Spring in Action, Fourth Edition>一书而来,涉及的是书中5.1节部分内容,书中其实说 ...
- 【Spring】Spring MVC原理及配置详解
[Spring]Spring MVC原理及配置 1.Spring MVC概述: Spring MVC是Spring提供的一个强大而灵活的web框架.借助于注解,Spring MVC提供了几乎是POJO ...
- spring mvc常用注解的说明
spring mvc常用注解的说明 最近一段时间学习了springboot,所以熟悉一下mvc中常用的注解,这样可以方便开发 简介: @RequestMapping RequestMapping是一个 ...
- Spring JDBC-使用注解配置声明式事务
系列 概述 使用Transactional注解 txannotation-driven其他属性 关于Transaction的属性 在何处标注Transactional注解 在方法处使用注解 使用不同的 ...
最新文章
- numpy.array()基本操作
- 解决Maven报Plugin execution not covered by lifecycle configuration (转载)
- 微型计算机温度控制系统课程设计,微机原理及其应用 微型计算机温度控制系统设计课程设计报告.doc...
- linux内核make menuconfig执行过程
- 网络知识普及:双网卡下知识知多少,路由表及网关那点事
- 基姆拉尔森计算公式(算任意日期是星期几)
- Linux后门入侵检测工具 rkhunter 安装使用
- qt插件开发python_Qt5 Matplotlib设计器插件
- 电压转换速率(Slew Rate,SR)
- 数字图像处理 采样定理_数字图像处理(第4版)
- CC1310开发环境
- win10自动更新后打开系统应用提示文件系统错误(-2147219196)
- 基于Processing的躲避球游戏
- Office 365 小技巧 :Microsoft Teams_ 就地编辑文档
- 模型量化论文阅读#1----综述:A Survey of Quantization Methods for Efficient Neural Network Inference
- HR/FR/EFR/AMR
- 【设计模式】用英雄联盟来解释代理模式
- dns服务器未影响无法上网,dns服务器未响应导致无法上网怎么办
- python关于图像去雾
- 机器学习 第二节 第二课
热门文章
- March 2007 CTP Linq 的一些改变
- jsp:include和%@include%的区别
- ASP.NET生命周期详解(转)
- JAVA时间格式的处理 SimpleDateFormat 类(小结)
- Java导入导出CSV文件
- HtmlUnit自动填写表单并提交
- (转载)Linux OOM Killer个人总结
- Opencv3.0+vs2015
- c3p0 参数 模糊查询_mybatis之动态sql,模糊查询,结果集处理,mybatis分页及特殊字符处理...
- shiro的用户认证