📜  Spring MVC - 多解析器映射

📅  最后修改于: 2022-05-13 01:54:32.917000             🧑  作者: Mango

Spring MVC - 多解析器映射

Spring MVC 框架提供了View Resolver的功能,通过它您可以将视图映射到其各自的视图并在浏览器中呈现模型。 View Resolver 消除了对Velocity 和 JSP等视图技术的使用。在类似弹簧的InternalResourceViewResolverXmlViewResolverResourceBundleViewResolver中有许多可用的视图解析器,它们都有不同的方式来处理视图。 Spring MVC 还支持多个视图解析器在一个失败时依赖其他视图解析器,在多个视图解析器的情况下,我们需要提及我们希望它们工作的视图解析器的顺序或优先级。

实现:在这里,我们将创建一个简单的 Spring MVC 项目并为单个视图页面实现多个视图解析器。

创建项目的步骤

第 1 步:使用 create a new project 创建 maven 项目,现在在我们创建 Web 应用程序时将 maven-archetype-webapp 添加到您的项目中。

第 2 步:添加组 ID、工件 ID 并单击完成。

pom.xml配置文件定义了 maven 为您的项目获取和管理的依赖项。创建项目后,我们的 pom.xml 如下所示:

文件:pom.xml

XML

  4.0.0
  com.mkyong.common
  SpringMVC
  war
  1.0-SNAPSHOT
  SpringMVC Maven Webapp
  http://maven.apache.org
  
    
      junit
      junit
      3.8.1
      test
    
      
     
    
        org.springframework
        spring
        2.5.6
    
   
     
    
        org.springframework
        spring-webmvc
        2.5.6
    
      
     
    
        javax.servlet
        jstl
        1.1.2
    
      
    
        taglibs
        standard
        1.1.2
    
   
  
  
    SpringMVC
  


XML

  
  Spring MVC
    
  
    
      org.springframework.web.context.ContextLoaderListener
    
  
    
  
      gfg
    org.springframework.web.servlet.DispatcherServlet
    1
  
    
  
     gfg
    *.htm
  
  
  
    contextConfigLocation
    /WEB-INF/gfg-servlet.xml
  
    


XML

  
    
    
  
  
          
              /WEB-INF/pages/
           
          
             .jsp
          
          
    
  
    
       
           /WEB-INF/spring-views.xml
       
       
    
    
    
        
            
                welomecontroller
            
        
    
      
    
        
    
  
      


XML

  
    
       
    
      


Java
// Java Program to Illustrate WelcomeController Class
  
package com.gfg.controller;
  
// Importing required classes
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;
  
// Class
// Extending AbstractController interface
public class WelcomeController extends AbstractController {
  
    @Override
    protected ModelAndView
    handleRequestInternal(HttpServletRequest request,
                          HttpServletResponse response)
        throws Exception
    {
  
        return new ModelAndView("redirect:welcomepage.htm");
    }
}


web.xml 文件定义了与不同 URL 和 servlet 的映射,以处理对这些 URL 的请求。在这个配置文件中,我们使用了应用程序启动的监听器,配置了 servlet,并添加了一个 servlet-mapping 来映射 URL。

文件:web.xml

XML


  
  Spring MVC
    
  
    
      org.springframework.web.context.ContextLoaderListener
    
  
    
  
      gfg
    org.springframework.web.servlet.DispatcherServlet
    1
  
    
  
     gfg
    *.htm
  
  
  
    contextConfigLocation
    /WEB-INF/gfg-servlet.xml
  
    

位于“ /src/main/webapp/WEB-INF/gfg.servlet.xml ”中的gfg-servlet.xml是我们为项目定义 bean 和映射的文件。这是我们定义视图解析器的文件。 InternalResolverViewResolver是支持InternalResourceViewUrlBasedViewResolver的子类 XmlViewResolver支持用 xml 编写的文件。

文件:gfg-servlet.xml

XML


  
    
    
  
  
          
              /WEB-INF/pages/
           
          
             .jsp
          
          
    
  
    
       
           /WEB-INF/spring-views.xml
       
       
    
    
    
        
            
                welomecontroller
            
        
    
      
    
        
    
  
      

spring-views.xml页面是我们的 XmlViewResolver 处理的基于 xml 的视图页面,该页面定义了欢迎页面的 bean。

文件:spring-views.xml

XML


  
    
       
    
      

com.gfg.controller中的WelcomeController类处理传入的 URL 请求并将其映射到视图页面,这里我们使用ModelAndView并重定向到欢迎页面。

文件:欢迎控制器。Java

Java

// Java Program to Illustrate WelcomeController Class
  
package com.gfg.controller;
  
// Importing required classes
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;
  
// Class
// Extending AbstractController interface
public class WelcomeController extends AbstractController {
  
    @Override
    protected ModelAndView
    handleRequestInternal(HttpServletRequest request,
                          HttpServletResponse response)
        throws Exception
    {
  
        return new ModelAndView("redirect:welcomepage.htm");
    }
}

第 3 步:完成应用程序后,您的项目结构将如下所示:

现在是时候在 Tomcat 服务器中运行您的项目了,运行 Tomcat服务器后,在您喜欢的浏览器中输入 URL http://localhost:8080/SpringMvcMultipleViewResolver/welcomepage.htm