最近正在写一个项目,此项目是用Spring、SpringMVC 搭建。但是,由于各种原因,需要重写,才发现对 Spring 并没有想象中的那么熟悉,于是通过博客记录一下初始化 Spring 项目的过程。
说明
项目名称: HelloWorld
JDK version: 1.8.131
IDE: Spring Tool Suite 3.8.4.RELEASE[以下简称 STS]
Maven: 3.3.9
一、 Maven 项目的搭建
- 首先打开 STS,新建一个工作空间,修改工作空间字符集为 UTF-8,修改 jsp 文件的编码为 UTF-8,并且设置 Maven 的安装位置及配置文件所在的位置。这里建议将 Maven 中央仓库的位置设置为阿里云,速度能够得到保障。
<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
不知如何设置的请自行 Google or Baidu。
- 待一切设置好后可以开始创建 Maven 工程了。
- 记住一定勾选 Create a simple project(skip archetype selection),尽量不要使用任何模板,不然会造成很多不必要的麻烦。
- 填写相关内容并 Finish。
由于我们选择的 package 为 war,初始化项目的时候肯定会报错,因为没有 web.xml 文件,稍后我们将解决这个问题。在此之前先解决一下 Java 和 Dynamic Web Module 版本
- 右击 hello-world 项目->属性(properties),或者 Alt+Enter 也能打开该界面,接着点击 Project Facets。
选择相应的版本进行设置。
如果 jdk 版本过低,请选择稍低一点的 web module 版本。
- 在 webapp 文件夹下新建文件夹 WEB-INF。
- 在 WEB-INF 目录中创建 web.xml 文件,确保版本为当初设置的 Web Module 版本。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">
<display-name>hello-world</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
至此,项目没有任何的错误信息,Maven 项目的搭建基本完成。
二、 Spring 的集成
由于需要连接数据库,所以这里采用**Mybatis以及druid**数据库连接池,同时也需要 slf4j 作为日志的操作。
- 依赖的配置,相关的配置可以查看**github 源码**
<properties>
<java.version>1.8</java.version>
<junit.version>4.12</junit.version>
<spring.version>4.3.7.RELEASE</spring.version>
...
</properties>
<dependencies>
...
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
- 配置资源拷贝插件、Maven 编译插件和 Tomcat 插件
我习惯用 Tomcat 插件作为项目的运行服务器,但这会带来一个问题就是,调试是一个很艰难的过程。所以请慎重! 当然配置文件不是一层不变的,你可以根据自己的喜好自行配置。
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<!-- 资源文件拷贝插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.7</version>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!-- java编译插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!-- 配置Tomcat插件 -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>80</port>
<path>/</path>
</configuration>
</plugin>
</plugins>
</build>
- 配置 Spring 相关的配置
在 src/main/resources 创建 mybatis、resource、spring 三个文件夹。
- 新建包名
cn.edu.xxx.dao cn.edu.xxx.service
cn.edu.xxx.controller
cn.edu.xxx.util
- 配置 Mybatis
在 mybatis 文件夹里新建 SqlMapConfig.xml 文件。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 这里可以不需要配置任何配置 -->
<settings>
<setting name="cacheEnabled" value="true" />
</settings>
</configuration>
在 resource 文件夹里新建 db.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 源码**查看相应的配置。
- 配置 Spring-Transaction
在 spring 文件夹中新建 applicationContext-trans.xml 点击查看
- 配置 Spring-Service
在 spring 文件夹中新建 applicationContext-service.xml 点击查看
- 配置 Spring-MVC
在 spring 文件夹中新建 springmvc.xml 点击查看
- 配置 web.xml
加载 Spring 容器
<!-- 加载Spring容器 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/applicationContext-*.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.conContextLoaderListener</listener-class>
</listener>
配置 SpringMVC
<!-- SrpingMVC的前端控制器 -->
<servlet>
<servlet-name>hello-world</servlet-name>
<servlet-class>org.springframework.web.sDispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>hello-world</servlet-name>
<!-- 这里会拦截所有的资源,包括静态资源,所以需要在springmvresource -->
<url-pattern>/</url-pattern>
</servlet-mapping>
解决 Post 乱码
<!-- 解决Post乱码 -->
<filter>
<filter-name>CharacterEncodingFilter</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>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
至此,几乎所有的配置都已经完毕。接下来可以新建 jsp 文件进行测试。
由于在 spring MVC 配置中添加了资源映射,故 jsp 文件的位置必须放入指定的位置。
在 WEB-INF 中新建 jsp 文件夹,并在此文件夹中新建 index.jsp 文件。
在 cn.edu.xxx.controller 包中新建 PageController。
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 端口,故不需要设置端口,且由于该插件的存在,不需要输入项目名称。