Spring MVC 学习笔记 spring mvc Schema-based configuration
Spring mvc 目前支持5个tag,分别是 mvc:annotation-driven,mvc:interceptors,mvc:view-controller, mvc:resources和mvc:default-servlet-handler
mvc:annotation-driven 注册 DefaultAnnotationHandlerMapping 和AnnotationMethodHandlerAdapter两个bean,及一系列缺省的messageconverter(需要classpath中有相应的lib包的支持。) 相当于以下配置的效果【mvc:annotation-driven的效果就相当于以下的配置】。

<bean
class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
<property name="order" value="0" />
</bean> <bean
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="webBindingInitializer">
<bean
class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer">
<property name="validator" ref="validator" />
</bean>
</property>
<property name="messageConverters">
<list>
<bean
class="org.springframework.http.converter.ByteArrayHttpMessageConverter" />
<bean
class="org.springframework.http.converter.StringHttpMessageConverter" />
<bean class="org.springframework.http.converter.FormHttpMessageConverter" />
<bean
class="org.springframework.http.converter.xml.SourceHttpMessageConverter" />
<bean
class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />
</list>
</property>
</bean> <bean id="validator"
class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" />
<bean id="conversion-service"
class="org.springframework.format.support.FormattingConversionServiceFactoryBean" />

注意在3.0.5版本中不支持在 mvc:annotation-driven中再注册新的messageconveter,在3.1版本中可以支持,写法如下

<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter" />
<bean
class="org.springframework.http.converter.ResourceHttpMessageConverter" />
<bean
class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />
</mvc:message-converters>
</mvc:annotation-driven>

