Springmvc+java+Jsp实现文件上传功能

本文档介绍了如何使用SpringMVC、Java和JSP实现文件上传功能,具体步骤包括:配置springmvc.xml,导入上传文件所需jar包;在JSP页面创建file表单;在Controller层接收并处理文件;业务逻辑层将文件信息存入数据库;最后在客户端展示上传的图片。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里是一个简单实现文件上传功能的几个步骤及代码,以上传图片为例:

(整理不易,参考使用,记得点赞)

1.在开始前先配置springmvc.xml里的配置和导入用于上传文件的jar包:
<!-- 配置bean来帮助实现上传文件操作 -->
	<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
	</bean>
2.在Jsp页面用file表单类接收客户端选择的文件:

这里需要注意的是上传文件时提交信息的form表单要加上一个enctype="multipart/form-data"标签

<!-- 如果提交的内容有需要上传文件信息,需要添加一个参数就是enctype="multipart/form-data" -->
    <form action="add" method="post" enctype="multipart/form-data">
    	<!-- 上传文件的表单 -->
    	<p>头像:<input type="file" name="headimg"/></p>
    	<p><input type="submit" value="新增"/></p>
3.在controller控制层接收传来的文件进行处理:

在servlet层这里对传来的文件进行了获取文件绝对路径,截取文件后缀名,生成新的文件名方便存到数据库当中等等操作,具体代码以及详细注释:

/**
	 * 上传文件
	 * 需要上传头像,图片文件
	 * 需要在方法参数里加上HttpServletRequest request来接收,springmvc会自动帮我们封装
	 */
	@RequestMapping("add")
	public String add(Student stu,MultipartFile headimg,HttpServletRequest request){
		//判断传来的文件不等于空长度要大于0
		if(headimg!=null && headimg.getSize()>0){
			//我们要得到存放头像像的文件夹路径就需要现在参数里创建application对象
			//然后通过该对象获得根目录下的headimg文件夹的绝对路径
			String bastpath = request.getServletContext().getRealPath("headimg");
			//获得了根目录我们就可以把MultipartFile headimg对象写到根目录下面去
			//这时需要获取上传文件的名称以获取后缀名
			String upfilename = headimg.getOriginalFilename();
			String suffix = upfilename.substring(upfilename.lastIndexOf("."));
			//动态生成一个32位不重复的文件名
			String filename = UUID.randomUUID()+suffix;
			//把上传的文件写入到指定的路径里去
			try {
				headimg.transferTo(new File(bastpath+"/"+filename));
			} catch (Exception e) {
			}
			//将路径保存到实体中,存入到数据库
			stu.setImgpath(filename);
		}
		if(studentService.addStudent(stu)){
			//这里使用重定向跳转到show请求里,而不是跳转到show.jsp页面
			return "redirect:/show";
		}
		return "redirect:/addpage";
	}
4.接下来业务逻辑层就是对controller存入的对象添加到数据库的一个操作

控制层将对象传到service层再调用dao层的新增方法将数据以文件路径的方式存到数据库中,这里比较简单,直接上代码:

public boolean addStudent(Student stu) {
		if(studentDao.add(stu)>0){
			return true;
		}
		return false; 
	}

对数据库的操作时在mapper映射文件中完成的

<insert id="add">
		insert into student values(null,#{sname},#{birthday},#{sex},#{clz.cid},#{imgpath})
</insert>
5.在客户端查看保存的图片

这里需要控制层传一个对象到request作用域,然后在jsp页面接收,在jsp页面用一个img标签然后拼接上数据库传来的储存地址实现显示图片的功能

<!-- 显示上传的学生头像 -->
    <img alt="头像" src="/headimg/${student.imgpath}">
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值