使用视图名后缀来判断选择相应的视图解析器
自定义一个视图解析器,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的本地化解析器 本地化:Spring MVC的本地化解析器 LocaleChangeInterceptor:通过URL参数指定 静态资源处理 静态资源处理:使REST风格的URL成为...
我们可以使用 InternalResourceViewResolver 或其他视图解析器来配置 ViewResolver。 七、总结 Spring MVC 是一个功能强大且灵活的 Web 框架,它提供了许多可配置的组件,以便我们根据需要进行自定义配置。掌握 ...
通过这些示例,你可以逐步学习到Spring3 MVC的配置、控制器的编写、视图解析、数据绑定、异常处理、国际化和RESTful服务等多个方面。每个示例都有详细的代码和说明文档,对于初学者来说是宝贵的参考资料。记得实践是...
5. **视图解析器**:在Spring MVC中,视图解析器(ViewResolver)用于将逻辑视图名转换为实际的视图资源。例如,我们可以配置一个JSP视图解析器,将逻辑视图名“home”解析为“/WEB-INF/jsp/home.jsp”。 6. **拦截...
5. **ViewResolver**:视图解析器根据ModelAndView中的视图名查找具体的视图实现,如JSP、FreeMarker等。 6. **View**:视图负责呈现模型数据,可以是JSP、Thymeleaf或其他模板引擎。 7. **HandlerMapping**:...
基于协商的视图解析器 目录 本地化:基础原理 本地化:Spring MVC的本地化解析器 本地化:Spring MVC的本地化解析器 LocaleChangeInterceptor:通过URL参数指定 静态资源处理 静态资源处理:使REST风格的URL成为实现 ...
《Spring 2.5 MVC 完整项目:深入解析与实践》 在IT行业中,Spring框架作为Java领域的重要支柱,其MVC(Model-View-Controller)模块在Web应用程序开发中占据着举足轻重的地位。本文将针对“Spring 2.5 MVC 完整...
在Spring3MVC中,配置DispatcherServlet、Controller接口的实现以及视图解析器是关键步骤。 **MyBatis** MyBatis是一个轻量级的持久层框架,它将SQL语句与Java代码分离,提供了动态SQL的能力。在项目中,MyBatis...
视图解析器如`InternalResourceViewResolver`会根据返回的逻辑视图名查找实际的视图资源,如JSP页面。 实例部分通常包括创建一个简单的“Hello, World!”应用,展示如何定义控制器、处理请求和显示响应。此外,还...
3. **配置Spring MVC**:在Spring的配置文件中,添加视图解析器(如`InternalResourceViewResolver`)来处理JasperReport生成的报表。同时,可能需要配置一个Bean来加载报表模板文件。 4. **编写Controller**:创建...
- 在Spring MVC中,我们不再需要传统的XML配置文件来定义控制器、视图解析器等组件。通过使用注解,可以在类或方法级别直接声明其功能。例如,`@Controller`注解标记一个类作为处理HTTP请求的控制器,而`@...
8. **视图解析器(ViewResolver)**:根据给定的视图名查找实际的视图资源。例如,InternalResourceViewResolver可以将视图名解析为JSP页面。 9. **拦截器(Interceptor)**:Spring MVC允许自定义拦截器,实现请求...
8. **配置文件**:理解Spring MVC的配置文件,如`servlet-context.xml`,它定义了Spring MVC的组件,如视图解析器、HandlerMapping和HandlerAdapter等。 9. **Maven或者Gradle构建**:项目可能使用Maven或Gradle...
5. **ViewResolver**:视图解析器,负责根据Controller返回的视图名称查找实际的视图资源,如JSP、Freemarker等。 6. **ModelAndView**:用于同时携带模型数据和视图名称的对象,Controller可以使用它来传递数据到...
在Spring 3 MVC的配置方面,我们需要创建一个servlet配置文件(如`spring-servlet.xml`),其中定义了Bean、视图解析器和其他相关组件。例如,我们可以定义一个Controller Bean,如下所示: ```xml , Spring MVC!...
4. **视图解析**:通过配置,Spring.NET MVC 可以选择不同的视图技术(如 Razor 或 Web Forms),并根据逻辑视图名返回实际视图。 5. **异常处理**:提供了全局的异常处理机制,可以统一处理未捕获的异常,提高应用...
视图解析器(ViewResolver)负责将逻辑视图名转换为实际视图。例如,使用InternalResourceViewResolver可以将逻辑视图名"home"解析为"/WEB-INF/jsp/home.jsp"。 6. **数据绑定** Spring MVC支持自动的数据绑定,...
默认配置下,DispatcherServlet会自动配置一些关键组件,如处理器映射器和视图解析器。 3. **控制器的实现**: 使用`@Controller`注解可以标记一个类作为控制器,而`@RequestMapping`用于将HTTP请求映射到处理方法...
在入门示例中,我们通常会创建一个 `servlet-context.xml` 配置文件,定义 DispatcherServlet 的配置,包括视图解析器、拦截器、静态资源处理等。同时,我们还需要在 Spring 的主配置文件中声明 MVC 相关的组件。 ...