SpringMVC学习记录

学Spring的我头尊的很痛…怎么脑子记不住东西啊学了就忘真烦人…(可能有人会看到,但是这篇只是为了记录自己的一些理解防止我忘记想法,可不一定对)

Spring MVC(Model-View-Controller)是Spring框架中的一个模块,用于构建基于Web的应用程序。它遵循经典的MVC设计模式,将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller),以实现关注点分离,便于管理和维护代码。

主要功能
请求处理:处理来自客户端的HTTP请求并将其映射到相应的控制器方法。
模型管理:控制器处理请求并生成相应的数据模型,将模型传递给视图进行展示。
视图渲染:视图负责生成HTML或其他格式的响应内容,并将其返回给客户端。
核心组件
DispatcherServlet:作为前端控制器(Front Controller),负责将请求分发给适当的处理器。
Controller:处理具体请求的业务逻辑,将模型数据传递给视图。
Model:用于在控制器和视图之间传递数据。
View:负责呈现模型数据,生成响应内容。
工作流程
客户端发送HTTP请求到服务器。
DispatcherServlet接收请求并进行解析。
DispatcherServlet根据请求的URL映射找到对应的控制器。
控制器处理请求,进行业务逻辑处理,生成模型数据。
控制器将模型数据传递给视图。
视图渲染模型数据,生成响应内容(如HTML)。
DispatcherServlet将视图生成的响应内容返回给客户端。

示例
下面是一个简单的Spring MVC示例,用于展示基本的请求处理流程。
配置类:

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.example")
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void configureViewResolvers(ViewResolverRegistry registry) {
        registry.jsp("/WEB-INF/views/", ".jsp");
    }
}

这段代码的主要目的是配置Spring MVC,使其能够自动扫描指定包下的组件,并将视图名称解析为指定目录下的JSP文件。通过使用注解,简化了Spring应用程序的配置,取代了传统的XML配置文件。
@EnableWebMvc:启用Spring MVC,等同于在XML配置中启用<mvc:annotation-driven />。它导入了Spring MVC的默认配置,例如处理器映射器和处理器适配器。
@ComponentScan(basePackages = “com.example”):指定要扫描的包。Spring会扫描com.example包及其子包中的组件(如控制器、服务、仓库等),并将这些组件注册到Spring容器中。
@override覆盖WebMvcConfigurer中的configureViewResolvers方法,配置视图解析器。
registry.jsp(“/WEB-INF/views/”, “.jsp”)定义了视图解析器将视图名称解析为JSP文件的规则。具体来说,当控制器返回一个视图名称时,会将该视图名称解析为/WEB-INF/views/目录下的JSP文件,并使用.jsp作为文件扩展名。例如,返回"hello"会被解析为/WEB-INF/views/hello.jsp。

控制器

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class HelloController {

    @GetMapping("/hello")
    public String sayHello(Model model) {
        model.addAttribute("message", "Hello, Spring MVC!");
        return "hello";
    }
}

这段代码定义了一个简单的Spring MVC控制器,当客户端发送/hello请求时,sayHello方法会被调用。该方法将一条消息添加到Model对象中,并返回视图名称"hello"。视图解析器会将"hello"解析为具体的视图文件,并将Model中的数据传递给视图进行渲染。
@GetMapping(“/hello”):注解@GetMapping用于映射HTTP GET请求到指定的处理方法。
/hello表示当客户端发送/hello请求时,将由sayHello方法进行处理。
public String sayHello(Model model):定义了一个名为sayHello的公共方法,该方法返回一个字符串,并接受一个Model对象作为参数。Model对象用于将数据传递到视图中。
model.addAttribute(“message”, “Hello, Spring MVC!”):将一条消息添加到Model对象中,键为"message",值为"Hello, Spring MVC!“。这些数据将在视图中进行渲染。
return “hello”:返回一个字符串"hello”,表示视图的名称。根据视图解析器的配置,该视图名称将被解析为具体的视图文件,例如/WEB-INF/views/hello.jsp。

视图(hello.jsp)

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
    <title>Hello Page</title>
</head>
<body>
    <h1>${message}</h1>
</body>
</html>

主应用程序类

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

不过现在用的比较多的是Thymeleaf ,它是一个用于 Java 应用程序的现代服务器端模板引擎,主要用于将后端数据与 HTML 模板结合,生成动态网页。
Thymeleaf能 与 Spring 框架无缝集成,特别是 Spring MVC。它常用于 Spring Boot 项目中,作为默认的模板引擎。通过 Thymeleaf,可以很方便地将控制器中的数据传递给视图,并在视图中进行展示。

大概是这么个流程我想:
感觉model这个东西确实很重要…
在这里插入图片描述

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值