spring笔记4 spring MVC的基础知识4
//todo
5,spring MVC的本地化解析,文件上传,静态资源处理,拦截器,异常处理等
spring MVC 默认使用AcceptHeaderLocalResolver,根据报文头的Accept-Language参数来确定本地化类型;
此外还可以使用CookieLocalResolver和SessionLocalResolver,如果想从每次请求的参数中获取本次请求对应的本地化类型,采用LocalChangerIntercepter拦截器;
有空写个实现国际化的实例...
spring实现文件上传相当简单,首先引入依赖包,common-upload ,common-io包,然后定义个MultipartResolver解析器,写个表单就可实现;这里给个例子:
<!--文件上传依赖包-->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3</version>
</dependency>
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8"/>
<property name="maxUploadSize" value="2097152"/>
<property name="uploadTempDir" value="temp"/> </bean>
<form action="/upload" enctype="multipart/form-data" method="post">
<input type="file" name="file"/>
<input type="submit">
</form>
@RequestMapping(value = "/upload")
public String uploadImg(@RequestParam("file")MultipartFile file){ if(null!=file)
{
File newFile=new File("E://aaa.jpg");
try {
file.transferTo(newFile);
} catch (IOException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
} return "redirect:/account/list";
}
结果是在E盘看到了一个上传的aaa.jpg图片;
静态资源的处理:在spring mvc的配置文件当中加上如下的配置,同时用默认的资源处理器和spring mvc自带的资源处置方式;
<mvc:default-servlet-handler/>
<mvc:resources mapping="/ftp/**" location="/resource/"/>
还可以在一个类中增加版本号的形式改变mapping的名称;
装配拦截器:
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/account/*"/>
<bean class="com.lfc.sh.web.sp.framework.intercepter.LoginIntercepter"></bean>
</mvc:interceptor>
</mvc:interceptors>
package com.lfc.sh.web.sp.framework.intercepter; import org.apache.log4j.Logger;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; /**
* Company: Copyright© 2009 www.7road.com All rights reserved.
* com.lfc.sh.web.sp.framework.intercepter
* Create Date: 13-11-19 下午5:47
* Note: 登录的拦截器
*/
public class LoginIntercepter implements HandlerInterceptor { private static Logger logger = Logger.getLogger(LoginIntercepter.class); @Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { logger.warn("进入登录拦截器的preHandle方法"+" url:"+ request.getRequestURI());
return true;
} @Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
logger.warn("进入登录拦截器的postHandle方法");
} @Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
logger.warn("进入登录拦截器的afterCompletion方法");
}
}
下面是日志:
2013-11-19 18:00:16 com.lfc.sh.web.sp.framework.intercepter.LoginIntercepter.preHandle(26)---[160013]
[WARN] 进入登录拦截器的preHandle方法 url:/account/create
2013-11-19 18:00:16 com.lfc.sh.web.sp.framework.intercepter.LoginIntercepter.postHandle(32)---[160015]
[WARN] 进入登录拦截器的postHandle方法
2013-11-19 18:00:16 com.lfc.sh.web.sp.framework.intercepter.LoginIntercepter.afterCompletion(37)---[160028]
[WARN] 进入登录拦截器的afterCompletion方法
异常处理:
spring Mvc 通过HandlerExceptionResolver处理程序的异常;
接口的功能见截图:

实现类:

