springMvc处理请求流程

DispatcherServlet

SpringMVC提供,我们需要使用web.xml配置使其生效,它是整个流程处理的核心,所有请求都经过它的处理和分发

HandlerMapping

SpringMVC提供,我们需要进行IoC配置使其加入IoC容器方可生效,它内部缓存handler(controller方法)和handler访问路径数据,被DispatcherServlet调用,用于查找路径对应的handler

HandlerAdapter

SpringMVC提供,我们需要进行IoC配置使其加入IoC容器方可生效,它可以处理请求参数和处理响应数据数据,每次DispatcherServlet都是通过handlerAdapter间接调用handler,他是handler和DispatcherServlet之间的适配器

Handler

handler又称处理器,他是Controller类内部的方法简称,是由我们自己定义,用来接收参数,向后调用业务,最终返回响应结果

ViewResovler

SpringMVC提供,我们需要进行IoC配置使其加入IoC容器方可生效!视图解析器主要作用简化模版视图页面查找的,但是需要注意,前后端分离项目,后端只返回JSON数据,不返回页面,那就不需要视图解析器!所以,视图解析器,相对其他的组件不是必须的

springMvc初体验

1.导入相关依赖
点击查看代码
<!-- springioc相关依赖  -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>6.0.6</version>
    </dependency>
<!-- servlet 依赖  -->
<dependency>
            <groupId>jakarta.platform</groupId>
            <artifactId>jakarta.jakartaee-web-api</artifactId>
            <version>9.1.0</version>
            <scope>provided</scope>
        </dependency>

 <!-- springwebmvc相关依赖  -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>6.0.6</version>
        </dependency>
2.声明配置类
点击查看代码
@Configuration  //声明配置类
@ComponentScan("com.wind.controller")  //包扫描
public class MvcConfig {

    @Bean //将 handlerMapping 加入ioc容器
    public RequestMappingHandlerMapping handlerMapping() {
        return new RequestMappingHandlerMapping();
    }

    @Bean //将 handlerAdapter 加入ioc容器
    public RequestMappingHandlerAdapter handlerAdapter() {
        return new RequestMappingHandlerAdapter();
    }
}
3.初始化ioc容器
点击查看代码
public class SpringMvcInit extends AbstractAnnotationConfigDispatcherServletInitializer {
    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[0];
    }

    @Override  //设置项目对应的配置
    protected Class<?>[] getServletConfigClasses() {
        //加载配置类 创建ioc容器
        return new Class[]{MvcConfig.class};
    }

    @Override  //配置 springmvc内部自带servlet的访问地址
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }
}
4.定义控制层所需要的方法
点击查看代码
@Controller //控制层注解
@RequestMapping("user")  //注册地址
public class UserController {
    /**
     * @RequestMapping 放在类上和方法上的区别
     * 类上是通用的访问地址
     * 方法上是具体的handler地址  (方法上的地址是必须的)
     * 访问 :类地址 + 方法地址即可
     */

    @RequestMapping("login") //注册地址   把handler 注册到 handlerMapping上
    @ResponseBody //代表返回数据给前端  不经过 视图解析器
    public String login(){
        return "login";
    }
}
posted @   微风抚秀发  阅读(42)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示