IntelliJ idea创建Spring MVC的Maven项目

时间:2023-12-14 18:14:14

参考:http://my.oschina.net/gaussik/blog/385697?fromerr=Pie9IlFV

创建Maven Web项目

菜单File->New Project可进入如图界面,首先选择左边栏Maven,再配置JDK(一般如果之前添加了JDK的话会自动填充,如未添加的话点击旁边的New将JDK目录导入即可)。勾选"Create from archetype",然后选中maven-archetype-webapp,点Next,进入如下界面:

IntelliJ idea创建Spring MVC的Maven项目

这里需要填写GroupId和ArtifactId,Version默认即可,这三个属性可以唯一标识你的项目,比如Tomcat的GroupId是org.apache,即它是apache组织的项目,ArtifactId是tomcat,项目名为tomcat,而我当前使用的Version是 7.0.47。这些只在发布时有用,在此可以随便填写。

IntelliJ idea创建Spring MVC的Maven项目

我自己的maven配置

IntelliJ idea创建Spring MVC的Maven项目

填写项目名,选择项目保存路径,点击Finish:

IntelliJ idea创建Spring MVC的Maven项目

maven会在后台生成web项目,这需要等待一定的时间,视网络环境而定.

下图展示了该项目的文件结构。可以发现,它在src/main下创建了一个recources文件夹,该文件夹一般用来存放一些资源文件,还有一个webapp文件夹,用来存放web配置文件以及jsp页面等,这已经组成了一个原始的web应用。选择右边红框的Enable-Auto- Import,可以在每次修改pom.xml后,自动的下载并导入jar包,这一点在后面详述。

IntelliJ idea创建Spring MVC的Maven项目

IntelliJ idea创建Spring MVC的Maven项目

我们可以看到,目录结构并不是严格的maven格式,还需进一步配置。

File->Project Structure->Model.

选中对应的文件夹,点击上面的Make as...,相应的文件夹机会变成Sources,Tests,Resources,Test Resources,按OK,结束配置。

IntelliJ idea创建Spring MVC的Maven项目

IntelliJ idea创建Spring MVC的Maven项目

Maven自动导入jar包
既然我们要用Spring MVC开发,那肯定少不了Spring MVC的相关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.winner</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>

我们可以看到这个文件包含了我们之前定义的本项目的groupId等信息,这些信息是该项目的标识,我们不要去改动它们。重点看<dependencies>标签,翻译过来是"依赖"的意思,也就是说把对每个包的需求都称为一个依赖<depedency>,定义在<dependencies>中。在每个<depedency>中,你需要提供的是所需jar包的groupId、artifactId、version(g,a,v)这三个必要信息。比如上面我们看到引入可一个junit包,格式如下:

<dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
</dependencies>

这是单元测试包,提供了三个基本信息,第4个scope对其他包来说是非必需的。所有jar包的引入都要满足这个格式。要查看这些jar包的3个信息呢,需要查阅仓库。比如我们需要引入Spring核心jar包spring-core,打开Maven Repository搜索spring-core,进入如下界面:

IntelliJ idea创建Spring MVC的Maven项目

点击进入红框选中的Spring Core,如下所示,可以看到各版本的使用情况:

IntelliJ idea创建Spring MVC的Maven项目

选择最新版本3.2.0.RELEASE,可以看到其dependency写法如下红框所示:

IntelliJ idea创建Spring MVC的Maven项目

我们将其复制到pom.xml中的<dependencies>中:

IntelliJ idea创建Spring MVC的Maven项目

这样,Maven就会开始自动下载jar包到本地仓库,然后关联到你的项目中,下载完成后,我们展开工程目录中External Libraries:

IntelliJ idea创建Spring MVC的Maven项目

可以发现,虽然我们只写了一个依赖,但是它导入了两个jar包,也就是说,导入某个jar包时,与它密切相关的jar包也会同时被导入进来。
除了spring-core,我还要spring-web,复制spring-core的<dependency>,将spring-core改为spring-web,如下:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>3.2.0.RELEASE</version>
</dependency>

下载完成后,查看External Libraries,会发现导入了好多jar包。

IntelliJ idea创建Spring MVC的Maven项目

这就是Maven的强大之处,如果你需要使用Spring MVC开发网站的话,只需记住几个重要的包的名字,就可以轻松将所有包导入项目中。
现在我们要进行Spring MVC的开发,请把你的pom.xml变成下面的样子,当然不要改你的grupId等信息(从modelVersion到url都不要动):

<properties>
    <spring.version>3.2.0.RELEASE</spring.version>
    <spring-data.version>1.2.0.RELEASE</spring-data.version>
</properties>

