logo头像

不破不立

快速搭建Spring MVC Web项目

此篇笔记主要讲述快速搭建一个简易Spring MVC Web项目的相关配置。主要有创建Maven webapp项目,配置pom.xml中的jar引入,配置web.xml以及dispatcher-servlet.xml等文件。

  • 创建Maven webapp项目
  • 配置pom.xml
  • 配置web.xml
  • 配置dispatcher-servlet.xml
  • 按需配置applicationContext.xml

首先,新建一个Maven web app项目,项目结构如下:

然后配置pom.xml,按需配置,主要是spring-webmvc.jar和javax.servlet-api.jar

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
<?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>site.sixteen</groupId>
<artifactId>spring-mvc-shiro-demo</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>

<name>spring-mvc-shiro-demo Maven Webapp</name>
<url>http://www.example.com</url>
<properties>
<spring.version>4.3.6.RELEASE</spring.version>
<servletapi.version>3.1.0</servletapi.version>

<logback.version>1.1.2</logback.version>
<jcl.slf4j.version>1.7.12</jcl.slf4j.version>
<jstl.version>1.2</jstl.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>

<dependencies>

<!-- springmvc支持 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--servlet支持-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>${servletapi.version}</version>
<scope>provided</scope>
</dependency>

<!--以上是spring mvc项目必备基础jar包-->

<!--junit测试支持-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- spring测试支持 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
<scope>test</scope>
</dependency>
<!-- 日志支持-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${jcl.slf4j.version}</version>
</dependency>

<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
<exclusions>
<exclusion>
<artifactId>slf4j-api</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
<!-- getter/setter/log等快速使用注解 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.10</version>
</dependency>
<!--工具类支持-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>
<!-- 用于处理日期数据,需要@DateTimeFormat的支持-->
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.3</version>
</dependency>
<!-- 数据校验 -->
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.1.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.4.1.Final</version>
</dependency>
</dependencies>

<build>
<finalName>spring-mvc-shiro-demo</finalName>
</build>
</project>

配置web.xml文件,主要配置项如下:

  • 修改web-app版本号,注意不同版本号对应的头部信息(点击查看
  • 配置Spring容器的配置文件
  • 配置上下文监听器
  • 配置前端控制器
  • 配置静态资源处理方式
  • 配置字符过滤器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0"
metadata-complete="true">

<display-name>Spring MVC Web Application with Shiro</display-name>

<!--配置加载Spring容器配置文件-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<!--配置上下文监听器ContextLoaderListener-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<!-- 配置SpringMVC前端控制器DispatcherServlet(Spring子容器) -->
<servlet>
<servlet-name>dispatcher-servlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 加载SpringMVC的配置文件 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:dispatcher-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
<async-supported>true</async-supported>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher-servlet</servlet-name>
<!--
配置过滤所有请求,符合SpringMVC对Restful的支持
/ 表示拦截除jsp外的所有请求
/* 表示拦截所有请求
-->
<url-pattern>/</url-pattern>
</servlet-mapping>

<!-- 以上是spring mvc项目基础配置 -->

<!--配置静态资源默认处理方式,需要在spring-mvc.xml里面配置<mvc:default-servlet-handler/>-->
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.js</url-pattern>
<url-pattern>*.css</url-pattern>
<url-pattern>/images/*</url-pattern>
</servlet-mapping>

<!-- 配置数据传输编码过滤器 -->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>

配置前端控制器dispatcher-servlet.xml,有时可能命名为spring-mvc.xml,根据个人习惯或者公司规定。

  • 开启注解模式
  • 配置包扫描
  • 配置静态资源处理方式
  • 配置视图解析器
  • 配置拦截器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

<!-- 开启SpringMVC注解模式-->
<!-- 简化配置:
(1)自动注册DefaultAnnotationHandlerMapping,AnnotationMethodHandlerAdapter
(2)提供一系列:数据绑定,数字和日期的format @NumberFormat,@DataTimeFormat,
xml,JSON默认读写支持
-->
<mvc:annotation-driven/>

<!-- 配置web相关Bean的扫描路径 -->
<context:component-scan base-package="site.sixteen.demo.web"/>


<!-- 配置静态资源默认处理方式
需要在web.xml中增加对静态资源的处理
-->
<!-- servlet-mapping 映射路径:"/" -->
<mvc:default-servlet-handler/>

<!-- 配置Jsp视图解析器ViewResolver-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" >
<property name="prefix" value="/"/>
<property name="suffix" value=".jsp"/>
</bean>


<!-- MVC拦截器,根据需要配置
应用场景:用户登录权限
-->
<!-- 规则:
1. /**拦截多级,如/test/hello
2. /*拦截一级,如/test,不会拦截/test/**请求
-->
<!--
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="site.sixteen.demo.interceptor"/>
</mvc:interceptor>
</mvc:interceptors>
-->
</beans>

配置Spring容器的配置文件,这里采用默认的文件命名 applicationContext.xml(因为一般可能还会细分为service,dao等配置)

1
略,这里只考虑搭建Spring MVC项目,暂时不考虑服务器端的具体实现

到此,一个简单的Spring MVC Web项目搭建完毕。

运行结果如下,

1533827775075

上一篇

评论系统未开启,无法评论!

如果有好的建议或疑问等可以发送邮件至:panhainan@yeah.net,或者添加QQ:1016593477,将你的建议或者疑问告诉作者,作者会对你的建议进行处理并补充到文章的尾部,谢谢大家的谅解!