当前位置: 首页 > news >正文

水资源论证网站建设jquery 网站根目录

水资源论证网站建设,jquery 网站根目录,windows 2008 网站,报个电脑培训班要多少钱前言 文件上传和下载是 Web 开发中的重要环节#xff0c;但它们往往不那么容易实现。幸运的是#xff0c;Spring MVC 提供了一套简单而又强大的解决方案#xff0c;让我们可以专注于业务逻辑#xff0c;而不必过多关注底层的文件处理细节。 在本篇博客中#xff0c;我们…前言 文件上传和下载是 Web 开发中的重要环节但它们往往不那么容易实现。幸运的是Spring MVC 提供了一套简单而又强大的解决方案让我们可以专注于业务逻辑而不必过多关注底层的文件处理细节。 在本篇博客中我们将学习如何利用 Spring MVC 实现文件上传和下载功能。首先我们将了解文件上传的过程以及必要的配置。随后我们将介绍如何在控制器中处理上传的文件并对其进行存储或处理。最后我们将学习如何实现文件下载的功能使用户能够方便地获取指定的文件。 一、前期准备 1、新建项目结构如下 2、导入依赖 dependencies!-- springmvc 依赖会将spring的核心包一并添加进来 --!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --dependencygroupIdorg.springframework/groupIdartifactIdspring-webmvc/artifactIdversion5.3.23/version/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.18.30/version/dependencydependencygroupIdch.qos.logback/groupIdartifactIdlogback-classic/artifactIdversion1.4.5/version/dependency!-- 上传组件 --dependencygroupIdcommons-fileupload/groupIdartifactIdcommons-fileupload/artifactIdversion1.3.1/version/dependency/dependencies 使用Apache Commons FileUpload库的上传组件你可以轻松地处理HTTP请求中的文件上传部分。它提供了一些方便的类和方法使文件上传变得简单和可靠。 3、配置 web.xml  ?xml version1.0 encodingUTF-8? web-app xmlnshttp://xmlns.jcp.org/xml/ns/javaeexmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsdversion4.0servletservlet-namedispatcher/servlet-nameservlet-classorg.springframework.web.servlet.DispatcherServlet/servlet-classload-on-startup1/load-on-startup/servletservlet-mappingservlet-namedispatcher/servlet-nameurl-pattern//url-pattern/servlet-mapping /web-app 用于配置 Servlet 的映射和加载。在 Spring MVC 中它用于配置 DispatcherServlet 的初始化和请求映射。 具体来说这段配置的作用如下 定义了一个名为 dispatcher 的 Servlet并指定了 org.springframework.web.servlet.DispatcherServlet 作为其处理类。设置了 load-on-startup 属性为 1表示在应用启动时就加载该 Servlet。使用 servlet-mapping 元素将 dispatcher Servlet 映射到所有的请求路径上即 url-pattern//url-pattern意味着所有的请求都会经过该 Servlet 进行处理。 这段配置的作用是将所有的请求交给 DispatcherServlet 处理并让它成为应用的核心控制器。DispatcherServlet 将根据请求的 URL 和其他配置信息将请求分发给相应的处理器方法进行处理然后返回响应结果。 4、编写 ResultVO 类 Data public class ResultVOT {private Integer code HttpStatus.OK.value();private String message;private T data;} 这段代码定义了一个名为ResultVO的泛型类。它使用了Lombok注解Data该注解用于自动生成类的常用方法如构造函数、Getter和Setter等。 这个ResultVO类有以下几个字段 code表示响应的状态码默认值为HttpStatus.OK.value()即200。message表示响应的消息可以是任意字符串。data表示响应的数据使用了泛型T可以是任意类型。 通过使用Data注解Lombok将会自动生成以下方法 无参构造函数用于创建ResultVO对象。全参构造函数用于根据提供的参数创建ResultVO对象。Getter和Setter方法用于获取和设置code、message和data字段的值。equals和hashCode方法用于比较两个ResultVO对象的相等性。toString方法用于返回ResultVO对象的字符串表示。 通过使用这个通用的ResultVO类你可以在应用程序中统一封装响应结果包括状态码、消息和数据。它可以帮助你更方便地构建和处理API的响应并且具有灵活性和可扩展性适用于各种不同类型的响应数据。 5、编写 ProductVO 类 /*** Date 2023-10-24* Author qiu* 商品 VO 对象用于保存页面提交的数据* 后续将这个 vo 拷贝到 entity 中*/ Data public class ProductVO {/*** 商品名称*/private String productName;/*** 商品图片*/private MultipartFile[] file;}这段代码定义了一个名为ProductVO的类用于保存页面提交的商品数据。它使用了Lombok注解Data该注解用于自动生成类的常用方法。 ProductVO类有以下几个字段 productName表示商品名称使用了private访问修饰符类型为字符串。file表示商品图片使用了private访问修饰符类型为MultipartFile[]即文件数组。 通过使用Data注解Lombok将会自动生成以下方法 无参构造函数用于创建ProductVO对象。全参构造函数用于根据提供的参数创建ProductVO对象。Getter和Setter方法用于获取和设置productName和file字段的值。equals和hashCode方法用于比较两个ProductVO对象的相等性。toString方法用于返回ProductVO对象的字符串表示。 ProductVO类主要用于接收前端页面提交的商品数据。在后续的操作中可以将这个ProductVO对象的数据拷贝到实体类entity中进行进一步处理和持久化。 其中MultipartFile是Spring框架提供的一个接口用于处理文件上传。MultipartFile[]表示多个文件的数组可以用于接收前端上传的多个商品图片文件。 通过使用这个ProductVO类你可以方便地接收和保存页面提交的商品数据其中包括商品名称和商品图片。这样可以更好地组织和管理商品相关的信息并将其传递给后续的业务逻辑处理。 二、 实现文件上传 1、文件上传 RestController Slf4j public class ProductContoroler {/*** 添加商品同时带有上传的附件* param productVO* return*/PostMapping(/add)public ResultVO add(ProductVO productVO) throws IOException {ResultVO resultVO new ResultVO();// 获取上传的路径(绝对路径)String uploadPath d://file/;// 拼接完整的上传路径 // uploadPath filename;log.info(uploadPath);// 根据路径构建一个上传的文件对象File uploadFile new File(uploadPath);// 判断路径中的文件夹是否存在不存在则创建if (!uploadFile.exists()) {// 将文件夹创建出来uploadFile.mkdirs();}// 获取上传的文件名MultipartFile[] file productVO.getFile();for (MultipartFile multipartFile : file) {// 获取文件名String filename multipartFile.getOriginalFilename();// 执行上传Path path FileSystems.getDefault().getPath(uploadFile.getAbsolutePath(),filename);multipartFile.transferTo(path);}return resultVO;}} add的方法使用了PostMapping(/add)注解表示当接收到POST请求时会调用这个方法来处理。 该方法的参数是一个ProductVO对象用于接收前端提交的商品数据。 方法内部首先创建了一个ResultVO对象用于封装响应结果。 然后指定了一个上传文件的路径uploadPath这里设置为d://file/。 接着通过日志记录工具log将uploadPath输出到日志中方便查看。 在uploadPath路径下创建一个文件夹uploadFile如果该文件夹不存在的话。 接下来从productVO对象中获取上传的商品图片文件数组file。 然后使用循环遍历file数组对每个文件进行处理。 对于每个文件首先获取其原始文件名filename。 然后使用FileSystems.getDefault().getPath()方法构建一个文件路径path指定了文件的保存位置。 最后调用multipartFile.transferTo()方法将文件保存到指定路径path。 最后返回resultVO对象作为响应结果。 这个add方法实现了接收商品信息以及商品图片的上传功能。它将商品图片保存到指定路径并返回一个结果对象作为响应。 2、编写 xml 完成配置 ?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/contextxmlns:mvchttp://www.springframework.org/schema/mvcxsi:schemaLocationhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttps://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/mvchttps://www.springframework.org/schema/mvc/spring-mvc.xsd!-- 扫描 --context:component-scan base-packageedu.nf.ch08/!-- mvc注解驱动--mvc:annotation-driven/!-- 静态资源处理器--mvc:default-servlet-handler/!-- 装配上传附件解析器--bean idmultipartResolver classorg.springframework.web.multipart.commons.CommonsMultipartResolver!-- 限制文件上传的总大小单位字节,不配置此属性默认不限制 --property namemaxUploadSize value104857600/!-- 设置文件上传的默认编码--property namedefaultEncoding valueutf-8//bean/beans 在该配置文件中首先声明了XML命名空间xmlns以及XML命名空间的映射关系xsi:schemaLocation。这些声明用于引入和定义XML模式XSD。 然后使用context:component-scan指定要扫描的基础包以便自动注册Spring的组件。 接下来通过mvc:annotation-driven/启用Spring MVC的注解驱动以支持处理器映射和处理器适配器。 使用mvc:default-servlet-handler/配置静态资源处理器以便将静态资源如CSS、JavaScript等映射到默认的Servlet上。 通过bean配置上传附件解析器这里使用的是CommonsMultipartResolver用于处理文件上传功能。可以通过设置maxUploadSize属性限制文件上传的总大小并设置defaultEncoding属性指定文件上传的默认编码。 3、编写页面实现上传 !DOCTYPE html html langen headmeta charsetUTF-8titleTitle/titlescript srcjs/JQuery文件.txt.js/script /head bodyform idf1 enctypemultipart/form-dataName:input typetext nameproductName/brImage:input typefile namefile multiple/brinput typebutton value提交/br/formscript$(function () {$(:button).on(click,function () {// 构建 formData 对象let formData new FormData($(#f1)[0]);$.ajax({url:../add,type:post,data:formData,processData:false, // 告诉 jquery 不要处理发送的数据类型contentType:false, // 告诉 jquery 不要设置请求头的 contentTypesuccess:function ( result ) {if ( result.code 200 ){alert(上传成功);} else {alert(上传失败);}}})})}) /script/body /html 在页面中定义了一个带有id为f1的form元素使用了enctypemultipart/form-data属性来支持文件上传。 在表单中有两个输入字段 Name一个文本输入框用于输入商品名称其name属性为productName。Image一个文件选择框用于选择商品图片其name属性为file并且设置了multiple属性表示可以选择多个图片文件。 接着定义了一个JavaScript脚本在页面加载完成后执行。 脚本中通过选择器$(:button)选中所有按钮元素并绑定了一个点击事件处理函数。当按钮被点击时会执行该函数。 在函数内部首先创建一个FormData对象formData并将表单f1的数据添加到formData中。 然后使用jQuery的ajax方法发送一个POST请求到服务器的../add路径。 请求的数据为formData同时设置了processData为false告诉jQuery不要处理发送的数据类型contentType也设置为false告诉jQuery不要设置请求头的contentType。 在请求成功后的回调函数中根据服务器返回的结果result判断上传是否成功。如果返回的code为200则弹出上传成功的提示框否则弹出上传失败的提示框。 该HTML页面实现了一个简单的图片上传功能通过选择商品名称和图片文件点击提交按钮后将数据发送到服务器进行处理并根据返回的结果给出相应的提示。 4、运行效果 1单个文件 2多个文件 三、实现文件下载 1、文件下载 /*** 文件下载* param fileName* return*/GetMapping(/download/{fileName})public ResponseEntityInputStreamResource download(PathVariable(fileName) String fileName) throws Exception {// 文件下载目录(也就是上传路径)String downloadPath d://file/ fileName;// 构建一个文件输入流读取服务器上的文件FileInputStream fis new FileInputStream(downloadPath);// 设置响应头告诉浏览器响应流程HttpHeaders headers new HttpHeaders();// 对文件名进行编码防止响应头中出现乱码fileName URLEncoder.encode(fileName,UTF-8);// 设置头信息将响应内容处理的方式设置为附件下载headers.setContentDispositionFormData(attachment,fileName);// 设置响应类型为流类型headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);// 创建 InputStreamResource 对象封装输入流用于读取服务器文件InputStreamResource isr new InputStreamResource(fis);// 创建 ResponseEntity 对象封装 InputStreamResource,响应头以及响应状态码ResponseEntityInputStreamResource entity new ResponseEntity(isr, headers,HttpStatus.CREATED);return entity;} 这段代码实现了一个文件下载的功能。具体来说当访问URL为/download/{fileName}时该方法会被执行。 方法接收一个文件名参数fileName并根据该文件名构建文件下载路径downloadPath。 然后通过FileInputStream读取指定路径上的文件。 接下来创建一个HttpHeaders对象用于设置响应头信息。 在响应头中使用URLEncoder对文件名进行编码以防止出现乱码。 然后设置响应内容处理方式为附件下载并将响应类型设置为流类型。 接着使用InputStreamResource对象封装文件输入流以便于读取服务器上的文件。 最后创建一个ResponseEntity对象将封装好的InputStreamResource、响应头和响应状态码封装到其中并将其返回给客户端进行下载。 2、运行效果  四、总结 本次案例只是简单的文件上传和下载都是上传在本地那可不可以上传到远程的服务器上呢也是可以的后面会出一个案例讲解怎么上传文件到远程服务器 minion 上。 五、gitee 案例 地址ch08 · qiuqiu/SpringMVC - 码云 - 开源中国 (gitee.com)
http://www.w-s-a.com/news/689291/

