Java | Spring框架学习笔记--(4)MVC框架整合

MVC框架整合

为什么要整合MVC框架?

  1. MVC框架提供了控制器(Controller)调用Service
  2. 请求响应的处理
  3. 接受请求参数 request.getParameter(" ")
  4. 控制程序的运行流程
  5. 视图解析(JSP、JSON、Freemarker、Thyemeleaf)

环境搭建

  1. 新建一个Maven的项目/模块,骨架选择列表里的webapp

  2. 导入依赖

        <dependency>
          <groupId>junitgroupId>
          <artifactId>junitartifactId>
          <version>4.11version>
          <scope>testscope>
        dependency>
    
        <dependency>
          <groupId>javax.servletgroupId>
          <artifactId>javax.servlet-apiartifactId>
          <version>3.1.0version>
          <scope>providedscope>
        dependency>
    
        <dependency>
          <groupId>javax.servletgroupId>
          <artifactId>jstlartifactId>
          <version>1.2version>
        dependency>
    
        <dependency>
          <groupId>javax.servlet.jspgroupId>
          <artifactId>javax.servlet.jsp-apiartifactId>
          <version>2.3.1version>
          <scope>providedscope>
        dependency>
    
        <dependency>
          <groupId>org.springframeworkgroupId>
          <artifactId>spring-webartifactId>
          <version>5.3.1version>
        dependency>
    
        <dependency>
          <groupId>org.springframeworkgroupId>
          <artifactId>spring-contextartifactId>
          <version>5.3.1version>
        dependency>
    
     	<dependency>
           <groupId>org.springframeworkgroupId>
           <artifactId>spring-webmvcartifactId>
           <version>5.3.1version>
         dependency>
    

Spring整合MVC框架核心思路

  1. 如何准备工厂?

    //使用的是WebXmlApplicationContext而不再是ClassPathApplicationContext
    ApplicationContext applicationContext = new WebXmlApplicationContext("/applicationContext.xml")
    
  2. 如何保证工厂唯一、共用?
    共用:把ApplicationContext存放在ServletContext域中
    唯一:在ServletContext对象创建的同时创建ApplicationContext,因为ServletContext只会创建一次,所以ApplicationContext也就只有一个。使用ServletContextListener,就可以监听ServletContext的创建,把创建工厂的代码放在里面。

Spring已经封装了一个ContextLoaderListener,作用是为我们创建工厂并存放在ServletContext中。

Java | Spring框架学习笔记--(4)MVC框架整合_第1张图片
Java | Spring框架学习笔记--(4)MVC框架整合_第2张图片

ContextLoaderListener的使用方式:

由于他是一个监听器,所以在web.xml里配置即可。同时还要指定配置文件具体存放的位置!

<listener>
	<listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>
listener>

<context-param>
	<param-name>contextConfigLocationparam-name>
    <param-value>classpath:applicationContext.xmlparam-value>
context-param>

在Controller中获取ApplicationContext:

@RequestMapping("/hello")
public String hello(HttpServletRequest request){
     
    ServletContext context = request.getServletContext();
    ApplicationContext applicationContext = (ApplicationContext) context.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);
    System.out.println(applicationContext);
    return "success";
}

你可能感兴趣的:(Java后端开发,spring,mvc,java)