springMVC的搭建需要如下前置条件
1)安装Maven并配置好环境变量,笔者使用的V3.5.3
2)安装tomcat,笔者使用的V8.5
本文介绍了如何在idea上搭建基于maven的springmvc框架,主要包括如下内容:
1)创建maven的webapp框架;
2)引入springMVC框架及配置文件;
3)修改web.xml文件及dispatcher-servlet.xml内容,dispatcher-servlet.xml文件通过springMVC的IOC为dispatcherservlet提供初始化参数。负责对control类加载扫描、注解驱动以及资源配置导航;
4)创建controller类和jsp文件;
5)编辑pom.xml导入最小包。
6)运行测试
备注:一定要先引入springmvc框架,然后导入maven包,否则因pom里有springMVC引用而自动导入springmvc框架且不生成上述.xml信息。

1 基于maven创建webapp
  • 1.1 选择 webapp
  • 1.2 填项目信息


* 1.3 指定maven

2 添加springmvc框架
  • 2.1 add framdwork support
  • 选择 spring - spring mvc


* 2.2 系统自动创建两个xml文件

  • 2.3 web.xml文件自动填充springMVC配置信息 并修改如下:
<!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>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/applicationContext.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

从上面配置可以看出applicationContext.xml用于配置应用上下文

  • 2.4 applicationContext.xml暂不做处理
  • 2.5 dispatcher-servlet.xml
    该文件是dispatcherServlet的初始化参数配置文件,如改动名字可在web.xml中做如下配置
<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <!--配置dispatcher.xml作为mvc的配置文件-->
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/dispatcher-servlet.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    <async-supported>true</async-supported>
</servlet>

该文件主要是指定资源文件信息,配置如下:

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

    <!--此文件负责整个mvc中的配置-->

    <!--启用spring的一些annotation -->
    <context:annotation-config/>

    <!-- 配置注解驱动 可以将request参数绑定到controller参数上 -->
    <mvc:annotation-driven/>

    <!--静态资源映射-->
    <!--本项目把静态资源放在了webapp的statics目录下,资源映射如下-->
    <mvc:resources mapping="/css/**" location="/WEB-INF/statics/css/"/>
    <mvc:resources mapping="/js/**" location="/WEB-INF/statics/js/"/>
    <mvc:resources mapping="/image/**" location="/WEB-INF/statics/image/"/>

    <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀(如果最后一个还是表示文件夹,则最后的斜杠不要漏了) 使用JSP-->
    <!-- 默认的视图解析器 在上边的解析错误时使用 (默认使用html)- -->
    <bean id="defaultViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
        <property name="prefix" value="/WEB-INF/view/"/><!--设置JSP文件的目录位置-->
        <property name="suffix" value=".jsp"/>
        <property name="exposeContextBeansAsAttributes" value="true"/>
    </bean>

    <!-- 自动扫描装配 -->
    <context:component-scan base-package="com.uzone.controller"/>
</beans>
3 添加tomcat
  • 3.1
  • 3.2
  • 3.3
4 添加Java class和资源
  • 4.1 创建层
  • 4.2 设置java为sourceroot
  • 4.3 创建controller类
@Controller
@RequestMapping("/home")
public class IndexController {
    @RequestMapping("/index")
    public String index(){
        return "index";
    }
}
  • 4.4 Jsp文件
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Index</title>
</head>
<body>
<p>Spring MVC </p>
</body>
</html>
<html>
<body>
<h2>Hello World!</h2>
</body>
</html>
5 pom.xml

以下为springMVC最小加载包
* servlet是springMVC的必备包,不许要解释;
* spring-webmvc提供view层的核心封装,提供各前端技术及标签支持,spring-context提供spring上下文bean信息。

<properties>
    <!-- spring版本号 -->
    <spring.version>4.2.6.RELEASE</spring.version>
</properties>

<dependencies>
    <!--J2EE-->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>jsp-api</artifactId>
        <version>2.2</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>
    <!--springframework-->    
    <dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring-webmvc</artifactId>
       <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
    </dependency>

</dependencies>
6 运行结果