相关文章:

  • 专业做房地产网站建设wordpress侧面小工具
  • 旅游网站开发的重要性wordpress添加广告插件
  • 关于网站建设管理工作的报告婚纱网站php
  • 东莞市建设培训中心网站那个网站可以看高速的建设情况
  • 网站开发工具安卓版专业小程序商城开发
  • 网站不备案影响收录吗深圳住房网站app
  • 交网站建设域名计入什么科目开发平台教程
  • 个人网站定制北京快速建站模板
  • 河南海华工程建设监理公司网站高端论坛网站建设
  • 网站建设网络推广方案图片编辑器免费
  • 如何用dw做网站设计设计头条
  • 网站建设基础及流程北京商场购物中心排名
  • 青州市城乡建设局网站自建网站步骤
  • wordpress文章延迟加载优化设计答案四年级上册语文
  • 做网站源码要给客户嘛怎么在运行打开wordpress
  • 北海住房和城乡建设局网站wordpress标题去掉私密
  • 织梦网站安装视频做网站都有那些步骤
  • 网站空间大小选择沈阳微信网站制作
  • 网站分享对联广告网站结构的类型
  • 三维家是在网站上做还是在app上北京网站建设 专业10年
  • 模拟网站建设网站建设认准猪八戒网
  • godaddy网站建设教程微信手机网站搭建
  • 网站建设 商城淄博网站制作哪家好
  • 廊坊手机网站团队国际贸易进口代理公司
  • 运用django做网站网站建设问题及解决办法
  • 商丘企业网站服务c mvc 网站开发
  • 太仓建设工程网站广州seo排名外包
  • 成都的教育品牌网站建设做网站不给提供ftp
  • 建站行业市场人力管理系统
  • qq钓鱼网站在线生成器google关键词搜索工具