springmvc文件上传和拦截器
来源:互联网 发布:g71格式编程 编辑:程序博客网 时间:2024/06/05 23:46
文件上传
用到这两个包
配置视图解析器:springmvc配置文件配置
<!-- id必须要是“multipartResolver” --><bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><!-- maxUploadSize文件上传的最大值,单位是byte --><property name="maxUploadSize" value="1024000000"></property></bean>Form.jsp
<form action="test/toPerson8.do" method="post" enctype="multipart/form-data"> name:<input name="name" type="text"><br/> age:<input name="age" type="text"><br/> address:<input name="address" type="text"><br/> birthday:<input name="birthday" type="text"><br/> pic:<input type="file" name="pic"><br/> <input type="submit"><br/> </form>
新建文件夹 upload在webroot下;存放上传的文件;
提交表单:
@RequestMapping(value="/toPerson8.do")public String toPerson8(Person person,HttpServletRequest request) throws Exception{//第一步转化requestMultipartHttpServletRequest rm = (MultipartHttpServletRequest) request;//获得文件CommonsMultipartFile cfile = (CommonsMultipartFile) rm.getFile("pic");//获得文件的字节数组byte[] bfile = cfile.getBytes();String fileName = "";//获得当前时间的最小精度SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmssSSS");fileName = format.format(new Date());//获得三位随机数Random random = new Random();for(int i = 0; i < 3; i++){fileName = fileName + random.nextInt(9);}//获得原始文件名String origFileName = cfile.getOriginalFilename();//XXX.jpgString suffix = origFileName.substring(origFileName.lastIndexOf("."));//拿到项目的部署路径String path = request.getSession().getServletContext().getRealPath("/");//定义文件的输出流OutputStream out = new FileOutputStream(new File(path+"/upload/"+fileName+suffix));out.write(bfile);out.flush();out.close();return "jsp/index";}重启tomcat
http://localhost:8080/springmvc-2/test1/toForm.do
选择一个文件 提交,成功;
多了一个图片
在tomcat下:
D:\java\apache-tomcat-6.0.37\webapps\springmvc-2\upload
拦截器:
新建包:cn.edu.hqu.interceptor类:MyInterceptor implements HandlerInterceptor;
三个方法分别对应前面图三个拦截,
Perihandle前置拦截:最多的是对权限的拦截
/** * 执行时机:在执行controller之前来执行 * 返回值类型:boolean:true代表放行可以访问controller, * false表示不可以访问controller */public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {return false;}}Posthandle后置拦截:
/** * 执行时机:controller执行完,视图解析器没有把视图解析成页面 * 对视图做统一的修改,主要提现的Model上 */public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView mv) throws Exception {}
最终拦截:
/** * 执行时机:视图已经被解析完毕,类似try catch 后的finally */public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3) throws Exception {}在每个方法输出一句话:
System.out.println("afterCompletion...");
System.out.println("postHandle...");
System.out.println("preHandle...");
将前置拦截改成true;配置拦截器:在springmvc配置文件配置
<mvc:interceptors><mvc:interceptor><!-- 对所有的请求都拦截,使用/**,对某个模块下的请求做拦截/模块名/* --><mvc:mapping path="/**"/><bean class="cn.edu.hqu.interceptor.MyInterceptor"></bean></mvc:interceptor></mvc:interceptors>
重启tomcat 访问
http://localhost:8080/springmvc-2/test/toForm.do
控制台输出:
preHandle...
postHandle...
afterCompletion...
将前置拦截改成false
访问
http://localhost:8080/springmvc-2/test/toForm.do
无法进行跳转;控制台输出:
preHandle...
前置拦截 改成true
输出拦截器的test
后置拦截:
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView mv) throws Exception {System.out.println("postHandle...");Map<String, Object> map = mv.getModel();map.put("test", "addpend something by Jerome");}
Jsp/index.jsp
加 <h5>${test}</h5>
重启tomcat 访问
http://localhost:8080/springmvc-2/test/toPerson5.do
输出:
…
addpend something by Jerome
模拟异常:
public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception ex) throws Exception {System.out.println("afterCompletion...");ex.printStackTrace();System.out.println("===========");}在页面输出 :jsp/index.jsp下面加 <%=1/0 %>
访问:http://localhost:8080/springmvc-2/test/toPerson5.do
异常:控制台
拦截器里面方法的输出;这捕捉到异常可以做日志监控方面的工作;
补充:
加载配置文件,我们配置文件一般放在config下,名字也可以自己取;
只要在web.xml配置
<!-- springmvc的中央控制器 --> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value> </init-param> </servlet>初始化配置文件;
源码下载:http://pan.baidu.com/s/1mg3GcLq
0 0
- springmvc文件上传和拦截器
- SpringMvc文件上传、下载和拦截器
- springmvc 异常处理、文件上传以及拦截器相关知识
- SpringMVC文件上传拦截器,大小验证,类型验证
- struts2--文件上传和uploadFile拦截器
- struts2--文件上传和uploadFile拦截器
- struts2--文件上传和uploadFile拦截器
- struts2--文件上传和uploadFile拦截器
- struts2--文件上传和uploadFile拦截器
- retrofit文件上传和拦截器使用
- 7.27--SSH学习之SpringMVC,Ajax请求、拦截器、文件上传和MyBatis访问数据库基本操作
- easyui和springmvc上传文件
- SpringMVC文件上传和下载
- SpringMvc文件上传和下载
- springmvc文件上传和下载
- SpringMVC文件上传和下载
- Springmvc文件上传和下载
- SpringMVC和ajax文件上传
- icool210,2416,6410B启动卡制作
- NSUderDefault的使用
- Ogre1.9的下载地址(适合VS2010搭配)
- C++ Primer笔记5_STL之顺序容器
- scrollNumber 滚动视图 随机
- springmvc文件上传和拦截器
- Ubuntu安装配置Qt环境
- Access to the path '/Files/Images/' is denied. 如何处理此类问题
- Fixing a Mac OSX Leopard Login Loop Caused by Launch Services
- Path Sum II
- [LeetCode] Regular Expression Matching [6]
- 64位win7 下Eclipse 安装svn插件 及问题解决
- 去重复数据(JAVA)
- VC++截取输入法输入信息钩子dll实现