当前位置: 首页 > article >正文

从头开始学SpringMVC—01MVC介绍和入门案例

先介绍MVC和SpringMVC,然后通过一个简单的案例来学习如何使用该框架

目录

1.简介

1.1什么是MVC

1.2什么是SpringMVC

1.3SpringMVC的特点

2.入门案例

2.1开发环境

2.2创建maven工程

①添加web模块

②打包方式:war

③引入依赖

2.3配置web.xml

①默认配置方式

②扩展配置方式

2.4创建请求控制器

2.5创建SpringMVC的配置文件

2.6测试HelloWorld

①实现对首页的访问

②通过超链接跳转到指定页面

2.7总结


1.简介

1.1什么是MVC

1.2什么是SpringMVC

1.3SpringMVC的特点

2.入门案例

通过一个简单的入门案例来了解使用方法

2.1开发环境

2.2创建maven工程

①添加web模块

②打包方式:war

<packaging>war</packaging>

③引入依赖

<dependencies>
    <!-- SpringMVC -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>5.3.1</version>
    </dependency>
    <!-- 日志 -->
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.2.3</version>
    </dependency>
    <!-- ServletAPI -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
        <scope>provided</scope>
    </dependency>
    <!-- Spring5和Thymeleaf整合包 -->
    <dependency>
        <groupId>org.thymeleaf</groupId>
        <artifactId>thymeleaf-spring5</artifactId>
        <version>3.0.12.RELEASE</version>
    </dependency>
</dependencies>

2.3配置web.xml

注册SpringMVC的前端控制器DispatcherServlet

①默认配置方式

此配置作用下,SpringMVC的配置文件默认位于WEB-INF下,默认名称为-servlet.xml,例如,以下配置所对应SpringMVC的配置文件位于WEB-INF下,文件名为springMVC-servlet.xml

<!-- 配置SpringMVC的前端控制器,对浏览器发送的请求统一进行处理 -->
<servlet>
    <servlet-name>SpringMVC</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SpringMVC</servlet-name>
<!--
设置springMVC的核心控制器所能处理的请求的请求路径
/所匹配的请求可以是/login或.html或.js或.css方式的请求路径
但是/不能匹配.jsp请求路径的请求
-->
<url-pattern>/</url-pattern>
</servlet-mapping>

②扩展配置方式

可通过init-param标签设置SpringMVC配置文件的位置和名称,通过load-on-startup标签设置

SpringMVC前端控制器DispatcherServlet的初始化时间

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

    <!-- 配置SpringMVC的前端控制器,对浏览器发送的请求统一进行处理 -->
    <servlet>
        <servlet-name>SpringMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

        <!-- 通过初始化参数指定SpringMVC配置文件的位置和名称 -->
        <init-param>
            <!-- contextConfigLocation为固定值 -->
            <param-name>contextConfigLocation</param-name>
            <!-- 使用classpath:表示从类路径查找配置文件,例如maven工程中的
            src/main/resources -->
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
        <!--
        作为框架的核心组件,在启动过程中有大量的初始化操作要做
        而这些操作放在第一次请求时才执行会严重影响访问速度
        因此需要通过此标签将启动控制DispatcherServlet的初始化时间提前到服务器启动时
        -->
        <load-on-startup>1</load-on-startup>


    </servlet>
    <servlet-mapping>
    <servlet-name>SpringMVC</servlet-name>
    <!--
    设置springMVC的核心控制器所能处理的请求的请求路径
    /所匹配的请求可以是/login或.html或.js或.css方式的请求路径
    但是/不能匹配.jsp请求路径的请求
    -->
    <url-pattern>/</url-pattern>
    </servlet-mapping>


</web-app>

 

2.4创建请求控制器

2.5创建SpringMVC的配置文件

