---
title: Spring项目初始化
date: 2017-07-19 10:58:09
tags: ['spring', 'teaching']
---
最近正在写一个项目,此项目是用[Spring](https://spring.io/)、SpringMVC 搭建。但是,由于各种原因,需要重写,才发现对 Spring 并没有想象中的那么熟悉,于是通过博客记录一下初始化 Spring 项目的过程。
# 说明
> 项目名称: HelloWorld
JDK version: **[1.8.131](http://www.oracle.com/technetwork/java/javase/downloads/index.html)**
IDE: **[Spring Tool Suite 3.8.4.RELEASE](https://spring.io/)**[以下简称 STS]
Maven: **[3.3.9](https://maven.apache.org/)**
## 一、 Maven 项目的搭建
1. 首先打开 STS,新建一个工作空间,修改工作空间字符集为 UTF-8,修改 jsp 文件的编码为 UTF-8,并且设置 Maven 的安装位置及配置文件所在的位置。这里建议将 Maven 中央仓库的位置设置为阿里云,速度能够得到保障。
```xml
alimaven
aliyun maven
http://maven.aliyun.com/nexus/content/groups/public/
central
```
不知如何设置的请自行 Google or Baidu。
1. 待一切设置好后可以开始创建 Maven 工程了。

1. 记住一定勾选 Create a simple project(skip archetype selection),尽量不要使用任何模板,不然会造成很多不必要的麻烦。

1. 填写相关内容并 Finish。

> 由于我们选择的 package 为 war,初始化项目的时候肯定会报错,因为没有 web.xml 文件,稍后我们将解决这个问题。在此之前先解决一下 Java 和 Dynamic Web Module 版本
1. 右击 hello-world 项目->属性(properties),或者 Alt+Enter 也能打开该界面,接着点击 Project Facets。

> 选择相应的版本进行设置。
如果 jdk 版本过低,请选择稍低一点的 web module 版本。
1. 在 webapp 文件夹下新建文件夹 WEB-INF。

1. 在 WEB-INF 目录中创建 web.xml 文件,确保版本为当初设置的 Web Module 版本。
```xml
hello-world
index.jsp
```
至此,项目没有任何的错误信息,Maven 项目的搭建基本完成。
## 二、 Spring 的集成
> 由于需要连接数据库,所以这里采用**[Mybatis](http://www.mybatis.org/mybatis-3/)**以及**[druid](http://druid.io/)**数据库连接池,同时也需要 slf4j 作为日志的操作。
1. 依赖的配置,相关的配置可以查看**[github 源码](https://github.com/JohnNiang/Hello-World/blob/master/pom.xml)**
```xml
1.8
4.12
4.3.7.RELEASE
...
...
org.springframework
spring-aspects
${spring.version}
```
1. 配置资源拷贝插件、Maven 编译插件和 Tomcat 插件
> 我习惯用 Tomcat 插件作为项目的运行服务器,但这会带来一个问题就是,调试是一个很艰难的过程。所以请慎重!
> 当然配置文件不是一层不变的,你可以根据自己的喜好自行配置。
```xml
${project.artifactId}
org.apache.maven.plugins
maven-resources-plugin
2.7
UTF-8
org.apache.maven.plugins
maven-compiler-plugin
3.2
${java.version}
${java.version}
UTF-8
org.apache.tomcat.maven
tomcat7-maven-plugin
2.2
80
/
```
1. 配置 Spring 相关的配置
在 src/main/resources 创建 mybatis、resource、spring 三个文件夹。
1. 新建包名
> cn.edu.xxx.dao cn.edu.xxx.service
cn.edu.xxx.controller
cn.edu.xxx.util
1. 配置 Mybatis
在 mybatis 文件夹里新建 SqlMapConfig.xml 文件。
```xml
```
在 resource 文件夹里新建 db.properties 文件。这是有关数据库的配置,部分配置是需要读者自己填写。
```properties
# Database Configuration
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc.mysql://your ip:your port/you db name?useSSserverTimezone=UTC
jdbc.user=your db user name
jdbc.password=your db password
```
- 配置 Spring-DAO
在 spring 文件夹中新建 applicationContext-dao.xml
由于配置文件过长,请移步至**[github 源码](https://github.com/JohnNiang/Hello-World/blob/master/src/main/resources/spring/applicationContext-dao.xml)**查看相应的配置。
- 配置 Spring-Transaction
在 spring 文件夹中新建 applicationContext-trans.xml **[点击查看](https://github.com/JohnNiang/Hello-World/blob/master/src/main/resources/spring/applicationContext-trans.xml)**
- 配置 Spring-Service
在 spring 文件夹中新建 applicationContext-service.xml **[点击查看](https://github.com/JohnNiang/Hello-World/blob/master/src/main/resources/spring/applicationContext-service.xml)**
- 配置 Spring-MVC
在 spring 文件夹中新建 springmvc.xml **[点击查看](https://github.com/JohnNiang/Hello-World/blob/master/src/main/resources/spring/springmvc.xml)**
- 配置 web.xml
加载 Spring 容器
```xml
contextConfigLocation
classpath:spring/applicationContext-*.xml
org.springframework.web.conContextLoaderListener
```
配置 SpringMVC
```xml
hello-world
org.springframework.web.sDispatcherServlet
contextConfigLocation
classpath:spring/springmvc.xml
1
hello-world
/
```
解决 Post 乱码
```xml
CharacterEncodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
CharacterEncodingFilter
/*
```
---
至此,几乎所有的配置都已经完毕。接下来可以新建 jsp 文件进行测试。
> 由于在 spring MVC 配置中添加了资源映射,故 jsp 文件的位置必须放入指定的位置。
在 WEB-INF 中新建 jsp 文件夹,并在此文件夹中新建 index.jsp 文件。
在 cn.edu.xxx.controller 包中新建 PageController。
```java
package cn.edu.xxx.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class PageController {
@RequestMapping("/")
public String showIndex(){
return "index";
}
}
```
该项目可能存在报错的情况,那是因为 pom 文件的配置还未得到更新,只需要右击项目> Maven> Update Project,或者点击项目,然后按 Alt+F5 即可。

由于该 Maven 中配置有 tomcat-plugin,故可以使用它来运行我们的项目。
右击项目> Run As> Maven build

设置命令

点击 Run,项目开始启动,等待启动完毕

打开浏览器,输入 localhost 或者 127.0.0.1。
> 由于此前插件的端口设置的 80 端口,故不需要设置端口,且由于该插件的存在,不需要输入项目名称。

Spring项目初始化