时间: 2020-09-1|52次围观|0 条评论

//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笔记4 spring MVC的基础知识4插图

实现类:

spring笔记4 spring MVC的基础知识4插图1

 

spring mvc 默认安装的DefaultHandlerExceptionResolver,将异常转换为相应的状态码;

对某个Contoller指定异常处理@ExceptionHandler(Exception.class)  @ResponseStatus

如果需要对所有的异常进行统一处理,可以通过SimpleMappingExceptionResolver来指定;

如果要自定,实现ExceptionResolve;

 

 

 

6,小结

 

spring mvc是一架实际精密的机器,理解其内部实现原理可以更好的使用和扩展它;

文章转载于:https://www.cnblogs.com/snidget/p/3431965.html

原著是一个有趣的人,若有侵权,请通知删除

本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自起风了,原文地址《spring笔记4 spring MVC的基础知识4
   

还没有人抢沙发呢~