<?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 https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <!-- 自动扫描包 -->
    <context:component-scan base-package="com.ykx.controller"/>
    <!-- 配置Thymeleaf视图解析器 -->
    <bean id="viewResolver"
          class="org.thymeleaf.spring5.view.ThymeleafViewResolver">
        <property name="order" value="1"/>
        <property name="characterEncoding" value="UTF-8"/>
        <property name="templateEngine">
            <bean class="org.thymeleaf.spring5.SpringTemplateEngine">
                <property name="templateResolver">
                    <bean
                            class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver">
                        <!-- 视图前缀 -->
                        <property name="prefix" value="/WEB-INF/templates/"/>
                        <!-- 视图后缀 -->
                        <property name="suffix" value=".html"/>
                        <property name="templateMode" value="HTML5"/>
                        <property name="characterEncoding" value="UTF-8" />
                    </bean>
                </property>
            </bean>
        </property>
    </bean>


    <!--
        处理静态资源,例如html、js、css、jpg
        若只设置该标签,则只能访问静态资源,其他请求则无法访问
        此时必须设置<mvc:annotation-driven/>解决问题
    -->
    <mvc:default-servlet-handler/>
    <!-- 开启mvc注解驱动 -->
    <mvc:annotation-driven>
        <mvc:message-converters>
            <!-- 处理响应中文内容乱码 -->
            <bean
                    class="org.springframework.http.converter.StringHttpMessageConverter">
                <property name="defaultCharset" value="UTF-8" />
                <property name="supportedMediaTypes">
                    <list>
                        <value>text/html</value>
                        <value>application/json</value>
                    </list>
                </property>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>


</beans>

2.6测试HelloWorld

①实现对首页的访问

@Controller
public class HelloController {

    // @RequestMapping注解:处理请求和控制器方法之间的映射关系
    // @RequestMapping注解的value属性可以通过请求地址匹配请求,/表示的当前工程的上下文路径
    // localhost:8080/springMVC/
    @RequestMapping("/")
    public String index() {
        //设置视图名称
        return "index";
    }


}

②通过超链接跳转到指定页面

在主页index.html中设置超链接

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>index.html</h1>
<a th:href="@{/hello}">测试SpringMVC</a>
<a href="/hello">测试绝对路径</a>
</body>
</html>

在请求控制器中创建处理请求的方法

@RequestMapping("/hello")
public String hello(){
    return "success";
}

 

2.7总结

内容来源于黑马教程,仅作为学习笔记参考

 


http://www.kler.cn/a/457281.html

相关文章:

  • Android使用DataBinding和Merge引发的血案
  • NVR管理平台EasyNVR设备通过ONVIF接入出现404访问错误是什么原因?
  • 前端安全措施:接口签名、RSA加密、反调试、反反调试、CAPTCHA验证
  • 【Java 新特性】常用函数式接口
  • 解决virtualbox出现开启DHCP之后ubuntu虚拟机之后IP重复的问题
  • 图像处理-Ch7-小波函数
  • ​Python数据序列化模块pickle使用
  • 如何快速又安全的实现端口转发【Windows MAC linux通用】
  • yolov8算法及其改进
  • Golang的文件加密工具
  • Word批量更改题注
  • Pytorch | 利用DTA针对CIFAR10上的ResNet分类器进行对抗攻击
  • 问题-01
  • 学习C++:数据类型
  • Jmeter录制https请求
  • 在asp.net webapi项目中 将数据库连接字符串写在配置文件中,及Program配置Serilog存放路径以及设置
  • JavaWeb期末复习
  • Wordly Wise 3000 国际背单词01 介绍 + 测词汇量
  • 【Beats01】企业级日志分析系统ELK之Metricbeat与Heartbeat 监控
  • Python 占位符详细笔记
  • C语言的数据结构
  • vue3 video 播放rtmp视频?(360浏览器支持)
  • mysql系列7—Innodb的redolog
  • 分布式版本管理工具——git中分支的相关知识
  • Webpack在Vue CLI中的应用
  • 7.即时通讯