mvc:interceptors 注册HandlerInterceptors 或 WebRequestInterceptors 拦截器来拦截request请求。 例如
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/*" />
<bean class="net.zhepu.web.interceptor.Testinterceptor" />
</mvc:interceptor>
</mvc:interceptors>
拦截器实现代码如下

public void afterCompletion(HttpServletRequest request,
HttpServletResponse response, Object handler, Exception ex)
throws Exception {
log.debug("afterCompletion");
} @Override
public void postHandle(HttpServletRequest request,
HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
log.debug("postHandle");
} @Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
log.debug("preHandle"); log.debug(handler.getClass().getName());
return super.preHandle(request, response, handler);
}

mvc:default-servlet-handler 将spring mvc的DispatcherServlet替换当前web server的缺省的Servlet。这样做的好处是定义spring mvc处理请求时,不再需要定义*.do,*.action,/action/*之类的url-pattern,而是可以直接定义为<url-pattern>/</url-pattern> (注意不是<url-pattern>/*</url-pattern>,/*将匹配所有请求而导致所有jsp和静态内容都无法正常显示,而/只匹配缺省的servlet)。 常见web 容器的default servlet name spring mvc中都能自动识别,但对于不常见的web 容器或default servlet name 被改写过的,则需增加参数 default-servlet-name来指定对应的servlet name. 需与<mvc:annotation-driven/>一起使用
mvc:view-controller 将指定路径的请求直接转到对应的view上,而不需要特定的controller来处理请求。 例如
<mvc:view-controller path="/hello/*" view-name="helloWorld"/>
mvc:resources 将指定URL 的匹配模式来访问静态文件,如
<mvc:resources mapping="/js/**" location="/WEB-INF/js/" cache-period="3600"/>
表示将/WEB-INF/js/目录映射到/js/目录,cache超时时间为3600秒。 则jsp中引用 js/helloWorld.js实际上指向的是 /WEB-INF/js/helloWorld.js.
原文:http://www.cnblogs.com/crazy-fox/archive/2012/02/18/2357669.html
Spring MVC 学习笔记 spring mvc Schema-based configuration的更多相关文章
- Spring Cloud学习笔记--Spring Boot初次搭建
1. Spring Boot简介 初次接触Spring的时候,我感觉这是一个很难接触的框架,因为其庞杂的配置文件,我最不喜欢的就是xml文件,这种文件的可读性很不好.所以很久以来我的Spring学习都 ...
- Spring Boot学习笔记——Spring Boot与MyBatis的集成(项目示例)
1.准备数据库环境 # 创建数据库 CREATE DATABASE IF NOT EXISTS zifeiydb DEFAULT CHARSET utf8 COLLATE utf8_general_c ...
- 1.2(Spring MVC学习笔记) Spring MVC核心类及注解
一.DispatcherServlet DispatcherServlet在程序中充当着前端控制器的作用,使用时只需在web.xml下配置即可. 配置格式如下: <?xml version=&q ...
- [Spring入门学习笔记][Spring Boot]
什么是Spring Boot Spring Boot正是在这样的一个背景下被抽象出来的开发框架,它本身并不提供Spring框架的核心特性以及扩展功能,只是用于快速.敏捷地开发新一代基于Spring框架 ...
- [spring入门学习笔记][spring的IoC原理]
什么叫IoC 控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度.其中最常见的方式叫做依赖注入(Dependency ...
- Spring Boot学习笔记---Spring Boot 基础及使用idea搭建项目
最近一段时间一直在学习Spring Boot,刚进的一家公司也正好有用到这个技术.虽然一直在学习,但是还没有好好的总结,今天周末先简单总结一下基础知识,等有时间再慢慢学习总结吧. Spring Boo ...
- [Spring入门学习笔记][Spring的AOP原理]
AOP是什么? 面向切面编程 软件工程有一个基本原则叫做“关注点分离”(Concern Separation),通俗的理解就是不同的问题交给不同的部分去解决,每部分专注于解决自己的问题.这年头互联网也 ...
- Java框架spring Boot学习笔记(七):@Configuration,@bean注解
@Configuration作用在类上,相当于一个xml文件 @bean作用于方法上,相当于xml配置中的<bean>标签 一个例子: 新建一个Springboot工程 新建一个User类 ...
- MVC学习笔记:MVC实现用户登录验证ActionFilterAttribute用法并实现统一授权
在项目下新建一个文件夹来专门放过滤器类,首先创建一个类LoginFilter,这个类继承ActionFilterAttribute.用来检查用户是否登录和用户权限.: using System; us ...
随机推荐
- sqlalchemy多表查询
from datetime import datetime from sqlalchemy import Column,Integer,String,Boolean,DateTime,ForeignK ...
- C和C++的关键字区别
c中数据类型是struct ,c++中可以是struct,也可以是class关于c++中<< 和>>分别是箭头往那边就是流向哪里的 比如cout<<这个就是流向屏幕 ...
- js常用函数总结
字符串函数 indexOf 返回字符串中一个子串第一处出现的索引(从左到右搜索).如果没有匹配项,返回 -1 . var index1 = a.indexOf("l"); //in ...
- linux的文件布局
/bin---权限为 rwxr-xr-x 所有者为root/root 用户bin最先进入的工作目录就是这里.这里放置的是执行目录,但是特殊在这里的命令可以被一般用户使用(root更能使用).例如 ca ...
- 用RegisterHotKey注册系统热键
函数功能:该函数定义一个系统范围的热键. 函数原型:BOOL RegisterHotKey(HWND hWnd,int id,UINT fsModifiers,UINT vk): 参数: hWnd:接 ...
- C# Quartz 整理
因项目需要,在C#中使用了定时程序.自然就使用了Quartz了 但是使用的时候,经过一段时间后,发现了两个重大问题,结果导致的是一样的,就是都导致了定时不会继续执行了. 第一个问题是,定时程序发布在I ...
- Cookie和Session在Node.JS中的实践(三)
Cookie和Session在Node.JS中的实践(三) 前面作者写的COOKIE篇.SESSION篇,算是已经比较详细的说明了两者间的区别.机制.联系了.阅读时间可能稍长,因为作者本身作图也做了不 ...
- 一次PHP面试经历
9月9号,去了一家朋友的公司参加面试,然后就被直接吊打了,问的许多问题居然是我压根没有关心过的,看起来只在高层搞框架不行啊,还是得自己造个轮子试试,下面回顾一下问到的问题和我自己找到的一些答案. fi ...
- Using ASIHTTPRequest in an iOS project
1) Add the files Copy the files you need to your project folder, and add them to your Xcode project. ...
- 【Mysql】字段排序中文排序
在mysql中 如果字段的值是中文的话,排序结果往往不符合人意. 所以如果要中文排序正常的话,可以使用如下函数 SELECT huayangare0_.id AS id1_0_, huayangare ...