使用视图名后缀来判断选择相应的视图解析器
自定义一个视图解析器,MultiViewResover.java
01 |
package com.it.app.web;
|
02 |
03 |
import java.util.Locale;
|
04 |
import java.util.Map;
|
05 |
06 |
import org.springframework.web.servlet.View;
|
07 |
import org.springframework.web.servlet.ViewResolver;
|
08 |
09 |
public class MultiViewResover implements ViewResolver {
|
10 |
|
11 |
private Map<String, ViewResolver> resolvers;
|
12 |
|
13 |
@Override
|
14 |
public View resolveViewName(String viewName, Locale locale)
|
15 |
throws Exception {
|
16 |
int n = viewName.lastIndexOf( "_" ); // 获取
|
17 |
// viewName(modelAndView中的名字)看其有没有下划线
|
18 |
if (n == (- 1 ))
|
19 |
return null ; // 没有则直接返回空
|
20 |
// 有的话截取下划线后面的字符串 这里一般是jsp,ftl,vm与配置文件中的<entry key="ftl">的key匹配
|
21 |
String suffix = viewName.substring(n + 1 );
|
22 |
// 根据下划线后面的字符串去获取托管的视图解析类对象
|
23 |
ViewResolver resolver = resolvers.get(suffix);
|
24 |
|
25 |
// 取下划线前面的部分 那时真正的资源名.比如我们要使用hello.jsp 那viewName就应该是hello_jsp
|
26 |
viewName = viewName.substring( 0 , n);
|
27 |
if (resolver != null )
|
28 |
return resolver.resolveViewName(viewName, locale);
|
29 |
return null ;
|
30 |
}
|
31 |
|
32 |
public Map<String, ViewResolver> getResolvers() {
|
33 |
return resolvers;
|
34 |
}
|
35 |
|
36 |
public void setResolvers(Map<String, ViewResolver> resolvers) {
|
37 |
this .resolvers = resolvers;
|
38 |
}
|
39 |
} |
配置spring的mvc文件
01 |
<!-- 自定义多视图解析器 --> |
02 |
< bean id = "viewResolver" class = "com.jw.app.web.MultiViewResover" >
|
03 |
< property name = "resolvers" >
|
04 |
< map >
|
05 |
< entry key = "jsp" >
|
06 |
< bean
|
07 |
class = "org.springframework.web.servlet.view.InternalResourceViewResolver" >
|
08 |
< property name = "prefix" value = "/WEB-INF/views/jsp/" />
|
09 |
< property name = "suffix" value = ".jsp" />
|
10 |
</ bean >
|
11 |
</ entry >
|
12 |
<!-- 此处其他视图解析器 -->
|
13 |
</ map >
|
14 |
</ property >
|
15 |
</ bean >
|
注意,如果已经配置了一个默认的视图解析器org.springframework.web.servlet.view.InternalResourceViewResolver,那么该自定义视图解析器必须放在默认视图解析器之前。
修改首页控制器返回的视图名称,加上"_jsp"后缀
1 |
@RequestMapping (value= "/indexjsp" )
|
2 |
public String index_jsp(){
|
3 |
return "index_jsp" ;
|
4 |
}
|
相关推荐
除了内置的视图解析器,Spring MVC还支持自定义视图解析器,以满足特定的需求。开发者可以通过实现ViewResolver接口来创建自己的视图解析器,从而实现对逻辑视图名到具体视图的映射规则。 此外,Spring MVC还提供了...
可能包括配置文件(如spring-servlet.xml)、自定义视图解析器的Java类以及相关的控制器类。 总的来说,自定义多视图是Spring MVC中增强灵活性和可扩展性的重要手段,它允许我们根据需求动态地选择和构造视图,从而...
在Spring MVC框架中,视图解析器扮演着至关重要的角色,它负责将控制器处理方法返回的逻辑视图名称转换为实际的物理视图资源。`InternalResourceViewResolver`是Spring MVC提供的一种内置的视图解析器,主要用于处理...
4. ViewResolver:视图解析器,根据逻辑视图名返回实际视图对象。 5. Model-View-Controller:模型-视图-控制器,其中Controller负责处理请求,Model存储数据,View展示结果。 三、MVC流程 1. 用户发送HTTP请求至...
在视图解析方面,Spring Web MVC提供了视图解析器链的概念,使得开发人员可以按需使用不同的解析器组合,以适应不同的视图技术。在支持Ajax方面,Spring Web MVC为开发者提供了多种机制,如拦截器接口、@RequestBody...
视图解析器(ViewResolver)在其中起到了关键作用,它根据逻辑视图名来找到实际的视图资源。 在配置方面,Spring MVC使用XML或Java配置来定义组件,包括Controller、Service、DAO等。随着Spring的发展,现在更倾向...
基于协商的视图解析器 目录 本地化:基础原理 本地化:Spring MVC的本地化解析器 本地化:Spring MVC的本地化解析器 LocaleChangeInterceptor:通过URL参数指定 静态资源处理 静态资源处理:使REST风格的URL成为...
视图解析器(ViewResolver)会根据指定的视图名和前缀/后缀来生成实际视图的全路径。 9. **数据绑定**:Spring MVC 自动支持请求参数到 Java 对象的绑定,以及对象属性到视图的显示。@RequestParam、@PathVariable...
1. **配置**:在Spring MVC项目中,通常需要创建一个`DispatcherServlet`配置文件,例如`servlet-context.xml`,在这里定义了Spring MVC的组件,如视图解析器、处理器映射器、拦截器等。这些配置将告诉Spring如何...
在Spring MVC框架中,视图和视图解析器是核心组件,它们负责处理控制器返回的数据并将其呈现给用户。本文将深入探讨视图与视图解析器的工作原理、常用实现及自定义视图的实现方法,同时也会讲解重定向操作。 1. **...
- **使用 Spring 配置**:DispatcherServlet 使用 Spring 配置来发现处理请求映射、视图解析、异常处理等所需的委托组件。 ##### 2.3 上下文层次结构 - **WebApplicationContext**:DispatcherServlet 需要一个 `...
视图解析器是Spring MVC中用于确定视图名对应的实际资源路径的组件。例如,InternalResourceViewResolver可以将视图名转换为JSP页面的URL。 依赖注入(Dependency Injection, DI)是Spring框架的核心特性之一。在...
3. **配置视图解析**:设置ViewResolver,如`InternalResourceViewResolver`,指定视图路径前缀和后缀。 4. **部署应用**:将应用打包成WAR文件,部署到Web服务器,如Tomcat。 ### 4. 示例 ```java @Controller @...
7. **视图解析器(View Resolver)**:根据视图名解析出实际的视图,如JSP、Thymeleaf等。 8. **数据绑定和验证**:Spring-MVC提供了自动的数据绑定功能,可以从请求参数自动填充模型对象。同时,通过`@Valid`和`...
5. **第5部分:Spring 3 MVC的国际化与本地化教程** - 讨论如何使用Spring MVC提供的国际化支持来构建多语言应用程序。 6. **第6部分:Spring 3 MVC主题皮肤使用示例教程** - 展示如何使用Spring MVC提供的主题支持...
我们可以使用 InternalResourceViewResolver 或其他视图解析器来配置 ViewResolver。 七、总结 Spring MVC 是一个功能强大且灵活的 Web 框架,它提供了许多可配置的组件,以便我们根据需要进行自定义配置。掌握 ...
通过这些示例,你可以逐步学习到Spring3 MVC的配置、控制器的编写、视图解析、数据绑定、异常处理、国际化和RESTful服务等多个方面。每个示例都有详细的代码和说明文档,对于初学者来说是宝贵的参考资料。记得实践是...
综上所述,自定义Spring MVC框架涉及到的主要知识点包括:MVC模式、请求分发、控制器设计、模型管理、视图解析、配置与依赖注入,以及Web应用的基本文件结构。通过实践这个项目,开发者可以深入理解Spring MVC的工作...
六、Spring MVC mvc.xml配置文件片段讲解:Spring MVC通过配置文件来定义处理器映射、视图解析器、静态资源处理等。配置文件对于整个框架的运行至关重要。 七、Spring MVC如何访问到静态的文件:描述了如何配置...