spring mvc 默认安装的DefaultHandlerExceptionResolver,将异常转换为相应的状态码;
对某个Contoller指定异常处理@ExceptionHandler(Exception.class) @ResponseStatus
如果需要对所有的异常进行统一处理,可以通过SimpleMappingExceptionResolver来指定;
如果要自定,实现ExceptionResolve;
6,小结
spring mvc是一架实际精密的机器,理解其内部实现原理可以更好的使用和扩展它;
spring笔记4 spring MVC的基础知识4的更多相关文章
- 《Programming Hive》读书笔记(两)Hive基础知识
<Programming Hive>读书笔记(两)Hive基础知识 :第一遍读是浏览.建立知识索引,由于有些知识不一定能用到,知道就好.感兴趣的部分能够多研究. 以后用的时候再具体看.并结 ...
- tensorflow笔记(一)之基础知识
tensorflow笔记(一)之基础知识 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7399701.html 前言 这篇no ...
- php面试笔记(5)-php基础知识-自定义函数及内部函数考点
本文是根据慕课网Jason老师的课程进行的PHP面试知识点总结和升华,如有侵权请联系我进行删除,email:guoyugygy@163.com 在面试中,考官往往喜欢基础扎实的面试者,而函数相关的考点 ...
- php面试笔记(3)-php基础知识-运算符
本文是根据慕课网Jason老师的课程进行的PHP面试知识点总结和升华,如有侵权请联系我进行删除,email:guoyugygy@163.com 在面试中,考官往往喜欢基础扎实的面试者,而运算符相关的考 ...
- spring笔记3 spring MVC的基础知识3
4,spring MVC的视图 Controller得到模型数据之后,通过视图解析器生成视图,渲染发送给用户,用户就看到了结果. 视图:view接口,来个源码查看:它由视图解析器实例化,是无状态的,所 ...
- Spring笔记(4) - Spring的编程式事务和声明式事务详解
一.背景 事务管理对于企业应用而言至关重要.它保证了用户的每一次操作都是可靠的,即便出现了异常的访问情况,也不至于破坏后台数据的完整性.就像银行的自助取款机,通常都能正常为客户服务,但是也难免遇到操作 ...
- Spring笔记1——Spring起源及其核心技术
Spring的作用 当我们使用一种技术时,需要思考为什么要使用这门技术.而我们为什么要使用Spring呢?从表面上面SSH这三大框架中,Struts是负责MVC责任的分离,并且提供为Web层提供诸如控 ...
- php面试笔记(2)-php基础知识-常量和数据类型
本文是根据慕课网Jason老师的课程进行的PHP面试知识点总结和升华,如有侵权请联系我进行删除,email:guoyugygy@163.com 面试是每一个PHP初学者到PHP程序员必不可少的一步,冷 ...
- Spring笔记(6) - Spring的BeanFactoryPostProcessor探究
一.背景 在说BeanFactoryPostProcessor之前,先来说下BeanPostProcessor,在前文Spring笔记(2) - 生命周期/属性赋值/自动装配及部分源码解析中讲解了Be ...
- Spring笔记(7) - Spring的事件和监听机制
一.背景 事件机制作为一种编程机制,在很多开发语言中都提供了支持,同时许多开源框架的设计中都使用了事件机制,比如SpringFramework. 在 Java 语言中,Java 的事件机制参与者有3种 ...
随机推荐
- 国外社交网站获取分享数量APIs
之前有一篇文章详细介绍了如何获取网页在Facebook,Twitter和LinkedIn社交平台上分享的数量,点击这里查看.这里再扩充一下! Twitter GET URL: http://cdn.a ...
- NSDate NSString相互转化
时间戳是经常用到的,今天就总结一下 //设置转化格式 NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter s ...
- css 常见时间轴的做法(————————————————时间轴——————————————————)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Infinispan 8 中新的 Redis 缓存存储实现
转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/147.html nfinispan 8 包含了一个新的在 Redis k/ ...
- iOS-国家气象局-天气预报接口等常用接口
接口地址: http://www.weather.com.cn/data/sk/101010100.html http://www.weather.com.cn/data/cityinfo/10101 ...
- Jquery 选择器 详解
在线文档地址:http://tool.oschina.net/apidocs/apidoc?api=jquery 各种在线工具地址:http://www.ostools.net/ 一.基本选择器 $( ...
- Java EE开发平台随手记5——Mybatis动态代理接口方式的原生用法
为了说明后续的Mybatis扩展,插播一篇广告,先来简要说明一下Mybatis的一种原生用法,不过先声明:下面说的只是Mybatis的其中一种用法,如需要更深入了解Mybatis,请参考官方文档,或者 ...
- 【WP 8.1开发】自定义(RAW)通知的使用
继续前面的话题,还是推送通知.上一篇文章中遗留了RAW通知的推送没有给各位演示,特特地留到现在,不为别的,只为这个RAW通知有点意思,玩起来会比较有意思.官方文档将RAW通知译为“原始通知”,这里还是 ...
- php代码习惯(一)
1: 利用sprintf来绑定变量,分离绑定的参数与语句 $query = sprintf("SELECT * FROM users WHERE user='%s' AND password ...
- RAC Concept
1. RAC的高可用性 RAC的高可用性主要包含以下几点: 1> 实现节点间的负载均衡. 2> 实现失败切换的功能. 3> 通过Service组件来控制客户端的访问路径. 4> ...