完整的项目案例: 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 全注解配置 (十一)相关推荐

  1. java spring mvc_java spring mvc 全注解

    本人苦逼学生一枚,马上就要毕业,面临找工作,实在是不想离开学校.在老师的教导下学习了spring mvc ,配置文件实在繁琐,因此网上百度学习了spring mvc 全注解方式完成spring的装配工 ...

  2. 2.3.3 spring属性注入-注解注入-全注解-配置类扫描

    代码: spring2-属性注入-全注解-配置类扫描.zip - 蓝奏云文件大小:12.3 K|https://www.lanzouw.com/iPK5vvq21uf 这个博客,我们使用全注解的方式来 ...

  3. springmvc3.2+spring+hibernate4全注解方式整合(一)

    <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http:// ...

  4. Spring MVC常用注解说明

    2019独角兽企业重金招聘Python工程师标准>>>     使用Spring MVC的注解及其用法和其它相关知识来实现控制器功能. 02     之前在使用Struts2实现MV ...

  5. Spring MVC原理及配置详解

    转载自 http://blog.csdn.net/jianyuerensheng/article/details/51258942 [Spring]Spring MVC原理及配置 1.Spring M ...

  6. Spring MVC 无XML配置入门示例

    Spring MVC 无XML(纯 Java)配置入门示例 本示例是从<Spring in Action, Fourth Edition>一书而来,涉及的是书中5.1节部分内容,书中其实说 ...

  7. 【Spring】Spring MVC原理及配置详解

    [Spring]Spring MVC原理及配置 1.Spring MVC概述: Spring MVC是Spring提供的一个强大而灵活的web框架.借助于注解,Spring MVC提供了几乎是POJO ...

  8. spring mvc常用注解的说明

    spring mvc常用注解的说明 最近一段时间学习了springboot,所以熟悉一下mvc中常用的注解,这样可以方便开发 简介: @RequestMapping RequestMapping是一个 ...

  9. Spring JDBC-使用注解配置声明式事务

    系列 概述 使用Transactional注解 txannotation-driven其他属性 关于Transaction的属性 在何处标注Transactional注解 在方法处使用注解 使用不同的 ...

最新文章

  1. numpy.array()基本操作
  2. 解决Maven报Plugin execution not covered by lifecycle configuration (转载)
  3. 微型计算机温度控制系统课程设计,微机原理及其应用 微型计算机温度控制系统设计课程设计报告.doc...
  4. linux内核make menuconfig执行过程
  5. 网络知识普及:双网卡下知识知多少,路由表及网关那点事
  6. 基姆拉尔森计算公式(算任意日期是星期几)
  7. Linux后门入侵检测工具 rkhunter 安装使用
  8. qt插件开发python_Qt5 Matplotlib设计器插件
  9. 电压转换速率(Slew Rate,SR)
  10. 数字图像处理 采样定理_数字图像处理(第4版)
  11. CC1310开发环境
  12. win10自动更新后打开系统应用提示文件系统错误(-2147219196)
  13. 基于Processing的躲避球游戏
  14. Office 365 小技巧 :Microsoft Teams_ 就地编辑文档
  15. 模型量化论文阅读#1----综述:A Survey of Quantization Methods for Efficient Neural Network Inference
  16. HR/FR/EFR/AMR
  17. 【设计模式】用英雄联盟来解释代理模式
  18. dns服务器未影响无法上网,dns服务器未响应导致无法上网怎么办
  19. python关于图像去雾
  20. 机器学习 第二节 第二课

热门文章

  1. March 2007 CTP Linq 的一些改变
  2. jsp:include和%@include%的区别
  3. ASP.NET生命周期详解(转)
  4. JAVA时间格式的处理 SimpleDateFormat 类(小结)
  5. Java导入导出CSV文件
  6. HtmlUnit自动填写表单并提交
  7. (转载)Linux OOM Killer个人总结
  8. Opencv3.0+vs2015
  9. c3p0 参数 模糊查询_mybatis之动态sql,模糊查询,结果集处理,mybatis分页及特殊字符处理...
  10. shiro的用户认证