请在<dependencies>中加入以下依赖:

  <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
    </dependency>

    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>jsp-api</artifactId>
        <version>2.1</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>${spring.version}</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>jstl</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-jpa</artifactId>
        <version>${spring-data.version}</version>
    </dependency>

    <dependency>
        <groupId>org.hibernate.javax.persistence</groupId>
        <artifactId>hibernate-jpa-2.0-api</artifactId>
        <version>1.0.0.Final</version>
    </dependency>

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>3.6.10.Final</version>
    </dependency>

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.34</version>
    </dependency>

    <dependency>
        <groupId>org.json</groupId>
        <artifactId>json</artifactId>
        <version>20080701</version>
    </dependency>

我们可以发现,除了导入了spring相关jar包,还有一些其他的包,这些包都是有作用的。如果不使用Maven请自行下载spring、hibernate、mysql、jstl、javax-servlet、json等相关jar包然后导入到工程中。至此,jar包的导入就完成了,我们按ctrl+alt+shift+s,或者File->Project Structure查看一下项目结构,看看有什么问题:

IntelliJ idea创建Spring MVC的Maven项目

SpringMVC框架配置
进行完上面的配置,那就说明现在基本的开发环境已经搭建好了,现在要开始进行Spring MVC的网站开发。
1、web.xml配置
打开src\main\webapp\WEB-INF\下的web.xml文件,修改约束文件,如下:

原来的竟然是这样

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
</web-app>

--->

<?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>SpringMVCDemo Web Application</display-name>

</web-app>

在web.xml中创建Spring MVC的*控制器

<?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>SpringMVCDemo Web Application</display-name>

  <servlet>
    <servlet-name>mvc-dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>mvc-dispatcher</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
</web-app>

该servlet名为mvc-dispatcher(名称可修改),用于拦截请求(url-pattern为*.do),并交由Spring MVC的后台控制器来处理。这一项配置是必须的

为了能够处理中文的post请求,再配置一个encodingFilter,以避免post请求中文出现乱码情况:

<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.xml配置完毕。

2、mvc-dispatcher-servlet.xml配置
在配置完web.xml后,需在WEB-INF目录下新建 mvc-dispatcher-servlet.xml(-servlet前面是在servlet里面定义的servlet名):

IntelliJ idea创建Spring MVC的Maven项目

新建该xml文件后,点击右上角的configure,出现 Setup Frameworks界面,点击OK,这样,IntelliJ IDEA就识别了SpringMVC的配置文件:

IntelliJ idea创建Spring MVC的Maven项目

mvc-dispatcher-servlet.xml文件如下:

<?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>

MVC框架有model、view、controller三部分组成。model一般为一些基本的Java Bean,view用于进行相应的页面显示,controller用于处理网站的请求。
在src\main\java中新建一个用于保存controller的package:在controller包中新建java类MainController(名称并不固定,可任意取),并修改如下:

/**
 * Created by winner_0715 on 2016/3/19.
 */
@Controller
public class MainController {
    @RequestMapping(value = "/",method = RequestMethod.GET)
    public String index() {
        return "index";
    }
}

--@Controller注解:采用注解的方式,可以明确地定义该类为处理请求的Controller类;
--@RequestMapping()注解:用于定义一个请求映射,value为请求的url,值为 / 说明,该请求首页请求,method用以指定该请求类型,一般为get和post;
--return "index":处理完该请求后返回的页面,此请求返回 index.jsp页面。
回到mvc-dispatcher-servlet.xml,进行相关配置。

再次不在赘述,简单配置一下

<context:component-scan base-package="com.winner.controller"/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <property name="prefix" value="/WEB-INF/jsp/"/>
  <property name="suffix" value=".jsp"/>
</bean>

现在,需要配置Tomcat来运行该项目。

Run->Edit Configurations

点击左上角的"+"号,选择Tomcat Server,(如果没有请选择最下方的33 items more,找到Tomcat Server),再选择Local:

点击 Application server 右边的 Configure,导入Tomcat 目录:

IntelliJ idea创建Spring MVC的Maven项目

在配置好Tomcat的路径后,如下图所示,发现依然存在警告,且左方的Tomcat8图标上有一个警告标记,说明还没有配置完全:

IntelliJ idea创建Spring MVC的Maven项目

我们还需要将项目部署到 Tomcat 服务器中。点击 Deployment,再点击右边的"+"号,添加一个Artifact.

选择第二个:war exploded,点击OK,这样,该项目就已经部署到了tomcat中.

再点击OK,整个Tomcat配置结束.

启动 Tomcat 了,其控制台输出将在IDEA下方显示

启动后,浏览器将自动弹出项目首页.

IntelliJ idea创建Spring MVC的Maven项目