Spring MVC - 多解析器映射
Spring MVC 框架提供了View Resolver的功能,通过它您可以将视图映射到其各自的视图并在浏览器中呈现模型。 View Resolver 消除了对Velocity 和 JSP等视图技术的使用。在类似弹簧的InternalResourceViewResolver 、 XmlViewResolver 、 ResourceBundleViewResolver等中有许多可用的视图解析器,它们都有不同的方式来处理视图。 Spring MVC 还支持多个视图解析器在一个失败时依赖其他视图解析器,在多个视图解析器的情况下,我们需要提及我们希望它们工作的视图解析器的顺序或优先级。
实现:在这里,我们将创建一个简单的 Spring MVC 项目并为单个视图页面实现多个视图解析器。
Note: Spring MVC is required as a pre-requisite
创建项目的步骤
第 1 步:使用 create a new project 创建 maven 项目,现在在我们创建 Web 应用程序时将 maven-archetype-webapp 添加到您的项目中。
第 2 步:添加组 ID、工件 ID 并单击完成。
The project would get created with a pom.xml configuration file, the structure of your project would look something like this:
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是支持InternalResourceView的UrlBasedViewResolver的子类。 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 。