本文介绍: DispatcherServlet 是 Spring MVC 的前端控制器(Front Controller)。它负责接收来自客户端请求然后请求分发给相应的处理器(Controller)进行处理。DispatcherServlet负责管理其他 Spring MVC 组件生命周期。HandlerMapping 负责将请求映射到具体的处理器(Controller)。它决定了哪个处理器应该处理特定的请求。

springMVC组件概述

  1. DispatcherServlet调度器Servlet): DispatcherServlet 是 Spring MVC 的前端控制器(Front Controller)。它负责接收来自客户端的请求,然后将请求分发给相应的处理器(Controller)进行处理。DispatcherServlet 还负责管理其他 Spring MVC 组件生命周期

  2. HandlerMapping(处理器映射): HandlerMapping 负责将请求映射到具体的处理器(Controller)。它决定了哪个处理器应该处理特定的请求。Spring MVC 提供了多种 HandlerMapping实现,包括注解扫描配置文件方式

  3. Controller(控制器): Controller 是处理请求的组件,它负责处理用户请求并生成响应。在 Spring MVC 中,Controller 通常是一个带有 @Controller 注解的类,其中的方法使用 @RequestMapping 注解指定处理的请求路径

  4. Model模型): Model 用于封装处理器方法处理请求时所需要数据。在处理器方法中,你可以通过方法参数传递 Model 对象,并在方法内设置属性,这些属性最终会被传递给视图进行渲染

  5. ViewResolver(视图解析器): ViewResolver 负责将逻辑视图解析为实际的视图对象。它决定了返回用户视图应该什么。Spring MVC 支持多种视图解析器,包括 InternalResourceViewResolver(用于 JSP 视图)、FreeMarkerViewResolver、ThymeleafViewResolver 等。

  6. View(视图): View 负责将模型数据染成最终的响应输出。在 Spring MVC 中,视图可以是 JSP、FreeMarker、Thymeleaf模板引擎生成页面

  7. Interceptor(拦截器): Interceptor 允许你在请求被处理之前或之后执行一些操作。拦截器可以用于日志记录权限检查性能监控等。在 Spring MVC 中,你可以通过实现 HandlerInterceptor 接口定义拦截器。

  8. HandlerAdapter(处理器适配器): HandlerAdapter 负责将处理器(Controller)包装一个能够被 DispatcherServlet 调用的处理器对象。它使得不同类型的处理器能够统一被调用。

InternalResourceViewResolver(视图解析器

通过查看它的源码可以知道他可以设置前缀后缀

    public InternalResourceViewResolver(String prefix, String suffix) {
        this();
        this.setPrefix(prefix);
        this.setSuffix(suffix);
    }

配置文件里可以这样设置

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/views/" /> 前缀
    <property name="suffix" value=".jsp" /> 后缀
</bean>

RequestMappingHandlerAdapter(处理器适配器

源码

可以知道它可以设置一个消息转换器列表消息转换器在 Spring MVC 中负责处理请求和响应数据格式转换例如将 Java 对象转换为 JSON 格式或将 JSON 数据转换为 Java 对象。

public void setMessageConverters(List<HttpMessageConverter<?>> messageConverters) {
        this.messageConverters.clear();
        this.messageConverters.addAll(messageConverters);
    }

配置文件

可以把返回字符串自动转换json字符串 用的是jackson

 <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
    <property name="MessageConverters">
     <list>
      <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">            </bean>
     </list>
    </property>

RequestMappingHandlerMapping(处理器映射器)

@Controller public class MyController {

@RequestMapping("/hello")
public String hello() {
    // 处理请求的业务逻辑
    return "helloPage"; // 返回视图名
}
​
// 支持多个映射路径
@RequestMapping(value = {"/greet", "/welcome"})
public String greet() {
    // 处理请求的业务逻辑
    return "greetPage"; // 返回视图名
}
​
// 指定请求方法
@RequestMapping(value = "/greetPost", method = RequestMethod.POST)
public String greetPost() {
    // 处理POST请求的业务逻辑
    return "greetPostPage"; // 返回视图名
}
​
// 接收路径变量
@RequestMapping("/user/{id}")
public String getUserById(@PathVariable Long id) {
    // 使用路径变量id,处理请求的业务逻辑
    return "userPage"; // 返回视图名
}

}

 

原文地址:https://blog.csdn.net/qq_62646841/article/details/134653737

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_20596.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注