`

Spring MVC学习(四)-------Controller接口控制器详解4

 
阅读更多
4.12、ParameterizableViewController
参数化视图控制器,不进行功能处理(即静态视图),根据参数的逻辑视图名直接选择需要展示的视图。
Java代码
<bean name="/parameterizableView" 
class="org.springframework.web.servlet.mvc.ParameterizableViewController"> 
<property name="viewName" value="success"/> 
</bean> 

该控制器接收到请求后直接选择参数化的视图,这样的好处是在配置文件中配置,从而避免程序的硬编码,比如像帮助页面等不需要进行功能处理,因此直接使用该控制器映射到视图。
4.13、AbstractUrlViewController
提供根据请求URL路径直接转化为逻辑视图名的支持基类,即不需要功能处理,直接根据URL计算出逻辑视图名,并选择具体视图进行展示:
urlDecode:是否进行url解码,不指定则默认使用服务器编码进行解码(如Tomcat默认ISO-8859-1);
urlPathHelper:用于解析请求路径的工具类,默认为org.springframework.web.util.UrlPathHelper。

UrlFilenameViewController是它的一个实现者,因此我们应该使用UrlFilenameViewController。

4.14、UrlFilenameViewController
将请求的URL路径转换为逻辑视图名并返回的转换控制器,即不需要功能处理,直接根据URL计算出逻辑视图名,并选择具体视图进行展示:

根据请求URL路径计算逻辑视图名;

Java代码
<bean name="/index1/*" 
class="org.springframework.web.servlet.mvc.UrlFilenameViewController"/> 
<bean name="/index2/**" 
class="org.springframework.web.servlet.mvc.UrlFilenameViewController"/> 
<bean name="/*.html" 
class="org.springframework.web.servlet.mvc.UrlFilenameViewController"/> 
<bean name="/index3/*.html" 
class="org.springframework.web.servlet.mvc.UrlFilenameViewController"/> 

/index1/*:可以匹配/index1/demo,但不匹配/index1/demo/demo,如/index1/demo逻辑视图名为demo;
/index2/**:可以匹配/index2路径下的所有子路径,如匹配/index2/demo,或/index2/demo/demo,“/index2/demo”的逻辑视图名为demo,而“/index2/demo/demo”逻辑视图名为demo/demo;
/*.html:可以匹配如/abc.html,逻辑视图名为abc,后缀会被删除(不仅仅可以是html);
/index3/*.html:可以匹配/index3/abc.html,逻辑视图名也是abc;

上述模式为Spring Web MVC使用的Ant-style 模式进行匹配的:

Java代码
? 匹配一个字符,如/index? 可以匹配 /index1 , 但不能匹配 /index 或 /index12
* 匹配零个或多个字符,如/index1/*,可以匹配/index1/demo,但不匹配/index1/demo/demo
** 匹配零个或多个路径,如/index2/**:可以匹配/index2路径下的所有子路径,如匹配/index2/demo,或/index2/demo/demo

如果我有如下模式,那Spring该选择哪一个执行呢?当我的请求为“/long/long”时如下所示:
/long/long
/long/**/abc
/long/**
/**
Spring的AbstractUrlHandlerMapping使用:最长匹配优先;
如请求为“/long/long” 将匹配第一个“/long/long”,但请求“/long/acd” 则将匹配 “/long/**”,如请求“/long/aa/abc”则匹配“/long/**/abc”,如请求“/abc”则将匹配“/**”
UrlFilenameViewController还提供了如下属性:
prefix:生成逻辑视图名的前缀;
suffix:生成逻辑视图名的后缀;
Java代码
protected String postProcessViewName(String viewName) { 
return getPrefix() + viewName + getSuffix(); 
} 
Java代码
<bean name="/*.htm" class="org.springframework.web.servlet.mvc.UrlFilenameViewController"> 
<property name="prefix" value="test"/> 
<property name="suffix" value="test"/> 
</bean> 
当prefix=“test”,suffix=“test”,如上所示的/*.htm:可以匹配如/abc.htm,但逻辑视图名将变为testabctest。
分享到:
评论

相关推荐

    Spring MVC学习(四)-------Controller接口控制器详解1

    Spring MVC学习(四)-------Controller接口控制器详解1

    Spring MVC学习(四)-------Controller接口控制器详解3

    Spring MVC学习(四)-------Controller接口控制器详解3

    Spring MVC框架 多动作控制器详解 spring mvc 2.5

    本代码使用了Spring MVC框架(spring2.5架包) 演示了(Controller接口的试用方法)和 MultiActionController多动作控制器 数据库连接试用Spring JDBC 并且着重介绍了MultiActionController多动作控制器的两种方法名...

    详解Spring mvc ant path的使用方法

    详解Spring mvc ant path的使用方法 概要: 任何一个WEB都需要解决URL与请求处理器之间的映射,spring MVC也是一样,但Spring MVC就像Spring所作的一切一样(灵活,可以配置各种东西,但是也造成了很多复杂性),肯定...

    SpringMVC教程

    第四章 Controller接口控制器详解 (4).pdf 第四章 Controller接口控制器详解 (5).pdf 第四章 Controller接口控制器详解 (6).pdf 第四章 Controller接口控制器详解(7 完).pdf 第五章 处理器拦截器详解.pdf 第...

    21道Java Spring MVC综合面试题详解含答案(值得珍藏)

    Spring MVC是Spring框架中的一部分,全称是Spring Web MVC,主要用于实现MVC设计模式的Web框架。它分离了控制器、模型对象、过滤器以及处理程序对象的角色,使得它们更容易进行定制。 Spring MVC的优点包括: 基于...

    跟我学SpringMVC 教程

    第四章 Controller接口控制器详解(4) 第四章 Controller接口控制器详解(5) 第四章 Controller接口控制器详解(6) 第五章 处理器拦截器详解 第六章 注解式控制器详解 注解式控制器运行流程及处理器定义 第...

    跟我学SpringMVC

    第四章 Controller接口控制器详解(4) 第四章 Controller接口控制器详解(5) 第四章 Controller接口控制器详解(6) 第五章 处理器拦截器详解 第六章 注解式控制器详解 注解式控制器运行流程及处理器定义 第六章 ...

    Java之Spring Boot详解

    (2)在 web.xml 文件中配置 Spring mvc 的前端控制器 (3)创建一个 spring mvc 的配置文件 (4)在 spring mvc 的配置文件中进行相关配置   1) 配置注解扫描路径   2)配置处理器映射器   3)配置处理器...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    10.5 Spring的控制器(Controller) 10.5.1 Controller接口 10.5.2 命令控制器(BaseCommandController) 10.5.3 表单控制器(SimpleFormController) 10.5.4 多动作控制器(MultiActionController) 10.6 Spring的...

    详解利用SpringMVC拦截器控制Controller返回值

    主要介绍了详解利用SpringMVC拦截器控制Controller返回值,通过定义一个StringResult注解,在访问方法的时候返回StringResult中的内容,有兴趣的可以了解一下。

    Spring-Reference_zh_CN(Spring中文参考手册)

    标准MVC控制器代码 14.5.1.3. 把模型数据转化为XML 14.5.1.4. 定义视图属性 14.5.1.5. 文档转换 14.5.2. 小结 14.6. 文档视图(PDF/Excel) 14.6.1. 简介 14.6.2. 配置和安装 14.6.2.1. 文档视图定义 14.6.2.2. ...

    详解Spring MVC如何测试Controller(使用springmvc mock测试)

    主要介绍了详解Spring MVC如何测试Controller(使用springmvc mock测试),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    Java Spring MVC 上传下载文件配置及controller方法详解

    主要介绍了Java Spring MVC 上传下载文件配置及controller方法详解,本文介绍的非常详细,具有参考借鉴价值,需要的朋友可以参考下

    java Spring MVC4环境搭建实例详解(步骤)

    spring WEB MVC框架提供了一个MVC(model-view-controller)模型-视图-控制器的结构和组件,利用它可以开发更灵活、松耦合的web应用。MVC模式使得整个服务应用的各部分(控制逻辑、业务逻辑、UI界面展示)分离开来,使...

    SpringMVC Controller 返回值的可选类型详解

    本篇文章主要介绍了SpringMVC Controller 返回值的可选类型详解 ,spring mvc 支持如下的返回方式:ModelAndView, Model, ModelMap, Map,View, String, void,有兴趣的可以了解一下

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (3)

    10.5 Spring的控制器(Controller) 10.5.1 Controller接口 10.5.2 命令控制器(BaseCommandController) 10.5.3 表单控制器(SimpleFormController) 10.5.4 多动作控制器(MultiActionController) 10.6 Spring的...

    Spring中MVC模块代码详解

    主要介绍了Spring中MVC模块代码详解,涉及Controller的简单介绍,具有一定借鉴价值,需要的朋友可以参考下。

    看透springMvc源代码分析与实践

    第9章 创建Spring MVC之器90 9.1 整体结构介绍90 9.2 HttpServletBean93 9.3 FrameworkServlet95 9.4 DispatcherServlet100 9.5 小结107 第10章 Spring MVC之用108 10.1 HttpServletBean108 10.2 ...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (2)

    10.5 Spring的控制器(Controller) 10.5.1 Controller接口 10.5.2 命令控制器(BaseCommandController) 10.5.3 表单控制器(SimpleFormController) 10.5.4 多动作控制器(MultiActionController) 10.6 Spring的...

Global site tag (gtag.js) - Google Analytics