SpringMVC学习四(文件上传/拦截器)
1.文件上传
1.1预备工作,需要两个jar包(Fileupload)

jar包下载路径:
[点击下载https://github.com/suyirulan/putao/tree/master/fileupload_jar]
1.2上传文件的jsp页面如下,注意上传文件时表单form标签的属性method="post" enctype="multipart/form-data"是必须的,并且文件的name=" "也是必须的
1 <%@ page language="java" contentType="text/html; charset=UTF-8"
2 pageEncoding="UTF-8"%>
3 <!DOCTYPE html>
4 <html>
5 <head>
6 <meta charset="UTF-8">
7 <title>上传文件</title>
8 </head>
9 <body>
10 <form action="addStudent" method="post" enctype="multipart/form-data">
11 姓名:<input type="text" name="name"/><br>
12 年龄:<input type="text" name="age"/><br>
13 头像:<input type="file" name="headphoto"/><br>
14 <input type="submit" value="上传"/>
15 </form>
16 </body>
17 </html>
1.3在springmvc配置文件中上传解析器

其中value="99999999"为限制上传文件的最大字节(字节计算:1M=1024k=1024*1024=1048576字节)
1 <!-- 文件上传解析器 -->
2 <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
3 <property name="maxUploadSize" value="99999999"></property>
4 </bean>
1.4上传文件的Controller代码
1 @Controller
2 public class StudentController {
3
4 @RequestMapping("addStudent")
5 public String addStudent(Student stu,HttpServletRequest request,MultipartFile headphoto,Model model) {
6 //1.获取上传文件真实保存路径
7 String path = request.getServletContext().getRealPath("/headphoto");
8 //2.创建一个文件对象
9 File file=new File(path);
10 //若没有此文件则创建
11 if(!file.exists()) {
12 file.mkdirs();
13 }
14 //3.获取文件名
15 String filename=System.currentTimeMillis()+headphoto.getOriginalFilename();
16
17 stu.setPhoto("headphoto/"+filename);
18
19 File targetFile =new File(path+"/"+filename);
20
21 try {
22 FileUtils.writeByteArrayToFile(targetFile, headphoto.getBytes());
23 } catch (IOException e) {
24 // TODO Auto-generated catch block
25 e.printStackTrace();
26 }
27
28 model.addAttribute("stu",stu);
29
30 return "index";
31 }
32 }
进行测试

上传成功

2.拦截器(拦截的都是控制层地址,filter:页面地址请求都可以拦截)
2.1创建一个类,实现接口Handlerinterceptor
2.2重写接口中的方法
1 public class MyInterceptor implements HandlerInterceptor{
2
3 @Override
4 public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
5 throws Exception {
6 // TODO Auto-generated method stub
7
8 }
9
10 @Override
11 public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
12 throws Exception {
13 // TODO Auto-generated method stub
14
15 }
16
17 @Override
18 public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2) throws Exception {
19 Object name = request.getSession().getAttribute("name");
20 if(name!=null) {
21 return true;
22 }else {
23 System.out.println("拦截器");
24 return false;
25 }
26 }
27
28 }
2.3把创建的类配置到SpringMVC文件中,其中<mvc:mapping path=" "/>为拦截的,<mvc:exclude-mapping path=" "/>为放行的
1 <!-- 拦截器 -->
2 <mvc:interceptors>
3 <mvc:interceptor>
4 <mvc:mapping path="/user/**"/>
5 <mvc:exclude-mapping path="/user/login1"/>
6 <mvc:exclude-mapping path="/user/denglu"/>
7 <bean class="com.zhiyou100.zhl.interceptor.MyInterceptor"></bean>
8 </mvc:interceptor>
9 </mvc:interceptors>
Fileupload
SpringMVC学习四(文件上传/拦截器)的更多相关文章
- struts文件上传拦截器分析
struts有默认的文件拦截器,一般配置maximumSize就可以了. 知道原理,我们可以写一个类继承它,实现自己的配置上传文件大小的方式. 然后细究页面上传文件的时候,发现了一些问题. act ...
- springMVC整理04--文件上传 & 拦截器 & 异常处理
1. 文件上传 SpringMVC 的文件上传非常简便,首先导入文件上传依赖的 jar: <!-- 文件上传所依赖的 jar 包 --> <dependency> <g ...
- SpringMVC 文件上传&拦截器&异常处理
文件上传 Spring MVC 为文件上传提供了直接的支持,这种支持是通过即插即用的 MultipartResolver 实现的.Spring 用 Jakarta Commons FileUpload ...
- SpringMvc(四)- 下载,上传,拦截器
1.图片下载 图片下载:将服务器端的文件以流的形式写到客户端,通过浏览器保存到本地,实现下载: 1.1 图片下载步骤 1.通过session获取上下文对象(session.getServletCont ...
- struts文件上传拦截器中参数的配置(maximumSize,allowedTypes ,allowedExtensions)问题
<interceptor-ref name="fileUpload"> <param name="allowedTypes">image ...
- struts文件上传拦截器maximumSize设置文件大小不起作用
<interceptor-ref name="fileUpload"> <param name="allowedTypes ...
- Struts学习之文件上传
* 单文件上传: * 在动作类action中声明相关属性: * 在动作类action中,要声明与页面中表单name属性同名的属性,同名的属性的类型是File类型: ...
- (转)SpringMVC学习(九)——SpringMVC中实现文件上传
http://blog.csdn.net/yerenyuan_pku/article/details/72511975 这一篇博文主要来总结下SpringMVC中实现文件上传的步骤.但这里我只讲单个文 ...
- java web(四)文件上传与下载
一.文件上传原理 1.在TCP/IP中,最早出现的文件上传机制是FTP ,它是将文件由客户端发送到服务器的标准机制:但是在jsp使用过程中不能使用FTP方法上传文件,这是由jsp运行机制所决定. 通 ...
- 转:【专题十一】实现一个基于FTP协议的程序——文件上传下载器
引言: 在这个专题将为大家揭开下FTP这个协议的面纱,其实学习知识和生活中的例子都是很相通的,就拿这个专题来说,要了解FTP协议然后根据FTP协议实现一个文件下载器,就和和追MM是差不多的过程的,相信 ...
随机推荐
- vue中类tabs左右滑动
效果图 思路 给定一个变量用来记录滚动了几列,每滚动一次加1滚动一列,监听页面滚动父级元素宽度改变,重新设置滚动的距离(放在计算属性中让其自动计算) <template> <div ...
- proteus的五状态显示控制器
proteus的五状态显示控制器 1.实验原理 使用的核心器件还是4028,BCD译码器.将输入的四个信号接入输入端,输出信号选取0.1.2.4.8这五个输出状态驱动led显示.发光LED需要加入保护 ...
- KingbaseESV8R6等待事件之LWLock buffer_mapping
等待事件含义 当会话将数据块与共享缓冲池中的缓冲区关联时,会发生此等待事件. 类似Oracle cbc闩锁的是一种Kingbase的轻量级锁lwlock,这个锁的名字在不同数据库版本中可能有所不同,我 ...
- 如何使用Java代码混淆技术保护您的应用程序
摘要 本文探讨了代码混淆在保护Java代码安全性和知识产权方面的重要意义.通过混淆技术,可以有效防止代码被反编译.逆向工程或恶意篡改,提高代码的安全性.常见的Java代码混淆工具如IPAGuard.A ...
- stm32F103 移植Free RTOS
stm32F103 移植Free RTOS 1. 下载FreeRTOS 源码 [官网下载] (http://www.freertos.org) [代码托管网站下载] (https://sourcefo ...
- redis的延迟双删策略
1,redis数据为什么会存在和数据库数据不一致的问题 在多线程并发情况下,假设有两个数据库修改请求,为保证数据库与redis的数据一致性,修改请求的实现中需要修改数据库后,级联修改redis中的数据 ...
- #KD-Tree#洛谷 4849 寻找宝藏
题目传送门 题目大意 在一个四维坐标系中,给定 \(n\) 个点,问有多少种选择点的方案, 使得这些点排序后任意坐标单调不降,并且选择的点权和最大,同时输出最大值 分析 设 \(f[i]\) 表示最后 ...
- OpenHarmony页面级UI状态存储:LocalStorage
LocalStorage是页面级的UI状态存储,通过@Entry装饰器接收的参数可以在页面内共享同一个LocalStorage实例.LocalStorage也可以在UIAbility内,页面间共享 ...
- redis 简单整理——redis 的键管理[七]
前言 简单整理一下redis的键管理. 正文 单个键管理 键重命名 rename key newkey 为了防止被强行rename,Redis提供了renamenx命令,确保只有newKey 不存在时 ...
- 浅谈TypeScript对业务可维护性的影响
前言 笔者认为, TypeScript是服务于业务的, 核心就是提高代码的可维护性. TypeScript是把双刃剑, 如果类型系统使用的不好, 反而会阻碍开发, 甚至最后就变成了anyScript. ...