前边已经介绍过了Struts在Idea上的配置,相对于Struts来说,我觉得SpringMVC有更多的优势,首先Struts是需要对action进行配置,页面发送不同的请求,就需要配置不同的action,并在每个action中指定对应的结果集,然后进行页面跳转,当然这也是符合逻辑的,但是当要开发一个大的项目,会有很多请求,如果每个请求都要对应一个action,这样会比较繁琐,但对于SpringMVC来说,不用配置多个action,而且SpringMVC框架与Spring有很好的对接,这两个框架可以实现无缝对接,下边就给大家详细介绍一下SpringMVC配置。

对于Struts框架,大家可以参考:

一、环境搭建(File-->New-->Project-->Spring,选中SpringMVC,其他默认,点击Next)

IDEA spring mvc 发布 idea springmvc配置_xml

二、填写项目名字,创建项目完成,整个项目环境大部分已经完成

IDEA spring mvc 发布 idea springmvc配置_mvc_02

三、项目配置

大家先看一下整个的项目目录

IDEA spring mvc 发布 idea springmvc配置_xml_03

其实,SpringMVC的配置很简单的,下边分步骤给大家接收一下,怎样配置,在做下边的配置之前,大家还需要配置服务器,详细的介绍大家可以参考Struts框架怎样配置服务器:

1 首先先要配置index.jsp页面,代码如下,主要是页面发送请求,到达服务器,进行后续逻辑判断:

IDEA spring mvc 发布 idea springmvc配置_xml_04

IDEA spring mvc 发布 idea springmvc配置_IDEA spring mvc 发布_05

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>登录页面</title>
  </head>
  <body>
  <form action="${pageContext.request.contextPath}/test/demo"  method="post" >
    username:<input type="text"  required="required" name="username"/><br>
    password:<input type="password"  required="required" name="password"/><br>
    <input type="submit" value="提交"><br>
  </form>
  </body>
</html>

View Code

2 配置web.xml文件,一般如果是运用Idea开发工具进行SpringMVC框架开发的话,系统会自动配置该配置文件,但是也需要进行相应的修改,尤其是url:

IDEA spring mvc 发布 idea springmvc配置_xml_04

IDEA spring mvc 发布 idea springmvc配置_IDEA spring mvc 发布_05

<?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">
    <!--<listener>
        <listener-class>com.listener</listener-class>
    </listener>-->
    <!--配置Spring-->

    <!--配置SpringMVC-->
    <servlet>
        <servlet-name>spring-mvc</servlet-name>
        <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>spring-mvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

View Code

3 配置spring-mvc-servlet.xml,需要注意的是,有两种方法对该文件进行配置,主要是该文件的文件名“spring-mvc-servlet.xml”

方法① 如果是按照步骤2中的代码进行配置,则该配置文件的名字必须是spring-mvc-servlet.xml,其中“spring-mvc”是web.xml文件中的servlet name,这两个名字必须一一对应:xxx-servlet.xml,这样做的原因是框架会自动去寻找该配置文件,一般我采用第二种方法

方法② 其实该方法也很简单,就是在配置文件中添加初始化参数

IDEA spring mvc 发布 idea springmvc配置_xml_04

IDEA spring mvc 发布 idea springmvc配置_IDEA spring mvc 发布_05

<?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">
    <!--<listener>
        <listener-class>com.listener</listener-class>
    </listener>-->
    <!--配置Spring-->

    <!--配置SpringMVC-->
    <servlet>
        <servlet-name>demo</servlet-name>
        <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/spring-mvc-servlet.xml</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>demo</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

View Code

该方法不用指定servlet的name与配置文件的名字一致,只需要指定相应的文件即可。

下边是该配置文件的内容,我用的是注解的方法

IDEA spring mvc 发布 idea springmvc配置_xml_04

IDEA spring mvc 发布 idea springmvc配置_IDEA spring mvc 发布_05

<?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">
    <!--自动扫描-->
    <context:component-scan base-package="com"/>

    <!-- 静态资源(js、image等)的访问 -->
    <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"/>
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>

View Code

4 配置控制器

IDEA spring mvc 发布 idea springmvc配置_xml_04

IDEA spring mvc 发布 idea springmvc配置_IDEA spring mvc 发布_05

package com;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

/**
 * Created by admin on 2018/3/26.
 */
@Controller
@RequestMapping("/test")
public class HelloController {
    @RequestMapping(value = "/demo",method= RequestMethod.POST)
    public String test(@RequestParam("username") String username,
                       @RequestParam("password") String password,
                       Model model){
        model.addAttribute("name",username);
        model.addAttribute("password",password);
        model.addAttribute("test","123456");
        return "hello";
    }
}

View Code

需要注意的是该配置器指定的@RequestMapping,必须和index.jsp的请求一致,这样才会到达该控制器,然后对数据进行逻辑判断,当然大家可以看一下控制器是如何获取前台页面数据,当拿到前台页面数据以后,可以对数据进行处理,增删改查逻辑判断,满足条件以后怎样处理,页面跳转携带数据,把数据保存在Model对象中,前台页面通过el获取数据。

5 hello.jsp,主要是显示数据,在步骤4 中返回的字符串对应指定的字符串.jsp页面,这样整个流程都完成了

IDEA spring mvc 发布 idea springmvc配置_xml_04

IDEA spring mvc 发布 idea springmvc配置_IDEA spring mvc 发布_05

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>测试</title>
</head>
<body>
${name},${password}
</body>
</html>

View Code