乐趣区

[转载]使用IntelliJ IDEA开发SpringMVC网站(一)开发环境

访问 GitHub 下载最新源码:https://github.com/gaussic/Sp…
文章已针对 IDEA 2016 做了一定的更新,部分更新较为重要,请重新阅读文章并下载最新源码。另外:文中的附图部分仍然为旧版本,请参照自身版本进行配置。
前言
由于近期一直在做学术方面的工作,项目开发相关工作并没有花太多的时间,导致这篇文章的更新停步了很长一段时间。现在应大家的要求,补上剩余部分,望能给大家带来一些帮助。由于时间的原因,在开发环境上面有了一定的更新,但是并不造成太大的影响。
最近在做某在线教育平台网站的开发,按师兄的建议要用 SpringMVC 来搞。之前对 SpringMVC 的认知度为 0,网上查阅各种资料,发现五花八门的配置都有,文章写的那叫一个乱啊,我觉得有些文章还是不要发出来的比较好,简直误人子弟耽误时间。最近借着师兄网上搜集的一些开发经验,找到了 IntelliJ 网站上的这篇文章《Getting Started with SpringMVC, Hibernate and JSON》(该链接已失效,内容会在文中体现),外加看了孔老师的《SpringMVC 视频教程》,着实有一种醍醐灌顶的感觉,整个路子瞬间通了,开发速度指数型上涨。现在把开发过程中的一些相关经验贴出来。
一、相关环境
– Intellij IDEA 2016.2 Ultimate

– Tomcat 8.0.35

– JDK 1.8.0_92

– Spring 4.2.6

– MySql 5.7

– Maven 3.3.9

– Bootstrap 3.3.5

以上是我要做的这个 demo 所需要的东西,当然有些是可选的,版本也是可控的。比如说如果你用不惯 Maven 的话可以自行去官网下载 jar 包然后导入自己的工程中,如果想要学习下 Maven 可以看看《Maven 视频教程》(偶然找到,这个老师做的视频都挺好,推荐以下),不用完全的去学习 Maven,懂大概意思后再去找找 IntelliJ IDEA 如何配置 maven 的相关文章就足够了。
还有 Bootstrap,纯粹是个人洁癖,不需要这可以去之。
事先声明,请确保 IntelliJ IDEA、Tomcat、MySql 和 JDK 都已经安装好。Maven 和 Bootstrap 的话能有则有。前者为了让导包更容易,后者为了让页面更美观。此外,由于 jdk 以及 mysql 的安装网上已经有了很多教程,在此为节省篇幅不做介绍。废话不多说,正式开始。
二、本地 Maven 与 Tomcat 的安装注:如果使用 IntelliJ IDEA 集成的 maven 3.0.5 的话,可以忽略此步安装。
1、下载并安装本地 maven
点击“Apache-Maven 官方网站”进入官网,点击左侧 Download 选项:
进入了下载页面,往下拉可发现当前版本是 3.3.3,点击下面红框中的 apache-maven-3.3.9-bin.zip 就可下载,下载后解压缩到相应目录下:
新增系统变量 MAVEN_HOME:即 MAVEN 安装目录:
在 Path 中加入:%MAVEN_HOME%bin;
在 cmd 中输入 mvn -v,若显示如下,则说明本地 maven 配置完成:
2、下载并安装本地 Tomcat 进入 Tomcat 官网,点击左侧 Download 的 Tomcat8.0,进入 Tomcat 的下载页面:
64 位 Windows 版本下载 64-bit Windows zip (pgp, md5, sha1),解压到所需目录下:
解压后到 bin 目录下运行 startup.bat,如图下所示,如果出现 Server startup in xxxx ms 说明 Tomcat 安装成功。
三、创建 Maven Web 项目
前面说了这么多,差不多基本的东西都保障了(前提保证你已经安装了 jdk)。现在进入正题,如何来创建一个 Web 项目。对于不使用 Maven 的开发者,可以直接建一个简单的 Web 项目。使用 Maven 的话,请按照图进行操作。

