最近在学习使用 Intellj Idea,感觉确实很方便,今天正好用它通过 Maven 搭建了一个 SpringMVC 的 Demo,就记录下操作过程以便以后参考。

1.下载安装 Maven

在 Maven 的 官网 下载了 Maven 之后,把下载的压缩文件解压,接着把 Maven 的安装路径命名为%MAVEN_HOME%添加到环境变量中,接着在path中加入%MAVEN_HOME%\bin就成功安装好了 Maven,接着试着在命令行下敲击mvn -v,如果出现以下信息,就说明 Maven 安装成功。

2.安装 Intellj Idea

官网 下载 Intell Idea 并且安装,安装好了之后可以进行一些个性化的设置,界面选择黑色,一股酷炫的的风格扑面而来。

3.Intellj Idea 创建工程

  1. 点击 Create New Project 来创建一个新的 Project
  2. 选择 Empty Project,点击 Next
  3. 输入路径和工程名称,点击 Finish
  4. 点击 + 号新建一个 Module,然后选择 webapp 的 Maven 项目,点击 Next。

  5. 输入 Maven 相关信息,点击 Next。
  6. 输入 Module 的信息,点击 Finish,完成工程的创建。
  7. 工程创建成功

4.工程的相关的属性的设置

  1. 把以下 SpringMVC 的相关设置内容保存到 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.nosuchfield</groupId>
        <artifactId>nosuchfield</artifactId>
        <packaging>war</packaging>
        <version>1.0-SNAPSHOT</version>
        <name>nosuchfield Maven Webapp</name>
        <url>http://maven.apache.org</url>
    
        <properties>
          <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
          <springversion>3.1.1.RELEASE</springversion>
          <junitversion>3.8.1</junitversion>
        </properties>
    
          <dependencies>
            <dependency>
              <groupId>junit</groupId>
              <artifactId>junit</artifactId>
              <version>${junitversion}</version>
              <scope>test</scope>
            </dependency>
            <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-aop</artifactId>
              <version>${springversion}</version>
              <type>jar</type>
              <scope>compile</scope>
            </dependency>
            <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-asm</artifactId>
              <version>${springversion}</version>
              <type>jar</type>
              <scope>compile</scope>
            </dependency>
            <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-aspects</artifactId>
              <version>${springversion}</version>
              <type>jar</type>
              <scope>compile</scope>
            </dependency>
            <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-beans</artifactId>
              <version>${springversion}</version>
              <type>jar</type>
              <scope>compile</scope>
            </dependency>
            <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-context</artifactId>
              <version>${springversion}</version>
              <type>jar</type>
              <scope>compile</scope>
            </dependency>
            <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-context-support</artifactId>
              <version>${springversion}</version>
              <type>jar</type>
              <scope>compile</scope>
            </dependency>
            <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-core</artifactId>
              <version>${springversion}</version>
              <type>jar</type>
              <scope>compile</scope>
            </dependency>
            <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-expression</artifactId>
              <version>${springversion}</version>
              <type>jar</type>
              <scope>compile</scope>
            </dependency>
            <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-jdbc</artifactId>
              <version>${springversion}</version>
              <type>jar</type>
              <scope>compile</scope>
            </dependency>
            <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-jms</artifactId>
              <version>${springversion}</version>
              <type>jar</type>
              <scope>compile</scope>
            </dependency>
            <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-orm</artifactId>
              <version>${springversion}</version>
              <type>jar</type>
              <scope>compile</scope>
            </dependency>
            <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-oxm</artifactId>
              <version>${springversion}</version>
              <type>jar</type>
              <scope>compile</scope>
            </dependency>
            <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-tx</artifactId>
              <version>${springversion}</version>
              <type>jar</type>
              <scope>compile</scope>
            </dependency>
            <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-web</artifactId>
              <version>${springversion}</version>
              <type>jar</type>
              <scope>compile</scope>
            </dependency>
            <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-webmvc</artifactId>
              <version>${springversion}</version>
              <type>jar</type>
              <scope>compile</scope>
            </dependency>
            <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-test</artifactId>
              <version>${springversion}</version>
              <type>jar</type>
              <scope>compile</scope>
            </dependency>
    
            <dependency>
              <groupId>javax.servlet</groupId>
              <artifactId>jstl</artifactId>
              <version>1.2</version>
              <type>jar</type>
              <scope>compile</scope>
            </dependency>
        
            <dependency>
              <groupId>commons-collections</groupId>
              <artifactId>commons-collections</artifactId>
              <version>3.1</version>
            </dependency>
        
            <dependency>
              <groupId>commons-logging</groupId>
              <artifactId>commons-logging</artifactId>
              <version>1.2</version>
            </dependency>
          </dependencies>
        
          <build>
            <finalName>nosuchfield</finalName>
          </build>
    </project>
    

    默认生成的文件目录结构

    把目录结构修改为下面的这种形式

  2. 修改 web.xml 和 applicationContext.xml 中的内容为

    web.xml

     <?xml version="1.0" encoding="UTF-8"?>
     <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
     http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    
     <display-name></display-name>
    
     <!-- Spring的log4j监听器 -->
     <listener>
         <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
     </listener>
    
       <!-- 核心控制器 -->
       <servlet>
         <servlet-name>hello</servlet-name>
         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
         <init-param>
           <param-name>contextConfigLocation</param-name>
           <param-value>/WEB-INF/applicationContext.xml</param-value>
         </init-param>
         <load-on-startup>1</load-on-startup>
       </servlet>
    
       <listener>
         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
       </listener>
       <servlet-mapping>
         <servlet-name>hello</servlet-name>
         <url-pattern>/</url-pattern>
       </servlet-mapping>
     
       <welcome-file-list>
         <welcome-file>index.jsp</welcome-file>
       </welcome-file-list>
    
     </web-app>
    

    applicationContext.xml

     <?xml version="1.0" encoding="UTF-8"?>
     <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:context="http://www.springframework.org/schema/context"
        xmlns:mvc="http://www.springframework.org/schema/mvc"
        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-3.0.xsd
         http://www.springframework.org/schema/context
         http://www.springframework.org/schema/context/spring-context-3.0.xsd
         http://www.springframework.org/schema/mvc
         http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
    
     <mvc:annotation-driven />
     <context:component-scan base-package="com.nosuchfield" />
    
     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
         <property name="prefix" value="/WEB-INF/jsp/" />
         <property name="suffix" value=".jsp" />
     </bean>
    
     </beans>
    
  3. 在 setting 的 Application Servers 中添加 Tomcat 服务器

  4. 回到主界面,点击界面右上角的倒三角,然后选择 Edit Configurations…,然后在打开的界面中添加 Loacl Tomcat Server。

  5. 新建一个 Artifact,选择 exploded 模式,然后点击 OK。

  6. 在 src/main/java 中新建一个 com.nosuchfield 的包,然后新建一个 Hello.java 文件,输入以下测试内容。

    package com.nosuchfield;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    /**
    * Created on 2015/12/24 0:06.
    */
    @Controller
    public class Hello {
    @RequestMapping(“/test”)
    public String test() {
    return “hello”;
    }
    }

  7. 点击右上角的运行按钮,Tomcat 启动完毕后,在浏览器中可以查看到我们写的内容,工程构建完毕。


  8. 点击下面的按钮可以在不重新启动 Tomcat 的情况下把最近修改的 Java 文件重新发布,实现热部署。