学习的博客:http://elf8848.iteye.com/blog/875830/

我项目中所用的版本:4.2.0。博客的时间比较早,11年的,学习的是Spring3 MVC。不知道版本上有没有变化比较大的功能。

spring mvc教程(七)多视图控制器

1.多视图控制器的配置

当有jsp,flt等多种页面生成展示方式时,spring默认使用"视图解析器链",直到找到对应的"视图解析器"。注意!jsp视图解析器的处理(不是配置是类里面)一定要写在最后,因为一旦调用jsp,就像浏览器发出数据了,视图解析器链就中断了。

示例:(说好的jsp的要写在最后呢???看到后面才发现自己误会了,配置文件中顺序无关,是ViewResolver中。

 <!-- 多视图处理器 -->
<bean class="com.xxx.core.web.MixedViewResolver">
<property name="resolvers">
<map>
<entry key="jsp">
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
</bean>
</entry>
<entry key="ftl">
<bean class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="cache" value="true"/>
<property name="contentType" value="text/html;charset=UTF-8"></property>
<!-- 宏命令的支持 -->
<property name="exposeSpringMacroHelpers" value="true"/>
<property name="viewClass" value="org.springframework.web.servlet.view.freemarker.FreeMarkerView"/>
<property name="requestContextAttribute" value="rc"></property>
</bean>
</entry>
</map>
</property>
</bean>

2.多视图控制器的示例代码

     public class MixedViewResolver implements ViewResolver{
private Map<String,ViewResolver> resolvers; public void setResolvers(Map<String, ViewResolver> resolvers) {
this.resolvers = resolvers;
} public View resolveViewName(String viewName,Locale locale) throws Exception{
int n=viewName.lastIndexOf(".");
if(n!=-1){
//取出扩展名
String suffix=viewName.substring(n+1);
//取出对应的ViewResolver
ViewResolver resolver=resolvers.get(suffix);
if(resolver==null){
throw new RuntimeException("No ViewResolver for "+suffix);
}
return resolver.resolveViewName(viewName, locale);
}else{ //jsp的处理放到最后
ViewResolver resolver=resolvers.get("jsp");
return resolver.resolveViewName(viewName, locale);
}
}
}

2017.3.31 spring mvc教程(七)多视图控制器的更多相关文章

  1. 2017.3.31 spring mvc教程(八) <mvc:annotation-driven />所做的工作

    学习的博客:http://elf8848.iteye.com/blog/875830/ 我项目中所用的版本:4.2.0.博客的时间比较早,11年的,学习的是Spring3 MVC.不知道版本上有没有变 ...

  2. 2017.3.31 spring mvc教程(六)转发、重定向、ajax请求

    学习的博客:http://elf8848.iteye.com/blog/875830/ 我项目中所用的版本:4.2.0.博客的时间比较早,11年的,学习的是Spring3 MVC.不知道版本上有没有变 ...

  3. 2017.3.31 spring mvc教程(五)Action的单元测试

    学习的博客:http://elf8848.iteye.com/blog/875830/ 我项目中所用的版本:4.2.0.博客的时间比较早,11年的,学习的是Spring3 MVC.不知道版本上有没有变 ...

  4. 2017.3.31 spring mvc教程(四)全局的异常处理

    学习的博客:http://elf8848.iteye.com/blog/875830/ 我项目中所用的版本:4.2.0.博客的时间比较早,11年的,学习的是Spring3 MVC.不知道版本上有没有变 ...

  5. 2017.3.31 spring mvc教程(三)拦截器

    学习的博客:http://elf8848.iteye.com/blog/875830/ 我项目中所用的版本:4.2.0.博客的时间比较早,11年的,学习的是Spring3 MVC.不知道版本上有没有变 ...

  6. 2017.3.31 spring mvc教程(二)核心流程及配置详解

    学习的博客:http://elf8848.iteye.com/blog/875830/ 我项目中所用的版本:4.2.0.博客的时间比较早,11年的,学习的是Spring3 MVC.不知道版本上有没有变 ...

  7. 2017.3.31 spring mvc教程(一)核心类与接口

    学习的博客:http://elf8848.iteye.com/blog/875830/ 我项目中所用的版本:4.2.0.博客的时间比较早,11年的,学习的是Spring3 MVC.不知道版本上有没有变 ...

  8. spring mvc: 可参数化的视图控制器(在配置中指定jsp文件)MultiActionController/SimpleUrlHandlerMapping/ParameterizableViewController

    spring mvc: 可参数化的视图控制器(在配置中指定jsp文件)MultiActionController/SimpleUrlHandlerMapping/ParameterizableView ...

  9. Spring MVC可参数化的视图控制器

    以下示例显示如何使用Spring Web MVC框架来实现多动作控制器的可参数化视图控制器.可参数化视图允许将请求映射到网页. 所下所示配置 - import javax.servlet.http.H ...

随机推荐

  1. 叶落归根(hometown)

    叶落归根(hometown) 题目描述 叶落归根——树叶从树根生发出来,凋落后最终还是回到树根.比喻事物总有一定的归宿.接下来是题目. 给定一个n个点的有向图G(点的编号为1~n),一开始落叶(仅作为 ...

  2. Recompile Squid with SSL Bump

    https://docs.diladele.com/administrator_guide_4_0/system_configuration/https_filtering/recompile_squ ...

  3. Codeforces 932.A Palindromic Supersequence

    A. Palindromic Supersequence time limit per test 2 seconds memory limit per test 256 megabytes input ...

  4. eclipse中git的使用

    首先在Eclipse中安装EGit插件,如下图: 1. 2.点击Add 3. 4. 5. 给Eclipse安装插件很少遇到没被屏蔽的,这是一个.安装过程并不长,稍候即可. 安装成功之后我们就可以使用了 ...

  5. angular组件--tips提示功能

    将组件封装起来在项目中开发很实用,之前遭遇过一次痛苦的经历,那阵子改的要吐血了.常用的组件封装起来,改公共的地方,往往多处受用. 例如:我在项目中引用  tips.text('加载中...',fals ...

  6. js querySelector与getElementById

    querySelector不能取到id以数字开头的元素,据说是遵循css规范.而document.getElementById是可以的.

  7. fork+exec 与system,popen区别

    1.fork + exec fork用来创建一个子进程.一个程序一调用fork函数,系统就为一个新的进程准备了前述三个段,首先,系统让新的进程与旧的进程使用同一个代码段,因为它们的程序还是相同的,对于 ...

  8. python mysql创建表

    表设计 表:student 字段名 类型 是否为空 主键 描述 StdID int 否 是 学生ID StdName varchar(100) 否 学生姓名 Gender enum('M','F') ...

  9. BootStrap容器介绍

    <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8& ...

  10. Laravel5.1忽略Csrf验证的方法

    在/App/Http/middleware/VerifyCsrfToken.php 文件的protected $except里面加入路由地址