SpringMVC快速入门

1.简介

1.1 MVC架构模式

MVC是一种分层开发的模式,其中:

  • M: Model,业务模型,处理业务
  • V: View,视图,界面展示
  • C: Controller,控制器,处理请求,调用模型和视图

在这里插入图片描述

在这里插入图片描述

优点:

  1. 开发人员可以只关注整个结构中的其中某一层;
  2. 可维护性高,可扩展性高
  3. 可以降低层与层之间的依赖;
  4. 有利于标准化;
  5. 利于各层逻辑的复用

1.2 SpringMVC

Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的Spring MVC框架或集成其他MVC开发框架

2.SpringMVC快速入门

开发步骤:
①导入SpringMVC相关坐标

  <dependencies>
    <!-- SpringMVC坐标 -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.3.20</version>
    </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>
  </dependencies>

②配置SpringMVC核心控制器DispathcerServlet

<web-app>
  <!--  配置DispatcherServlet:前端控制器  -->
  <servlet>
    <servlet-name>DispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

    <!--  初始化参数:指定contextConfigLocation的路径  -->
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:springmvc-servlet.xml</param-value>
    </init-param>

    <!--当值为0或者大于0时,代表容器启动时加载该servlet。-->
    <!--正数的值越小,启动时加载该servlet的优先级越高。-->
    <!--如果为负数,则容器启动时不会加载该servlet,只有该servlet被选择时才会加载。-->
    <load-on-startup>1</load-on-startup>
  </servlet>
  
  <!-- 将上述的DispatcherServlet与某个url资源映射-->
  <servlet-mapping>
    <servlet-name>DispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>

③创建Controller类和视图

public class MyController {
    public String request(){
        System.out.println("running...");
        return "hello.jsp";
    }
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>HelloSpringMVC</title>
</head>
<body>
    <h1>Hello</h1>
</body>
</html>

④使用注解配置Controller类中业务方法的映射地址

@Controller     //声明为一个Controller
public class MyController {
    @RequestMapping("/hello")   //用于建立请求URL 和处理请求方法之间的对应关系
    public String request(){
        System.out.println("running...");
        return "hello.jsp";
    }
}

⑤配置SpringMVC核心文件springmvc-servlet.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
        https://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="controller"/>

</beans>

⑥客户端发起请求测试

在这里插入图片描述



3.SpringMVC执行流程

在这里插入图片描述

①用户发送请求至前端控制器DispatcherServlet。
②DispatcherServlet收到请求调用HandlerMapping处理器映射器。
③处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
④DispatcherServlet调用HandlerAdapter处理器适配器。
⑤HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。
⑥Controller执行完成返回ModelAndView。
⑦HandlerAdapter将controller执行结果ModelAndView返回DispatcherServlet。
⑧DispatcherServlet将ModelAndView传给ViewReslover视图解析器。
⑨ViewReslover解析后返回具体View。
⑩DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。DispatcherServlet响应用户。

1.前端控制器:DispatcherServlet
用户请求到达前端控制器,它就相当于MVC 模式中的C,DispatcherServlet是整个流程控制的中心,由
它调用其它组件处理用户的请求,DispatcherServlet的存在降低了组件之间的耦合性。

2.处理器映射器:HandlerMapping
HandlerMapping负责根据用户请求找到Handler 即处理器,SpringMVC提供了不同的映射器实现不同的
映射方式,例如:配置文件方式,实现接口方式,注解方式等。

3.处理器适配器:HandlerAdapter
通过HandlerAdapter对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理
器进行执行。

4.处理器:Handler
它就是我们开发中要编写的具体业务控制器。由DispatcherServlet把用户请求转发到Handler。由Handler 对具体的用户请求进行处理。

5.视图解析器:View Resolver
View Resolver 负责将处理结果生成View 视图,View Resolver 首先根据逻辑视图名解析成物理视图名,即具体的页面地址,再生成View 视图对象,最后对View 进行渲染将处理结果通过页面展示给用户。

6.视图:View
SpringMVC框架提供了很多的View 视图类型的支持,包括:jstlView、freemarkerView、pdfView等。最常用的视图就是jsp。一般情况下需要通过页面标签或页面模版技术将模型数据通过页面展示给用户,需要由程序员根据业务需求开发具体的页面

注:SpringMVC有默认组件配置,默认组件都是DispatcherServlet.properties配置文件中配置的,该配置文件地址org/springframework/web/servlet/DispatcherServlet.properties

### Spring MVC 快速入门教程 #### 了解Spring MVC的概念 Spring MVC 是一种基于Java的轻量级Web框架,遵循MVC设计模式。这种架构使得应用程序可以清晰地分为模型(Model)、视图(View)以及控制器(Controller),从而提高了代码的可维护性和扩展性[^1]。 #### 创建第一个Spring MVC项目 为了开始使用Spring MVC, 需要设置好开发环境并创建一个新的Spring项目。这通常涉及到安装必要的工具如IDE(IntelliJ IDEA 或 Eclipse), JDK 和 Maven/Gradle 构建工具。之后按照如下方式操作: - 添加依赖项至`pom.xml`(对于Maven项目): ```xml <dependencies> <!-- Other dependencies --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> ``` #### 初始化Spring容器与配置文件解析 当服务器启动时,会读取web应用根目录下的`web.xml`, 进而创建Spring IoC(Inversion of Control) 容器,并完成其中Bean实例化的工作。不过,在现代版本中更推荐采用嵌入式的Servlet容器和Java Config来代替传统的XML配置[^4]。 #### 处理HTTP请求流程概述 一旦客户端发起HTTP请求,则会被前端控制器(DispatcherServlet)捕获;接着依据URL映射规则(`@RequestMapping`)找到相应的处理器函数(controller method); 接下来执行业务逻辑并将数据传递给下一个环节——视图层;最后由视图解析器负责定位具体的页面模板用于展示最终结果给用户。 #### 实现简单的Controller 下面是一个非常基础的例子展示了如何定义一个控制类及其内部的方法用来响应特定类型的网络访问: ```java @Controller public class HelloController { @GetMapping("/hello") // 映射GET请求到此方法 public String sayHello(Model model){ model.addAttribute("message", "Welcome to Spring MVC!"); return "greeting"; // 返回逻辑视图名 } } ``` 上述代码片段里,每当接收到针对 `/hello` 路径发出的 GET 请求时就会调用 `sayHello()` 方法并向其传入Model对象以便于向视图传输信息。这里假设存在名为"greeting" 的 JSP 文件位于WEB-INF/jsp下作为实际显示内容的一部分[^3]。 #### 结合视图技术呈现动态网页 为了让浏览器能够看到预期的信息,还需要准备对应的HTML/JSP等格式文档充当视图部分的角色。比如上面提到过的“success.jsp”,它可以简单地像这样编写: ```jsp <%@ page contentType="text/html;charset=UTF-8"%> <html> <head><title>Greetings Page</title></head> <body> <h2>${message}</h2> </body> </html> ``` 这段脚本将会接收到来自controller的数据并通过EL表达式`${}`输出到页面上形成完整的反馈消息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值