Spring MVC实现文件上传实例

  文件的上传与下载基本上是web项目中会用到的技术,在web学习中我们用到的是 Apache fileupload这个组件来实现上传,在springmvc中对它进行了封装,让我们使用起来比较方便,但是底层还是由Apache fileupload来实现的。springmvc中由MultipartFile接口来实现文件上传。

 

1.创建web工程,搭建SpringMVC运行环境。另外再导入两个jar包     文件上传jar

 

2. 创建前端jsp页面

  • input的type设置为file

  • form表单的method设为post,

  • form表单的enctype设置为multipart/form-data,以二进制的形式传输数据。

 1 <%@ page language="java" contentType="text/html; charset=utf-8"
 2     pageEncoding="utf-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
10 <form action="${pageContext.request.contextPath}/fileupload/upload" enctype="multipart/form-data" method="post">
11         <input type="file" name="file"><br>
12           <input type="submit" value="上传">
13       </form>
14 </body>
15 </html>

3.创建FileuploadController

     使用MultipartFile对象作为参数,接收前端发送过来的文件,将文件写入本地文件中,就完成了上传操作

1 package com.springmvc.fileupload;
 2 
 3 import java.io.File;
 4 
 5 import javax.servlet.http.HttpServletRequest;
 6 
 7 import org.springframework.stereotype.Controller;
 8 import org.springframework.web.bind.annotation.RequestMapping;
 9 import org.springframework.web.bind.annotation.RequestMethod;
10 import org.springframework.web.bind.annotation.RequestParam;
11 import org.springframework.web.multipart.MultipartFile;
12 
13 /**
14  * Springmvc 文件上传
15  * 
16  * @author Administrator
17  *
18  */
19 
20 @Controller
21 @RequestMapping(value = "/fileupload")
22 public class FileUploadController {
23     // 上传页面
24     @RequestMapping(value = "/upload", method = RequestMethod.POST)
25     public String upload(@RequestParam("file") MultipartFile file, HttpServletRequest request) throws Exception {
26         // 判断文件是否为空
27         if (file.isEmpty()) {
28             return "failed";
29         }
30         // 获取文件存储路径(绝对路径)
31         String path = request.getServletContext().getRealPath("/WEB-INF/file");
32         System.out.println(path);
33         // 获取文件名称
34         String fileName = file.getOriginalFilename();
35         // 创建文件实例
36         File f = new File(path, fileName);
37         // 判断文件目录是否存在
38         if (!f.getParentFile().exists()) {
39             // 创建目录
40             f.getParentFile().mkdirs();
41             System.out.println("文件已创建");
42         }
43         // 写入文件
44         file.transferTo(f);
45         return "filesuccess";
46     }
47 
48     @RequestMapping(value = "/uploadPage")
49     public String upload() {
50 
51         return "fileupload";
52     }
53 
54 }

 

4. springmvc.xml配置CommonsMultipartResolver

1     <bean id="multipartResolver"
2         class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
3         <!--上传文件的最大大小,单位为字节 -->
4         <property name="maxUploadSize" value="17367648787"></property>
5         <!-- 上传文件的编码 -->
6         <property name="defaultEncoding" value="UTF-8"></property>
7     </bean>

5.测试结果(上传成功)

 

注意:

(一)对于数据的请求方式:get和post,首先比较两者最常见的不同:

       ①get一般用于向服务器请求获取数据,请求参数存放在URL中,并在地址栏可见,而post是向服务器提交数据,数据放置在容器(HTML HEADER)内且不可见;

       ②get方式提交的数据最多只能有1024字节,而post则没有此限制;

(二)spring的RequestMethod.GET和RequestMethod.POST,对于spring接口的method的两种定义,在访问时这两种方式的效果有不同:

      ①将一个method定义成RequestMethod.GET时,可以直接通过地址访问,这非常方便我们在开发的时候调用到我们的接口并进行测试; 

      ②同样的接口,将其method更改为RequestMethod.POST时,你会发现接口在地址栏访问不了了,只有向服务器发起一个POST请求时(例:ajax实例:如何使用json+ajax的方法实现类似前端特效tab切换效果)才起作用

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring MVC(Model-View-Controller)是一种基于Java的Web应用程序开发框架,它将应用程序分为模型、视图和控制器三个部分,以实现松耦合的设计。下面我将为您介绍一些Spring MVC入门实例编程。 1. 搭建Spring MVC环境 首先,您需要搭建一个Spring MVC环境。您可以使用Maven或Gradle构建工具来创建一个新的Spring项目,然后在pom.xml或build.gradle文件中添加Spring MVC依赖项。您还需要配置一个Servlet容器,如Tomcat或Jetty,以运行您的应用程序。完成这些步骤后,您就可以开始编写Spring MVC应用程序。 2. 编写控制器 控制器是Spring MVC应用程序的核心部分,它负责处理请求并生成响应。要创建一个控制器,请创建一个Java类并注释它为@Controller。然后,您可以使用@RequestMapping注释来定义处理请求的方法。例如,以下代码定义了一个处理GET请求的方法: ``` @Controller @RequestMapping("/hello") public class HelloWorldController { @RequestMapping(method = RequestMethod.GET) public String sayHello(ModelMap model) { model.addAttribute("message", "Hello World!"); return "hello"; } } ``` 在上面的代码中,我们使用@RequestMapping注释将控制器映射到/hello路径。当GET请求发送到该路径时,Spring MVC将调用sayHello()方法。该方法将一个名为“message”的属性添加到模型中,并返回一个名为“hello”的视图名称。 3. 创建视图 视图是控制器生成的响应的一部分,它定义了在浏览器中显示的内容。要创建一个视图,请创建一个JSP文件并将其放在WEB-INF/views目录下。然后,您可以使用Spring标签库来访问模型中的属性。例如,以下代码显示了如何在JSP文件中访问名为“message”的属性: ``` <html> <head> <title>Hello World</title> </head> <body> <h1>${message}</h1> </body> </html> ``` 在上面的代码中,我们使用JSTL表达式${message}来显示模型中的“message”属性。 4. 运行应用程序 完成上述步骤后,您可以使用Servlet容器启动您的应用程序,并在浏览器中访问/hello路径。如果一切顺利,您应该会看到“Hello World”消息显示在浏览器中。 这些是Spring MVC入门实例编程的基本步骤。您可以深入学习Spring MVC,并使用更复杂的功能来构建更高级的Web应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值