SpringMVC系列一: 初识SpringMVC


⬅️ 上一篇: Spring系列七:声明式事务


🎉 欢迎来到 SpringMVC系列一: 初识SpringMVC 🎉

在本篇文章中,我们将介绍SpringMVC的基本概念和功能。SpringMVC是Spring框架的重要组成部分,用于简化Web应用程序的开发。


🔧 需要用到的项目: springmvc项目 🛠️


📝 内容概述

SpringMVC是一种基于Spring框架的Web层框架,提供了Model-View-Controller (MVC) 的实现,使Web开发更加简洁和模块化。在本篇文章中,我们将讲解SpringMVC的核心组件及其基本工作原理。


在这里插入图片描述

🍜SpringMVC介绍

💞 官方文档

资源已上传-离线文档 spring-framework-5.3.8\docs\reference\html\index.html
在这里插入图片描述
在这里插入图片描述

💞 SpringMVC-基本介绍

SpringMVC特点&概述

1.SpringMVC从易用性, 效率上, 比曾经流行的Struts2更好
2.SpringMVCWEB层框架 [解读: SpringMVC接管了Web层组件, 比如控制器, 视图, 视图解析, 返回给用户的数据格式, 同时支持MVC的开发模式/开发架构]
3.SpringMVC通过注解, 让POJO成为控制器, 不需要继承类或者实现接口
4.SpringMVC采用低耦合的组件设计方式, 具有更好地扩展性和灵活性
5.支持REST格式的URL请求
6.SpringMVC是基于Spring的, 也就是SpringMVC是在Spring基础上的. SpringMVC的核心包是 spring-web-5.3.8.jar, spring-webmvc-5.3.8.jar

梳理Spring SpringMVC SpringBoot的关系

1.Spring MVC只是Spring处理WEB层请求的一个模块/组件, Spring MVC的基石是Servlet[Java WEB]

2.Spring Boot是为了简化开发者的使用, 推出的封神框架(约定优于配置, 简化了Spring的配置流程), SpringBoot包含很多组件/框架. Spring就是最核心的内容之一, 也包含Spring MVC

3.它们大概的关系是: SpringBoot > Spring > Spring MVC

💞SpringMVC-快速入门

需求说明/图解

●需求说明: 完成一个最基本的测试案例, 登陆案例, 使用 SpringMVC完成

在这里插入图片描述在这里插入图片描述

SpringMVC登录流程分析

在这里插入图片描述

SpringMVC登录-代码实现

1.创建JavaWeb项目 springmvc, 这里要参考一下IDEA 2022.3开发JavaWeb工程
在这里插入图片描述

2.导入 springmvc开发需要的jar包

在这里插入图片描述

3.创建src/applicationContext-mvc.xml文件(就是 spring 的容器文件), 文件名自己定
在这里插入图片描述
在这里插入图片描述

4.配置WEB-INF/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">

    <!--
    1.配置前端控制器/中央控制器/分发控制器
    2.用户的请求都会经过它的处理
    -->
    <servlet>
        <servlet-name>springDispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--配置属性 contextConfigLocation, 指定DispatcherServlet 去操作的spring配置文件-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:applicationContext-mvc.xml</param-value>
        </init-param>
        <!--在web项目启动时, 就自动地加载DispatcherServlet-->
        <load-on-startup>1</load-on-startup>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>springDispatcherServlet</servlet-name>
        <!--说明
        1.这里我们配置的url-pattern是 /, 表示用户的请求都经过 DispatcherServlet
        2.这样配置也支持rest风格的url请求
        -->
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

说明: 这两个配置文件不一样
在这里插入图片描述

5.创建web/login.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录页面</title>
</head>
<body>
<%--后面再填写?--%>
<form action="?">
    username: <input type="text" name="username"/><br/>
    password: <input type="password" name="password"/><br/>
    <input type="submit" value="登录">
</form>
</body>
</html>

6.新建com.zzw.web.UserServlet.java

/*
1.如果我们使用了SpringMVC, 在一个类上标识@Controller
2.表示将该类视为一个控制器, 注入到容器
3.比原生servlet开发要简化很多
*/
@Controller
public class UserServlet {

