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学习四(文件上传/拦截器)的更多相关文章

  1. struts文件上传拦截器分析

    struts有默认的文件拦截器,一般配置maximumSize就可以了. 知道原理,我们可以写一个类继承它,实现自己的配置上传文件大小的方式.   然后细究页面上传文件的时候,发现了一些问题. act ...

  2. springMVC整理04--文件上传 & 拦截器 & 异常处理

    1.  文件上传 SpringMVC 的文件上传非常简便,首先导入文件上传依赖的 jar: <!-- 文件上传所依赖的 jar 包 --> <dependency> <g ...

  3. SpringMVC 文件上传&拦截器&异常处理

    文件上传 Spring MVC 为文件上传提供了直接的支持,这种支持是通过即插即用的 MultipartResolver 实现的.Spring 用 Jakarta Commons FileUpload ...

  4. SpringMvc(四)- 下载,上传,拦截器

    1.图片下载 图片下载:将服务器端的文件以流的形式写到客户端,通过浏览器保存到本地,实现下载: 1.1 图片下载步骤 1.通过session获取上下文对象(session.getServletCont ...

  5. struts文件上传拦截器中参数的配置(maximumSize,allowedTypes ,allowedExtensions)问题

    <interceptor-ref name="fileUpload"> <param name="allowedTypes">image ...

  6. struts文件上传拦截器maximumSize设置文件大小不起作用

    <interceptor-ref name="fileUpload">                <param name="allowedTypes ...

  7. Struts学习之文件上传

    * 单文件上传:        * 在动作类action中声明相关属性:            * 在动作类action中,要声明与页面中表单name属性同名的属性,同名的属性的类型是File类型:  ...

  8. (转)SpringMVC学习(九)——SpringMVC中实现文件上传

    http://blog.csdn.net/yerenyuan_pku/article/details/72511975 这一篇博文主要来总结下SpringMVC中实现文件上传的步骤.但这里我只讲单个文 ...

  9. java web(四)文件上传与下载

     一.文件上传原理 1.在TCP/IP中,最早出现的文件上传机制是FTP ,它是将文件由客户端发送到服务器的标准机制:但是在jsp使用过程中不能使用FTP方法上传文件,这是由jsp运行机制所决定. 通 ...

  10. 转:【专题十一】实现一个基于FTP协议的程序——文件上传下载器

    引言: 在这个专题将为大家揭开下FTP这个协议的面纱,其实学习知识和生活中的例子都是很相通的,就拿这个专题来说,要了解FTP协议然后根据FTP协议实现一个文件下载器,就和和追MM是差不多的过程的,相信 ...

随机推荐

  1. verilog模型概述

    模型功能 verilog是硬件描述语言的一种,主要用于ASIC和FPGA中,用于实现数字逻辑控制. 相较于VHDL,verilog的语法更加接近C语言,格式也更加宽松,具备更强的灵活性. 模型框图 v ...

  2. docker下载mongodb镜像并启动容器

    1.查找mongodb相关镜像 docker search mongo 找到相关的镜像进行拉取,如果不指定版本,默认下载最新的mongoDB.建议自己先查找需要那个版本后在进行拉取,因为mongoDB ...

  3. DynamicHead:基于像素级路由机制的动态FPN | NIPS 2020

    论文提出了细粒度动态detection head,能够基于路由机制动态地融合不同FPN层的像素级局部特征进行更好的特征表达.从设计的路由空间来看是一个十分耗时的操作,但是作者设计的高效路由器实际计算十 ...

  4. KingbaseES V8R6 集群环境备库不结束旧事务快照将影响主库的vacuum操作

    前言 昨天同事遇到了一个有关vacuum的典型问题. V8R6读写分离集群环境,一主多备. 版本:kingbaseesv008r006c004 问题现象: 主库日常巡检发现日志大量记录: waring ...

  5. debian12 linux root能用lightdm登陆xfce桌面,普通用户不能用lightdm登陆xfce桌面,闪一下黑屏和一个_,又回到lightdm

    Fn+Ctrl+F3,进入tty,发现登陆普通用户后再使用startxfce4可以直接进桌面 下面参照 https://forums.opensuse.org/t/normal-user-can-no ...

  6. Java HashMap 和 HashSet 的高效使用技巧

    Java HashMap HashMap 是一种哈希表,它存储键值对.键用于查找值,就像数组中的索引一样.HashMap 的优势在于它可以使用任何类型作为键,并且查找速度很快. 创建 HashMap ...

  7. 并发编程面试必备之ConcurrentHashMap源码解析

    ConcurrentHashMap在我的面试生涯中,10次有8次是会被问到的,记得刚毕业那会,被问到ConcurrentHashMap源码的无助与苦涩,无奈只能网上找了一些教程,背一背,才算是蒙混过关 ...

  8. openGauss数据库xlog目录满问题处理

    openGauss 数据库 xlog 目录满问题处理 openGauss 数据库 xlog 满通常为以下几个原因: 1.主备状态不正常,存在网络问题,集群内有宕机的节点 2.xlog 保留数量过多 3 ...

  9. Avalonia中的布局

    Avalonia是一个跨平台的.NET UI框架,它允许开发者使用C#和XAML来创建丰富的桌面应用程序.在Avalonia中,Alignment.Margin和Padding是非常重要的布局属性,它 ...

  10. Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用服务的必需组件-Nacos 、Sentinel等

    概述 Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案.此项目包含开发分布式应用服务的必需组件. 方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发 ...