相关参考:
步骤:
1. 用 IDEA 创建 New Project
看图作如下选择,选择 next。
2. 填写GroupId和ArtifactId
这里需要填写GroupId和ArtifactId还有Version,一般 GroupId 填写 公司域名,ArtifactId 填写项目名词,这些只在发布时有用,练手的时候不必太过纠结。
3. 选择 maven
打开Maven home directory,可以发现IntelliJ IDEA已经集成了Maven 2和Maven 3两个版本,如果使用默认集成的maven的话,选择Buldled(Maven 3),直接点击Next。
4. 然后一路next,直到 finish。
5. project 目录介绍
- 选择右边的 Enable Auto_Import , 以后每次配置发生变化时都会自动引入。
- .idea 是个隐藏文件,是 Idea 对项目的配置,我们不要去更改。
- src 是 source 缩写,resources 是代码编译好的地方
-
pom.xml 是 maven 来定义 jar 包的地方。
6. 把 java 作为 source 文件夹
点击右边的图形按钮,创建 source 文件。(如果没有这栏,View -> 勾选 Topbar 即可)
按照如下的图的步骤,创建一个 java 文件夹。
把 java 文件夹 作为 source 文件:选中 java 然后点击 source,之后右边的红框会变成蓝色。最后点击applay,ok。示意图如下:
7. 配置 pom.xml
关于 pom.xml,看这 戳我
配置步骤:
- 添加公用版本信息。
<properties>
<spring.version>4.3.7.RELEASE</spring.version>
<hibernate.version>5.2.10.Final</hibernate.version>
</properties>
- 在<dependencies>中加入依赖的 jar 包。
- 指定 JDK 的版本,否则运行时可能会报 版本不支持 的错误。
<build>
<finalName>springmvcdemo</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source> <!-- 此处的 1.8 指的是 JDK 的版本,目前一般为 1.7 或 1.8 -->
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
- 配置 jetty 插件。因为我的项目以 jetty 来作为容器的。
这个标签要放在 <plugins> 里面。
<!--servlet容器 jetty插件-->
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.3.10.v20160621</version>
</plugin>
完整的 pom.xml 配置如下:
<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.zzjack</groupId>
<artifactId>springStudy</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>springStudy Maven Webapp</name>
<url>http://maven.apache.org</url>
<properties>
<spring.version>4.3.7.RELEASE</spring.version>
<hibernate.version>5.2.10.Final</hibernate.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<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.11.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>
</dependencies>
<build>
<finalName>springStudy</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source> <!-- 此处的 1.8 指的是 JDK 的版本,目前一般为 1.7 或 1.8 -->
<target>1.8</target>
</configuration>
<!--servlet容器 jetty插件-->
</plugin>
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.3.10.v20160621</version>
</plugin>
</plugins>
</build>
</project>
8. 配置 web.xml
- 配置 web.xml,使它可以支持一些更加高级的语法。
- 加入一个servlet,用于把请求转发到后台处理。这个 servlet 的名称可修改,我这里写的是 “mvc-dispatcher”.
- 为了能处理中文的 post 请求,再配置一个 encodingFilter,避免中文乱码。
完整的 web.xml 配置:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<!--此处应填写项目名称-->
<display-name>springStudy Web Application</display-name>
<!--用来拦截请求的 servlet-->
<servlet>
<!--servlet name-->
<servlet-name>mvc-dispatcher</servlet-name>
<!--实现 这个 servlet 的类-->
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--web 应用启动时,装载 Servlet 的顺序,从小到大依次装载,如果不设置的话,默认为用户点击时才触发-->
<load-on-startup>1</load-on-startup>
</servlet>
<!--用来指定 servlet name 和 url-pattern -->
<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<!-- <url-pattern> 是指访问 Servlet 的相对路径. 根据该属性, 访问 mvc-dispatcher 的 url 为: host:8080/,mvc-dispatcher 接受到请求后,转发给相应的jsp-->
<url-pattern>/</url-pattern>
</servlet-mapping>
<!--这个过滤器来进行字符编码-->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<!--采用 utf-8 编码-->
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<!--为true时,强制使用utf-8-->
<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>
9. xxx-servlet.xml 配置
- 在 web.xml 同级目录下新建
mvc-dispatcher-servlet.xml
,
使用 new -> XML Configuration File -> Spring Config 的方式进行创建。这样会自动生成一些信息
文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>
-
在 java 目录下创建 controller 文件夹,controller 下面新建一个类,目录结构如下:
- MainController 填入如下代码:
package controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
// 此为注解,定义该类为处理请求的Controller类
@Controller
public class MainController {
//用于定义一个请求映射,value为请求的url
@RequestMapping(value = "/", method = RequestMethod.GET)
public String index(){
//处理完请求返回的页面,此请求返回的是index.jsp
return "index";
}
}
- 配置 mvc-dispatcher-servlet.xml。
controller 如何查找视图文件?在 controller 的一个方法中,返回的字符串定义了所需访问的 jsp 的名字。在 jspViewResolver 中,有两个属性,一个是 prefix,定义了所需访问的文件路径前缀,另一是 suffix,表示要访问文件的后缀,这里是 .jsp。那么如果返回的字符串是xxx,SpringMVC 就会在 /WEB-INF/pages/xxx.jsp 文件下查找。
- 加入 component-scan 标签,指明 controller 所在的包,并扫描其中的注解
- 再进行js、image、css等静态资源访问的相关配置
- 开启 spring mvc 注解模式
- 进行视图解析器的相关配置
<?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:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!--指明 controller 所在包,并扫描其中的注解-->
<context:component-scan base-package="controller" />
<!--静态资源的访问-->
<mvc:default-servlet-handler />
<!--开启注解-->
<mvc:annotation-driven />
<!--视图解析器-->
<bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<!--视图文件路径及后缀,具体可见 controller 是如何找到的-->
<property name="prefix" value="/WEB-INF/pages/" />
<property name="suffix" value=".jsp" />
</bean>
</beans>
10. 新建 index.jsp
删除 webapp 下的index.jsp ,在 WEB-INF 下新建文件夹 pages,在 pages 目录下新建 index.jsp。
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>spring study</title>
</head>
<body>
<h1>Hello, Spring !</h1>
</body>
</html>
11. 配置 jetty。
run -> Edit configrations, 在配置中选择 maven,然后按照如下配置。
12. 点击 run/debug,运行项目。
浏览器打开http://localhost:8080/ 验证项目是否成功。