1 Star 0 Fork 0

cgrs572/SpringMvcDemo

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

快速入门案例

需求:客户端发起请求,服务端接受请求,执行逻辑并进行视图跳转

  • 注意:

  • Step1: 导入坐标及Tomcat插件,完整坐标代码如下

    • SpringMVC的相关坐标:spring-webmvc

      <!--必须为5.2.x.RELEASE版本-->
      <!--spring-webmvc-->
      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-webmvc</artifactId>
          <version>5.2.25.RELEASE</version>
      </dependency>
      
    • 还需要Spring相关坐标:spring、spring-web、spring-test、Annotation、servlet、jsp

    • 数据库相关坐标:mysql、druid、c3p0

    • MyBatis相关坐标:mybatis、spring-jdbc、mybatis-spring

    <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>
        <parent>
            <groupId>org.example</groupId>
            <artifactId>SpringMvcDemo</artifactId>
            <version>1.0-SNAPSHOT</version>
        </parent>
        <artifactId>SpringMvcOne</artifactId>
        <packaging>war</packaging>
        <name>SpringMvcOne 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>
    
            <!--===================Spring相关坐标=======================-->
            <!--spring坐标-->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>6.1.6</version>
            </dependency>
    
            <!--spring-web -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-web</artifactId>
                <version>5.2.25.RELEASE</version>
            </dependency>
    
            <!--spring-test坐标-->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-test</artifactId>
                <version>6.1.6</version>
                <scope>test</scope>
            </dependency>
    
            <!--Annotation坐标-->
            <dependency>
                <groupId>javax.annotation</groupId>
                <artifactId>javax.annotation-api</artifactId>
                <version>1.3.2</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.13.2</version>
                <scope>test</scope>
            </dependency>
    
            <!-- servlet-->
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>4.0.1</version>
                <scope>provided</scope>
            </dependency>
    
            <!--jsp-->
            <dependency>
                <groupId>javax.servlet.jsp</groupId>
                <artifactId>javax.servlet.jsp-api</artifactId>
                <version>2.3.3</version>
                <scope>provided</scope>
            </dependency>
            <!--===================SpringMVC相关坐标=======================-->
            <!--spring-webmvc-->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>5.2.25.RELEASE</version>
            </dependency>
            <!--=====================数据库相关坐标=========================-->
            <!--mysql坐标-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>8.0.33</version>
            </dependency>
    
            <!--druid坐标-->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>1.2.18</version>
            </dependency>
    
            <!--c3p0坐标-->
            <dependency>
                <groupId>com.mchange</groupId>
                <artifactId>c3p0</artifactId>
                <version>0.9.5.5</version>
            </dependency>
            <!--=====================MyBatis相关坐标=========================-->
            <!--spring-jdbc-->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jdbc</artifactId>
                <version>6.1.10</version>
            </dependency>
    
            <!--mybatis-spring-->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis-spring</artifactId>
                <version>3.0.3</version>
            </dependency>
    
            <!--MyBatis坐标-->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.5.16</version>
            </dependency>
        </dependencies>
        <build>
            <finalName>SpringMvcOne</finalName>
            <plugins>
                <!-- Tomcat插件 -->
                <plugin>
                    <groupId>org.apache.tomcat.maven</groupId>
                    <artifactId>tomcat7-maven-plugin</artifactId>
                    <version>2.2</version>
                </plugin>
            </plugins>
        </build>
    </project>
    
  • Step2: 配置web项目核心目录(即WEB-INF)下的web.xml,完整代码如下

    • Step2-1: 配置Spring相关的配置
      • 全局初始化参数、配置Spring所提供的ContextLoaderListener 监听器、web配置
    • Step2-2: 配置SpringMVC的核心前端控制器DispathcerServlet
    <!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>
        
      <!--全局初始化参数-->
      <context-param>
        <!--定义参数的名称,必须是唯一的-->
        <param-name>contextConfigLocation</param-name>
        <!--定义参数的值-->
        <param-value>classpath:applicationContext.xml</param-value>
      </context-param>
    
      <!--监听器-->
      <!--配置Spring所提供的`ContextLoaderListener` 监听器-->
      <listener>
        <!--监听器类的全限定名-->
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
      </listener>
      
      <!--声明Servlet-->
      <!--配置SpringMVC的前端控制器的Servlet-->
      <servlet>
        <servlet-name>DispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
      </servlet>
      
      <!--将URL模式映射到特定的Servlet上(即DispatcherServlet)-->
      <servlet-mapping>
        <!--指定的Servlet的类名-->
        <servlet-name>DispatcherServlet</servlet-name>
        <!--给指定的Servlet设置url,相当于@WebServlet("/")-->
        <url-pattern>/</url-pattern>
      </servlet-mapping>
    
    </web-app>
    
  • Step3: 创建Controller类和视图页面

    • Step3-1: 在web项目核心目录(即WEB-INF)下创建视图页面success.jsp,代码如下

      <%@ page contentType="text/html;charset=UTF-8" language="java" %>
      <html>
          <head>
              <title>Title</title>
          </head>
          <body>
              <h1>...Success Running...</h1>
          </body>
      </html>
      
    • Step3-2: 创建一个与三层架构包同级的controller包,并在该包下创建类Usercontroller,代码如下

      package at.guigu.controller;
      
      public class Usercontroller {
          public String save() {
              System.out.println("Usercontroller save...");
              //跳转到指定的视图页面
              return "success.jsp";
          }
      }
      
  • Step6: 使用@RequestMapping注解配置Controller类中业务方法的映射地址,Usercontroller代码更改如下

    package at.guigu.controller;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    //将Usercontroller放到Spring容器中
    @Controller
    public class Usercontroller {
        
        //设置请求地址映射
        @RequestMapping("/quick")
        public String save() {
            System.out.println("Usercontroller save...");
            return "success.jsp";
        }
    }
    
  • Step7: 右键源代码配置文件目录(即资源文件resources)→NewXML Configuration FileSpring Config,文件名为spring-mvc.xml,然后配置SpringMVC的核心文件spring-mvc.xml,代码如下

    • Step7-1: 配置注解的组件扫描 需要在SpringMVC的配置文件中引入context和mvc的命名空间、约束路径然后使用context命名空间配置组件扫描即可。

      1. 命名空间:

        xmlns:context="http://www.springframework.org/schema/context"
        xmlns:mvc="http://www.springframework.org/schema/mvc"
        
      2. 约束路径:

        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
        
      3. 配置组件扫描代码:<context:component-scan base-package="at.guigu.controller"></context:component-scan>

        • base-package:给定一个包,然后会自动扫描该包下的所有内容,以便可以识别使用注解配置的类、字段和方法
      4. 注意:其它三层架构包的注解的组件扫描在Spring的配置文件中配置

    <?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.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="at.guigu.controller"></context:component-scan>
        <!--等同于
        <context:component-scan base-package="at.guigu">
            type指定要扫描的内容为注解,expression指定要扫描的对应注解的全限定名
            只扫描at.guigu包下有@Controller注解的类
            <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
        </context:component-scan>
        -->
    </beans>
    
    • Step7-2: 在web项目核心目录(即WEB-INF)下的web.xml中配置SpringMVC的全局初始化参数。web.xml完整代码如下

      • 该全局初始化参数用于定义SpringMVC的配置文件供监听器使用

      • SpringMVC的全局初始化参数在配置SpringMVC的前端控制器的Servlet的标签体内,如下

        <!--配置SpringMVC的前端控制器的Servlet-->
          <servlet>
            <servlet-name>DispatcherServlet</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <!--配置SpringMVC的全局初始化参数-->
            <init-param>
              <param-name>contextConfigLocation</param-name>
              <param-value>classpath:spring-mvc.xml</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
          </servlet>
        
      <!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>
      
        <!--配置Spring的全局初始化参数-->
        <context-param>
          <!--定义参数的名称,必须是唯一的-->
          <param-name>contextConfigLocation</param-name>
          <!--定义参数的值-->
          <param-value>classpath:applicationContext.xml</param-value>
        </context-param>
      
        <!--监听器-->
        <!--配置Spring所提供的`ContextLoaderListener` 监听器-->
        <listener>
          <!--监听器类的全限定名-->
          <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
      
        <!--声明Servlet-->
        <!--配置SpringMVC的前端控制器的Servlet-->
        <servlet>
          <servlet-name>DispatcherServlet</servlet-name>
          <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
          <!--配置SpringMVC的全局初始化参数-->
          <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring-mvc.xml</param-value>
          </init-param>
          <load-on-startup>1</load-on-startup>
        </servlet>
      
        <!--将URL模式映射到特定的Servlet上(即DispatcherServlet)-->
        <servlet-mapping>
          <!--指定的Servlet的类名-->
          <servlet-name>DispatcherServlet</servlet-name>
          <!--给指定的Servlet设置url,相当于@WebServlet("/")-->
          <url-pattern>/</url-pattern>
        </servlet-mapping>
      
      </web-app>
      
  • Step8: 客户端发起请求测试:Tomcat运行该Web项目后输入地址映射的url后会自动跳转到success.jsp页面

    img.png

  • 完整包结构如下

    img_1.png

马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/cgrs572/spring-mvc-demo.git
git@gitee.com:cgrs572/spring-mvc-demo.git
cgrs572
spring-mvc-demo
SpringMvcDemo
master

搜索帮助