• 阿里技术专家深入讲解,SpringMVC入门到进阶,看这一篇就够了


    前言

    SpringMVC是一个实现了Web MVC设计模式的轻量级Web框架。它与前辈Struts 2框架一样,都属于MVC框架,因为其使用和性能等方面比Struts 2更加优异,所以Spring MVC是现在比较主流的MVC框架。

    先简单概括一下SpringMVC的主要特点:

    灵活性强,容易与其他框架集成;提供了前端控制器DispatcherServlet;支持多种视图技术,如JSP、FreeMarker等视图技术;支持国际化;

    And So On…

    接下来,开始写我们的第一个Spring MVC应用。

    开发工具

    intelliJ IDEA (版本2020.2.2)与浏览器

    创建项目

    步骤1:打开IDEA,新建项目(New Project)。

    步骤2:选择Maven,按默认的来,直接点击右下角Next。接着输入项目名,按默认的来,直接点击右下角Next。

    步骤3:创建完Maven项目后,点击项目名右键,选择添加框架支持(Add Framework Support…)

    步骤4:勾选Web Application(4.0),点击Next。

    步骤5:完成以上步骤,最终的项目结构如下:

    引入依赖Jar包

    在pom.xml中,导入Maven依赖Jar包,如下:

    <dependencies>
            <dependency>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
                <version>1.2</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-beans</artifactId>
                <version>5.2.6.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>5.2.6.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
                <version>5.2.6.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-expression</artifactId>
                <version>5.2.6.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-web</artifactId>
                <version>5.2.6.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>5.2.6.RELEASE</version>
            </dependency>
        </dependencies>
    
    

    提示: 导入依赖Jar包后,需要点击右侧的Maven,然后刷新一下才能生效。具体如下:

    查看依赖Jar包是否导入成功:

    配置前端控制器

    在web.xml中,配置SpringMVC的前端控制器DispatcherServlet。

    在此之前,需要在src/main/resources目录下新建springmvc-config.xml文件。

    web.xml,如下:

    <?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_4_0.xsd"
             version="4.0">
    
        <servlet>
            <!-- 配置前端过滤器 -->
            <servlet-name>springmvc</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <!-- 初始化加载配置文件 -->
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>classpath:springmvc-config.xml</param-value>
            </init-param>
            <!-- 表示容器在启动时立即加载Servlet -->
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>springmvc</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>
    </web-app>
    
    

    提示: 在<servlet-mapping>中,通过<url-pattern>元素的/,会将所有的URL拦截,并交由DispatcherServlet处理。

    创建Controller类

    在src/main/java目录下,新建一个com.study.controller包,并在包中创建控制器类HelloController,需要实现Controller接口。

    提示: 实现的Controller接口必须是org.springframework.web.servlet.mvc包下的才可以。

    在重写Controller接口中的handleRequest方法时,可能会出现如下报错:

    解决办法:

    在pom.xml中,导入所需的依赖Jar包,如下:

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

    HelloController.java如下:

    package com.study.controller;
    
    import org.springframework.web.servlet.ModelAndView;
    import org.springframework.web.servlet.mvc.Controller;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class HelloController implements Controller {
        public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) {
            //创建ModelAndView对象
            ModelAndView mav = new ModelAndView();
            //向模型对象中添加数据
            mav.addObject("msg","这是我的第一个SpringMVC程序");
            //设置逻辑视图名
            mav.setViewName("/WEB-INF/jsp/hello.jsp");
            //返回ModelAndView对象
            return mav;
        }
    }
    
    

    本案例中,向模型对象中添加了一个名称为msg的字符串对象,并设置返回的逻辑视图路径为/WEB-INF/jsp/hello.jsp,这样,请求就会被转发到hello.jsp页面。

    创建视图页面

    在WEB-INF目录下,新建一个jsp文件夹,并在文件夹中新建一个hello.jsp页面文件,然后在该页面使用EL表达式获取msg中的信息。

    hello.jsp,如下:

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
        ${msg}
    </body>
    </html>
    
    

    创建Spring MVC的配置文件,配置控制器映射信息

    在第四步中,我们已经在src/main/resources目录下新建了一个springmvc-config.xml文件。接下来,我们需要配置控制器映射信息。

    springmvc-config.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
            https://www.springframework.org/schema/beans/spring-beans.xsd">
    
        <!-- 配置处理器Handle,映射"/helloController"请求 -->
        <bean name="/helloController" class="com.study.controller.HelloController" />
        <!-- 处理器映射器,将处理Handle的name作为url进行查找 -->
        <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
        <!-- 处理器适配器,配置对处理器中handleRequest()方法的调用 -->
        <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />
        <!-- 视图解析器 -->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" />
    </beans>
    
    

    启动项目,测试应用

    需要配置Tomcat来启动项目,具体步骤如下:

    步骤1:点击上方Add Configureation…

    步骤2:点击左上方+,选择Tomcat Server下的Local。

    步骤3:点击右下角的Fix。修改Application context为/,接着点击Apply->OK。

    完成以上步骤,就可以开始运行项目。

    打开浏览器访问http://localhost:8080/helloController

    结果如下:

    访问后,有可能会出现404、资源未公开等报错信息。

    解决办法:

    步骤1:点击右上角的Project Structure…

    步骤2:点击Artifacts->WEB-INF->右键,新建一个lib目录。

    步骤3:再进行如下操作。

    提示: 完成以上步骤,记得点击Apply->OK。

    再重新启动Tomcat,访问http://localhost:8080/helloController即可。

    浏览器中显示出了模型对象中的字符串信息,就说明这个超级简单的Spring MVC程序执行成功。

    总结

    以上是我分享给大家的关于SpringMVC快速入门程序的一些总结。如果觉得还不错的话,就送我一个赞吧!如果本文对你有用的话,也欢迎收藏哦!

    最后

    欢迎关注公众号:前程有光,领取一线大厂Java面试题总结+各知识点学习思维导+一份300页pdf文档的Java核心知识点总结!

  • 相关阅读:
    springboot中使用swagger
    springboot中使用druid数据库连接池
    springboot连接mysql时出现的错误
    请求路径springmvc中支持ant风格
    mybatis中的<where>和<set>
    spring中Bean装配有关的注解
    spring在web项目中ApplicationContext容器的实例化
    mybatis中resultMap的作用
    mybatis中的别名
    mysql利用LAST_INSERT_ID实现id生成器
  • 原文地址:https://www.cnblogs.com/lwh1019/p/13969548.html
Copyright © 2020-2023  润新知