深圳人才网官方网站,wordpress插件包,天津网站制作系统,网站开发怎么做账目录
一、文件上传
1.1 导入依赖
1.2 配置文件上传解析器
1.3 配置服务器存放文件地址
1.3.1 点击编辑Configurations
1.3.2 将项目部署至tomcat服务器上
1.3.3 配置相对路径
1.4 导入PropertiesUtil工具类
1.5 编写resource.properties
1.6 添加sql
1.7 编写PageCo…目录
一、文件上传
1.1 导入依赖
1.2 配置文件上传解析器
1.3 配置服务器存放文件地址
1.3.1 点击编辑Configurations
1.3.2 将项目部署至tomcat服务器上
1.3.3 配置相对路径
1.4 导入PropertiesUtil工具类
1.5 编写resource.properties
1.6 添加sql
1.7 编写PageController类
1.8 编写主页展示界面
1.9 编写文件上传方法
1.10 搭建一个图片上传的操作页面
二、文件下载
三、多文件上传
四、jrebel的使用
4.1 jrebel插件的安装
4.2 打开代理
4.3 设置jrebel离线
五、收获 一、文件上传
演示代码基于上篇博客SpringMVC之CRUDhttps://blog.csdn.net/weixin_74263417/article/details/132763882?spm1001.2014.3001.5501
我这里的属性名为jay_music数据表的字段如图 : 由于我们在上篇已经生成了带图片属性的接口、实体以及配置文件。所以我们就不需要重新逆向生成mapper和model包中的代码了。
1.1 导入依赖
导入依赖 dependencygroupIdcommons-fileupload/groupIdartifactIdcommons-fileupload/artifactIdversion1.3.3/version
/dependency
1.2 配置文件上传解析器
在spring-mvc.xml中配置文件上传解析器代码如下
!-- 处理文件上传下载问题--bean idmultipartResolver classorg.springframework.web.multipart.commons.CommonsMultipartResolver!-- 必须和用户JSP 的pageEncoding属性一致以便正确解析表单的内容 --property namedefaultEncoding valueUTF-8/property!-- 文件最大大小(字节) 1024*1024*5050M--property namemaxUploadSize value52428800/property!--resolveLazily属性启用是为了推迟文件解析以便捕获文件大小异常--property nameresolveLazily valuetrue//bean CommonsMultipartResolver是MultipartResolver接口的实现类。 1.3 配置服务器存放文件地址
具体操作如下
1.3.1 点击编辑Configurations 1.3.2 将项目部署至tomcat服务器上 1.3.3 配置相对路径 注本地路径名需与resource.properties资源文件中路径保持一致。 然后保存好即可。
1.4 导入PropertiesUtil工具类
package com.Kissship.utils;import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;public class PropertiesUtil {public static String getValue(String key) throws IOException {Properties p new Properties();InputStream in PropertiesUtil.class.getResourceAsStream(/resource.properties);p.load(in);return p.getProperty(key);}}1.5 编写resource.properties
创建一个名为resource.properties的资源文件如下
dirD:/temp/upload/
server/upload/
dir作为上传图片的真实地址而server即是网络访问地址。
1.6 添加sql
在逆向生成后的musicmapper.xml中加入以下代码
select idlistPager resultTypecom.Kissship.model.Music parameterTypecom.Kissship.model.Music select*from jay_musicwhereif testmname ! nulland mname like concat(%,#{mname},%)/if/where/select
紧接着在自动生成的mapper类中加入以下代码
ListMusic listPager(Music music);
1.7 编写PageController类
然后再创建一个公共路径处理类 PageController类代码如下
package com.Kissship.web;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;/*** author Kissship* site www.Kissship.com* company xxx公司* create 2023-09-07-15:01** 用来处理页面跳转*/
Controller
public class PageController {//a hreforder/preSave新增/a 新增界面RequestMapping(/page/{page})public String toPage(PathVariable(page) String page){return page;}RequestMapping(/page/{dir}/{page})public String toDirPage(PathVariable(dir) String dir,PathVariable(page) String page){return dir / page;}}1.8 编写主页展示界面
主页代码 list.jsp如下
% page languagejava contentTypetext/html; charsetUTF-8pageEncodingUTF-8%
% taglib urihttp://jsp.veryedu.cn prefixz%
% taglib urihttp://java.sun.com/jsp/jstl/core prefixc%
!DOCTYPE html PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN http://www.w3.org/TR/html4/loose.dtd
html
headmeta http-equivContent-Type contenttext/html; charsetUTF-8linkhrefhttps://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.5.0/css/bootstrap.cssrelstylesheetscriptsrchttps://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.5.0/js/bootstrap.js/scripttitleJayChou歌单列表/titlestyle typetext/css.page-item input {padding: 0;width: 40px;height: 100%;text-align: center;margin: 0 6px;}.page-item input, .page-item b {line-height: 38px;float: left;font-weight: 400;}.page-item.go-input {margin: 0 10px;}/style
/head
body
form classform-inlineaction${pageContext.request.contextPath }/mic/list methodpostdiv classform-group mb-2input typetext classform-control-plaintext namemnameplaceholder请输入歌曲名称!-- input namerows value20 typehidden --!-- 不想分页 --
%-- input namepagination valuefalse typehidden--%/divbutton typesubmit classbtn btn-primary mb-2查询/buttona classbtn btn-primary mb-2 href${pageContext.request.contextPath }/mic/preSave新增/a
/formtable classtable table-stripedtheadtrth scopecol歌曲编号/thth scopecol歌曲名称/thth scopecol歌曲专辑/thth scopecol歌曲歌词/thth scopecol歌曲图片/th/tr/theadtbodyc:forEach varb items${lst }trtd${b.mid }/tdtd${b.mname }/tdtd${b.mtype }/tdtd${b.minfo }/tdtdimg src${b.mpic } styleheight: 60px;width: 60px/tdtda href${pageContext.request.contextPath }/mic/preSave?mid${b.mid}修改/aa href${pageContext.request.contextPath }/mic/del/${b.mid}删除/aa href${pageContext.request.contextPath }/page/mic/upload?mid${b.mid}图片上传/aa href${pageContext.request.contextPath }/mic/download?mid${b.mid}图片下载/a/td/tr/c:forEach/tbody
/table
!-- 这一行代码就相当于前面分页需求前端的几十行了 --
z:page pageBean${pageBean }/z:page
${pageBean }
/body
/html
1.9 编写文件上传方法
在我们的MusicController控制器中增加文件上传的方法进行配置要增加的代码如下
//文件上传RequestMapping(/upload)public String upload(Music music,MultipartFile m){try {
// 3.后端可以直接利用mutipartFile类接受前端传递到后台的文件//上传的图片真实存放地址String dir PropertiesUtil.getValue(dir);//网络访问地址String server PropertiesUtil.getValue(server);String fileName m.getOriginalFilename();System.out.println(文件名fileName);System.out.println(文件类别m.getContentType());//4.将文件转成流然后写入服务器某一个硬盘FileUtils.copyInputStreamToFile(m.getInputStream(),new File(dirfileName));music.setMpic(serverfileName);musicBiz.updateByPrimaryKeySelective(music);} catch (IOException e) {e.printStackTrace();}return redirect:list;}
1.10 搭建一个图片上传的操作页面
创建一个新的upload.jsp页面作为图片上传操作页面upload.jsp代码如下
% page contentTypetext/html;charsetUTF-8 languagejava %
html
headtitle专辑图片上传/title
/head
body
form action${pageContext.request.contextPath}/mic/upload methodpost enctypemultipart/form-datalabel歌曲编号/labelinput typetext namemid readonlyreadonly value${param.mid}/br/label专辑图片/labelinput typefile namem/br/input typesubmit value上传图片/
/form
form methodpost action${pageContext.request.contextPath}/mic/uploads enctypemultipart/form-datainput typefile namefiles multiplebutton typesubmit上传/button
/form
/body
/html然后启动tomcat服务器访问路径进行测试测试结果如下 二、文件下载
在Controller层中加入以下代码如下 //文件下载实现RequestMapping(value/download)public ResponseEntitybyte[] download(Music music,HttpServletRequest req){try {//先根据文件id查询对应图片信息Music mic this.musicBiz.selectByPrimaryKey(music.getMid());String diskPath PropertiesUtil.getValue(dir);String reqPath PropertiesUtil.getValue(server);String realPath mic.getMpic().replace(reqPath,diskPath);String fileName realPath.substring(realPath.lastIndexOf(/)1);//下载关键代码File filenew File(realPath);HttpHeaders headers new HttpHeaders();//http头信息String downloadFileName new String(fileName.getBytes(UTF-8),iso-8859-1);//设置编码headers.setContentDispositionFormData(attachment, downloadFileName);headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);//MediaType:互联网媒介类型 contentType具体请求中的媒体类型信息return new ResponseEntitybyte[](FileUtils.readFileToByteArray(file),headers, HttpStatus.OK);}catch (Exception e){e.printStackTrace();}return null;
之后重启tomcat服务器进行测试结果如下 三、多文件上传
多文件上传和普通文件上传的区别 参数类型不同多文件上传使用MultipartFile[]作为参数类型而普通文件上传使用MultipartFile作为参数类型。前端表单处理不同多文件上传需要使用input[type“file”]的multiple属性并选择多个文件进行上传而普通文件上传只能选择单个文件上传。后端处理方式不同多文件上传需要接收文件数组可以对每个文件进行处理普通文件上传只能接收单个文件。 在Controller层中加入以下代码如下
//多文件上传RequestMapping(/uploads)public String uploads(HttpServletRequest req, Music music, MultipartFile[] files){try {StringBuffer sb new StringBuffer();for (MultipartFile cfile : files) {//思路//1) 将上传图片保存到服务器中的指定位置String dir PropertiesUtil.getValue(dir);String server PropertiesUtil.getValue(server);String filename cfile.getOriginalFilename();FileUtils.copyInputStreamToFile(cfile.getInputStream(),new File(dirfilename));sb.append(filename).append(,);}System.out.println(sb.toString());} catch (Exception e) {e.printStackTrace();}return redirect:list;} 增加完后重启tomcat服务器进行测试测试结果如下 四、jrebel的使用
使用 JRebel 启动项目有以下好处 快速部署JRebel 允许在应用程序运行时热部署代码和资源文件而无需重新启动整个应用程序。这大大提高了开发效率省去了传统的重启应用程序的时间。 即时生效JRebel 对于大部分代码和资源的修改都能够实时生效无须手动重新编译和重新部署。这使得开发人员能够立即看到他们所做的更改的效果快速迭代开发。 保持应用状态JRebel 可以保持应用程序的状态包括各种已经加载的类、对象、变量等。这意味着在代码修改后应用程序的状态仍然可以保持不变不会丢失用户的登录状态、缓存数据等。 支持多种框架和技术栈JRebel 不仅适用于 Java SE 和 Java EE 应用程序还支持许多主流的框架和技术栈如Spring、Hibernate、Maven、Gradle等。这使得 JRebel 能够应用于各种类型的项目。 减少开发周期由于 JRebel 的快速部署和即时生效特性开发人员可以迅速验证和修改他们的代码减少了开发周期。这有助于提高团队的开发效率和项目的交付速度。 4.1 jrebel插件的安装 重启后的IDEA是这样的 但是此时我们还需要打开代理黑窗口才可以用jrebel启动项目。如下
4.2 打开代理
下载代理进行jrebel的使用 4.3 设置jrebel离线
打开代理后点击jrebel启动项目会弹出以下窗口具体操作如下 1.在弹出框中Team URL下方第一个输入框输入 http://127.0.0.1:8888/0e63ac70-2074-46d3-9de1-46fb2befde0a 2.在第二个输入框输入自己的邮箱。 3.勾选 I agree with the term... 4.最后点击最下方按钮Activete JRebel即可。 设置完jrebel离线之后在用jrebel插件启动项目之前就可以不打开代理辅助工具了。
五、收获
学习 Spring MVC 文件上传与下载可以给我们带来以下收获 扩展技能掌握 Spring MVC 文件上传与下载技术可以扩展你的技能范围。这使得你成为一个更全面的开发人员可以处理包括文件上传与下载在内的更广泛的任务。 实现功能需求文件上传与下载是许多 Web 应用程序常见的功能需求。通过学习 Spring MVC 文件上传与下载你可以满足项目或产品的要求将其集成到你的应用程序中让用户能够上传和下载文件。 提升用户体验文件上传与下载功能可以提升用户体验使用户能够方便地上传所需的文件或下载所需的资源。这对于许多应用程序来说是重要的功能特性可以提高用户的满意度和使用度。 理解文件操作原理学习文件上传与下载的实现原理可以让你更深入地理解文件操作的相关概念和技术。你可以了解如何处理文件的输入输出、如何管理文件的存储和访问以及如何在应用程序中保护文件的安全性。 强化项目开发能力掌握文件上传与下载技术可以强化你的项目开发能力。你可以更好地处理文件相关的需求比如批量文件上传、大文件上传、文件分片上传等提高开发效率和代码质量。 解决实际问题学习文件上传与下载技术可以帮助你解决实际的问题和挑战。你可以应对各种情况如文件大小限制、文件类型验证、安全性控制等确保文件操作的可靠性和稳定性。 最后SpringMVC之文件上传下载以及jrebel的使用就到这里祝大家在敲代码的路上一路通畅!
感谢大家的观看 !
文章转载自: http://www.morning.fxzgw.com.gov.cn.fxzgw.com http://www.morning.dhckp.cn.gov.cn.dhckp.cn http://www.morning.dfygx.cn.gov.cn.dfygx.cn http://www.morning.chhhq.cn.gov.cn.chhhq.cn http://www.morning.tjpmf.cn.gov.cn.tjpmf.cn http://www.morning.smj79.cn.gov.cn.smj79.cn http://www.morning.zsrdp.cn.gov.cn.zsrdp.cn http://www.morning.xxiobql.cn.gov.cn.xxiobql.cn http://www.morning.glxdk.cn.gov.cn.glxdk.cn http://www.morning.bdqpl.cn.gov.cn.bdqpl.cn http://www.morning.jcrlx.cn.gov.cn.jcrlx.cn http://www.morning.smhtg.cn.gov.cn.smhtg.cn http://www.morning.xsfg.cn.gov.cn.xsfg.cn http://www.morning.pyncm.cn.gov.cn.pyncm.cn http://www.morning.qlbmc.cn.gov.cn.qlbmc.cn http://www.morning.qtzqk.cn.gov.cn.qtzqk.cn http://www.morning.ygqjn.cn.gov.cn.ygqjn.cn http://www.morning.srndk.cn.gov.cn.srndk.cn http://www.morning.lywys.cn.gov.cn.lywys.cn http://www.morning.lbbgf.cn.gov.cn.lbbgf.cn http://www.morning.zdbfl.cn.gov.cn.zdbfl.cn http://www.morning.gwkwt.cn.gov.cn.gwkwt.cn http://www.morning.hwlk.cn.gov.cn.hwlk.cn http://www.morning.qclmz.cn.gov.cn.qclmz.cn http://www.morning.ldcrh.cn.gov.cn.ldcrh.cn http://www.morning.yesidu.com.gov.cn.yesidu.com http://www.morning.wfjrl.cn.gov.cn.wfjrl.cn http://www.morning.bgbnc.cn.gov.cn.bgbnc.cn http://www.morning.bklkt.cn.gov.cn.bklkt.cn http://www.morning.mgskc.cn.gov.cn.mgskc.cn http://www.morning.rkxk.cn.gov.cn.rkxk.cn http://www.morning.cbvlus.cn.gov.cn.cbvlus.cn http://www.morning.dansj.com.gov.cn.dansj.com http://www.morning.llllcc.com.gov.cn.llllcc.com http://www.morning.zhnpj.cn.gov.cn.zhnpj.cn http://www.morning.eronghe.com.gov.cn.eronghe.com http://www.morning.bflws.cn.gov.cn.bflws.cn http://www.morning.pangucheng.cn.gov.cn.pangucheng.cn http://www.morning.ynryz.cn.gov.cn.ynryz.cn http://www.morning.jxcwn.cn.gov.cn.jxcwn.cn http://www.morning.pmhln.cn.gov.cn.pmhln.cn http://www.morning.ttshf.cn.gov.cn.ttshf.cn http://www.morning.ybgt.cn.gov.cn.ybgt.cn http://www.morning.mkczm.cn.gov.cn.mkczm.cn http://www.morning.wwjft.cn.gov.cn.wwjft.cn http://www.morning.lqlfj.cn.gov.cn.lqlfj.cn http://www.morning.bnlkc.cn.gov.cn.bnlkc.cn http://www.morning.qxbsq.cn.gov.cn.qxbsq.cn http://www.morning.kzhxy.cn.gov.cn.kzhxy.cn http://www.morning.lhrcr.cn.gov.cn.lhrcr.cn http://www.morning.ccyjt.cn.gov.cn.ccyjt.cn http://www.morning.tmxtr.cn.gov.cn.tmxtr.cn http://www.morning.mlnby.cn.gov.cn.mlnby.cn http://www.morning.dqzcf.cn.gov.cn.dqzcf.cn http://www.morning.nxpqw.cn.gov.cn.nxpqw.cn http://www.morning.china-cj.com.gov.cn.china-cj.com http://www.morning.pcgjj.cn.gov.cn.pcgjj.cn http://www.morning.wsxly.cn.gov.cn.wsxly.cn http://www.morning.nlmm.cn.gov.cn.nlmm.cn http://www.morning.nmbbt.cn.gov.cn.nmbbt.cn http://www.morning.hpggl.cn.gov.cn.hpggl.cn http://www.morning.zsrdp.cn.gov.cn.zsrdp.cn http://www.morning.pswzc.cn.gov.cn.pswzc.cn http://www.morning.rfqk.cn.gov.cn.rfqk.cn http://www.morning.ttdbr.cn.gov.cn.ttdbr.cn http://www.morning.brcdf.cn.gov.cn.brcdf.cn http://www.morning.wtcyz.cn.gov.cn.wtcyz.cn http://www.morning.lhgqc.cn.gov.cn.lhgqc.cn http://www.morning.wnywk.cn.gov.cn.wnywk.cn http://www.morning.nxfwf.cn.gov.cn.nxfwf.cn http://www.morning.bpp999.com.gov.cn.bpp999.com http://www.morning.mbnhr.cn.gov.cn.mbnhr.cn http://www.morning.mltsc.cn.gov.cn.mltsc.cn http://www.morning.jlmrx.cn.gov.cn.jlmrx.cn http://www.morning.rhjhy.cn.gov.cn.rhjhy.cn http://www.morning.txhls.cn.gov.cn.txhls.cn http://www.morning.fbtgp.cn.gov.cn.fbtgp.cn http://www.morning.ztdlp.cn.gov.cn.ztdlp.cn http://www.morning.gqfbh.cn.gov.cn.gqfbh.cn http://www.morning.qytpt.cn.gov.cn.qytpt.cn