     //编写方法, 响应用户的请求
    /**
     * 解读
     * 1. login() 方法是用于响应用户的登录请求
     * 2. @RequestMapper(value="/login"), 类似于我们原生Servlet
     *    配置的url-pattern, 就是给方法配置一个url映射
     * 3. 即当用户在浏览器输入 http://localhost:8080/web工程路径/login 就能够访问到login()
     * 4. return "login ok"; 表示返回结果给视图解析器(InternalResourceViewResolver)
     *    , 视图解析器会根据配置, 来决定跳转到哪个页面
     *
     *     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
     *
     *         <property name="prefix" value="/WEB-INF/pages/"/>
     *         <property name="suffix" value=".jsp"/>
     *     </bean>
     *
     *     根据上面配置的 return "login_ok"; 就会转发到 /WEB-INF/pages/login_ok.jsp
     */
    @RequestMapping(value = "/login")
    public String login() {
        System.out.println("login ok...");
        return "login_ok";
    }
}

7.创建web路径/WEB-INF/pages/login_ok.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登陆成功</title>
</head>
<body>
<h1>登陆成功~</h1>
</body>
</html>

8.配置applicationContext-mvc.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"
       xmlns:context="http://www.springframework.org/schema/context"
       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">

    <!--配置要自动要扫描的包-->
    <context:component-scan base-package="com.zzw.web"/>

    <!--配置视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!--配置属性prefix 和 suffix-->
        <property name="prefix" value="/WEB-INF/pages/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>

说明: InternalResourceViewResolver的父类UrlBasedViewResovler, 有属性prefix, suffix
在这里插入图片描述
在这里插入图片描述
9.配置login.jsp页面访问路径 参考->web工程路径专题

<body>
<%--
这里需要回顾 javaweb-web工程路径专题
1. action="login" 表示url 是 http://localhost:8080/springmvc/login
   前提: 当前页面在web路径下, 相对路径为 http://localhost:8080/springmvc/login.jsp
2. action="/login" 表示url 是 http://localhost:8080/login
--%>
<form action="login">
    username: <input type="text" name="username"/><br/>
    password: <input type="password" name="password"/><br/>
    <input type="submit" value="登录">
</form>
</body>

10.登陆测试
在这里插入图片描述在这里插入图片描述

注意事项和细节说明

1.学习如何搭建一个springmvc项目, 初步理解springmvc工作流程

2.这里的UserServlet需要注解成@Controller, 我们称之为一个Handler处理器

3.UserServlet指定url时, value是可以省略的

4.关于SpringMVCDispatcherServlet的配置文件, 如果不在web.xml中指定applicationContext-mvc.xml, 默认在/WEB-INF/springDispatcherServlet-servlet.xml找这个配置文件 (推荐使用, 做修改, 并完成测试)

查看DispatcherServlet父类FrameworkServlet的源码
在这里插入图片描述

1)修改web.xml, 注销init-param配置节点

<!--配置前端控制器/中央控制器/分发控制器
1.用户的请求都会经过它的处理
-->
<servlet>
    <servlet-name>springDispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!--解读
    1.如果我们没有配置 contextConfigLocation
    2.默认按照这样的位置去定位spring配置文件 /WEB-INF/springDispatcherServlet-servlet.xml
    -->

    <!--配置属性 contextConfigLocation, 指定DispatcherServlet 去操作的spring配置文件-->
    <!--<init-param>-->
    <!--    <param-name>contextConfigLocation</param-name>-->
    <!--    <param-value>classpath:springDispatcherServlet-servlet.xml</param-value>-->
    <!--</init-param>-->

    <!--在web项目启动时, 就自动地加载DispatcherServlet-->
    <load-on-startup>1</load-on-startup>
</servlet>

这时运行会报错. 因为在WEB-INF目录下找不到springDispatcherServlet-servlet.xml文件

2)剪切原applicationContext-mvc.xml/WEB-INF目录下, 文件名为: 你配置的DispatcherServlet名字-servlet.xml, 即/WEB-INF/springDispatcherServlet-servlet.xml
在这里插入图片描述

运行, 正常.

🍜SpringMVC执行流程分析

在这里插入图片描述


在这里插入图片描述

🔜 下一篇预告 🔜
敬请期待:SpringMVC系列二: 请求方式介绍


📚 目录导航 📚

  1. SpringMVC系列一: 初识SpringMVC
  2. SpringMVC系列二: 请求方式介绍
  3. SpringMVC系列三: Postman(接口测试工具)
  4. SpringMVC系列四: Rest-优雅的url请求风格
  5. SpringMVC系列五: SpringMVC映射请求数据
  6. SpringMVC系列六: 视图和视图解析器
  7. SpringMVC系列七: 手动实现SpringMVC底层机制-上
  8. SpringMVC系列八: 手动实现SpringMVC底层机制-下

💬 读者互动 💬
你对SpringMVC有任何疑问或需要帮助的地方吗?欢迎在评论区留言,我们一起讨论。


  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

~ 小团子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值