菜单 File->New Project 可进入上图界面,首先选择左边栏 Maven,再配置 JDK(一般如果之前添加了 JDK 的话会自动填充,如未添加的话点击旁边的 New 将 JDK 目录导入即可)。勾选“Create from archetype“,然后选中 4 处蓝色位置 webapp,点 Next,:
这里需要填写 GroupId 和 ArtifactId 还有 Version,这三个属性目的是标识你的项目的唯一性,比如 Tomcat 的 GroupId 是 org.apache,即它是 apache 组织的项目,ArtifactId 是 tomcat,项目名为 tomcat,而我当前使用的 Version 是 7.0.68。这些只在发布时有用,在此可以随便填写,填好后点 Next。
打开 Maven home directory,可以发现 IntelliJ IDEA 已经集成了 Maven 2 和 Maven 3 两个版本,如果使用默认集成的 maven 的话,选择 Buldled(Maven 3),直接点击 Next。
我们也可以导入本地新安装的较新的 Maven 版本,点击蓝色箭头右边的 … 按钮将 Maven 路径导入即可,点击 Next:
填写项目名,选择项目保存路径,点击 Finish:
maven 会在后台生成 web 项目,这需要等待一定的时间,视网络环境而定,经验发现用较新版本的 maven 项目生成更快,使用 IDEA 集成的 maven 可能会等待很长一段实践。
左边红框中展示了该项目的文件结构。可以发现,它在 src/main 下创建了一个 recources 文件夹,该文件夹一般用来存放一些资源文件,还有一个 webapp 文件夹,用来存放 web 配置文件以及 jsp 页面等,这已经组成了一个原始的 web 应用。选择右边红框的 Enable-Auto-Import,可以在每次修改 pom.xml 后,自动的下载并导入 jar 包,这一点在后面详述。
注:如果这一步生成实在太慢的话,建议看一下以下两篇(感谢 26 楼 wintersun2 同学的提出):
文章 1:http://www.cnblogs.com/beiyer… 文章 2:http://blog.csdn.net/cleverlz…
四、Maven 自动导入 jar 包
既然我们要用 SpringMVC 开发,那肯定少不了 SpringMVC 的相关 jar 包。如果不使用 Maven 的话,那就需要去官网下载相关的 jar 包,然后导入到项目中。现在使用 maven 的话,就不需要上网找 jar 包了。具体容我一一道来。
Maven 所做的工作其实很简单,就是自动把你需要的 jar 包下载到本地,然后关联到项目中来。maven 的所有 jar 包都是保存在几个中央仓库里面的,其中一个最常用的是 Maven Repository,即,你需要什么 jar 包,它就会从仓库中拿给你。那么如何告诉 maven 需要什么 jar 包呢?我们看看工程目录,能找到一个 pom.xml 文件(这个文件在刚创建好项目时就已经展现在了大家面前),maven 就是靠它来定义需求的,代码如下:
<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/maven-v4_0_0.xsd”>
<modelVersion>4.0.0</modelVersion>
<groupId>com.gaussic</groupId>
<artifactId>springmvcdemo</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>springmvcdemo Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>springmvcdemo</finalName>
</build>
</project>
我们可以看到这个文件包含了我们之前定义的本项目的 gropId 等信息,这些信息是该项目的标识,我们不要去改动它们。重点看 <dependencies> 标签,翻译过来是”依赖“的意思,也就是说把对每个包的需求都称为一个依赖 <depedency>,定义在 <dependencies> 中。在每个 <depedency> 中,你需要提供的是所需 jar 包的 groupId、artifactId、version 这三个必要信息。比如上面我们看到引入可一个 junit 包,格式如下:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
这是单元测试包,提供了三个基本信息,第 4 个 scope 对其他包来说是非必需的。所有 jar 包的引入都要满足这个格式。那么如何查看这些 jar 包的 3 个信息呢,可能刚接触是开发者还不是很熟悉,这个时候就需要查阅仓库了。比如我们需要引入 Spring 核心 jar 包 spring-core,打开 Maven Repository,搜索 spring-core,进入如下界面:
点击进入红框选中的 Spring Core,如下所示,可以看到各版本的使用情况:
选择最新版本 4.2.5.RELEASE,可以看到其 dependency 写法如下红框所示:
我们将其复制到 pom.xml 中的 <dependencies> 中:
这样,Maven 就会开始自动下载 jar 包到本地仓库,然后关联到你的项目中,下载完成后,我们展开工程目录中 External Libraries:
可以发现,虽然我们只写了一个依赖,但是它导入了两个 jar 包,也就是说,导入某个 jar 包时,与它密切相关的 jar 包也会同时被导入进来。
除了 spring-core,我还要 spring-context,复制 spring-core 的 <dependency>,将 spring-core 改为 spring-context,如下:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.2.5.RELEASE</version>
</dependency>
下载完成后,查看 External Libraries,会不会发现,瞬间导入了好多 jar 包(当然不是瞬间,这得看你的网速了)呢:
这就是 Maven 的强大之处,如果你需要使用 SpringMVC 开发网站的话,只需记住几个重要的包的名字,就可以轻松将所有包导入项目中。
长话短说,现在我们要进行 SpringMVC 的开发,请把你的 pom.xml 变成下面的样子,当然不要改你的 grupId 等信息(从 modelVersion 到 url 都不要动):
<properties>
<spring.version>4.2.6.RELEASE</spring.version>
<hibernate.version>5.1.0.Final</hibernate.version>
</properties>
请在 <dependencies> 中加入以下依赖:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>1.10.1.RELEASE</version>
</dependency>

<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>${hibernate.version}</version>
</dependency>

<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-c3p0</artifactId>
<version>${hibernate.version}</version>
</dependency>

<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5.2</version>
</dependency>

<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.39</version>
</dependency>
将 <build> 改成如下形式:
<build>
<finalName>springmvcdemo</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
我们可以发现,除了导入了 spring 相关 jar 包,还有一些其他的包,这些包都是有作用的,我们后面慢慢说。如果不使用 Maven 请自行下载 spring、hibernate、mysql、jstl 等相关 jar 包然后导入到工程中。至此,jar 包的导入就完成了,我们按 ctrl+alt+shift+s,或者 File->Project Structure 查看一下项目结构,看看有什么问题:
由于之后我们要开始写代码了,先做一些配置,选择 Modules,在 SpringMVCDemo 的 src\main 文件夹中新建一个文件夹,取名为 java:

选中 java 文件夹,点击上面的 Make as:Sources,该文件夹就会变成蓝色,用以保存 java 代码,按 OK,结束配置。

退出移动版