springmvc的生命周期 - 面试宝典

举报
皮牙子抓饭 发表于 2023/08/23 09:17:17 2023/08/23
【摘要】 Spring MVC的生命周期可以分为以下几个阶段:容器初始化:当应用启动时,Spring MVC容器会被初始化。这个阶段包括了加载配置文件、创建Spring容器、实例化并配置DispatcherServlet等操作。请求到达:当有HTTP请求到达服务器时,DispatcherServlet会拦截并接收请求。此时,DispatcherServlet会根据请求的URL,调用HandlerMap...

Spring MVC的生命周期可以分为以下几个阶段:

  1. 容器初始化:当应用启动时,Spring MVC容器会被初始化。这个阶段包括了加载配置文件、创建Spring容器、实例化并配置DispatcherServlet等操作。
  2. 请求到达:当有HTTP请求到达服务器时,DispatcherServlet会拦截并接收请求。此时,DispatcherServlet会根据请求的URL,调用HandlerMapping来确定对应的处理器(Controller)。
  3. 处理器执行:在确定了请求的处理器之后,DispatcherServlet会将请求传递给处理器,由处理器执行相应的业务逻辑。
  4. 视图解析:处理器执行完业务逻辑后,会返回一个ModelAndView对象,其中包含了模型数据和视图名称。DispatcherServlet会通过ViewResolver来解析视图名称,找到对应的视图。
  5. 视图渲染:一旦找到了视图,DispatcherServlet会将模型数据传递给视图,并由视图来渲染最终的HTML内容。
  6. 响应返回:渲染完成后,DispatcherServlet会将响应返回给客户端。
  7. 容器销毁:当应用关闭时,Spring MVC容器会被销毁。这个阶段包括了释放资源、关闭数据库连接等操作。 以上就是Spring MVC的生命周期的主要阶段。每个阶段都有相应的回调方法或者事件监听器可以进行定制和扩展。

以下是一个简单的示例代码,展示了Spring MVC的生命周期:

javaCopy code// Controller
@Controller
public class MyController {
    @RequestMapping("/hello")
    public String hello(Model model) {
        model.addAttribute("message", "Hello, World!");
        return "hello";
    }
}
// 配置文件
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.example")
public class AppConfig implements WebMvcConfigurer {
    @Bean
    public ViewResolver viewResolver() {
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setPrefix("/WEB-INF/views/");
        viewResolver.setSuffix(".jsp");
        return viewResolver;
    }
}
// 启动类
public class Application {
    public static void main(String[] args) {
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
        DispatcherServlet dispatcherServlet = new DispatcherServlet(context);
        ServletRegistration.Dynamic registration = context.getServletContext().addServlet("dispatcherServlet", dispatcherServlet);
        registration.setLoadOnStartup(1);
        registration.addMapping("/");
    }
}

在上述示例中,​​MyController​​是一个简单的处理器,使用​​@Controller​​注解标注,并定义了一个​​hello​​方法,处理"/hello"的请求,并将"Hello, World!"消息存入模型中。 ​​AppConfig​​是Spring MVC的配置文件,使用​​@Configuration​​注解标注,并实现了​​WebMvcConfigurer​​接口,用于配置视图解析器和组件扫描。 ​​Application​​是启动类,通过创建​​AnnotationConfigApplicationContext​​对象初始化Spring MVC容器,并注册​​DispatcherServlet​​,将其映射到根路径"/"。 以上示例展示了Spring MVC的生命周期中的一些关键步骤,包括容器初始化、请求到达、处理器执行、视图解析、视图渲染和响应返回。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。