jsp上传下载上篇

Python从0到100(十九):Python标准库初探 哈希函数又称哈希算法或散列函数,是一种为已有的数据创建“数字指纹”(哈希摘要)的方法。哈希函数把数据压缩成摘要,对于相同的输入,哈希函数可以生成相同的摘要(数字指纹),需要注意的是这个过程并不可逆(不能通过摘要计算出输入的内容)。举一个简单的例子,用户注册时我们希望在数据库中保存用户的密码,很显然我们不能将用户密码直接保存在数据库中,这样可能会导致用户隐私的泄露,所以在数据库中保存用户密码时,通常都会将密码的“指纹”保存起来,用户登录时通过哈希函数计算密码的“指纹”再进行匹配来判断用户登录是否成功。 阅读详情

文件上传到本地磁盘同时将信息出入数据库:

上传JSP页面中利用js能添加多个文件同时上传:

[html]  view plain copy
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2. <%  
  3. String path = request.getContextPath();  
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
  5. %>  
  6.   
  7.   
  8. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  9. <html>  
  10.   <head>  
  11.     <title>上传页面</title>  
  12.   
  13.   
  14. <script type="text/javascript">  
  15. function addfiles(){  
  16. var filesDiv = document.getElementById("files");  
  17. var fileInput = document.createElement("input");  
  18.   
  19. fileInput.type="file";  
  20. fileInput.name="浏览";  
  21.   
  22. var delButton = document.createElement("input");  
  23. delButton.type="button";  
  24. delButton.value="删除";  
  25.   
  26. delButton.onclick=function del(){  
  27. this.parentNode.parentNode.removeChild(this.parentNode);  
  28.   
  29. }  
  30. var div = document.createElement("div");  
  31. div.appendChild(fileInput);  
  32. div.appendChild(delButton);  
  33.   
  34. filesDiv.appendChild(div);  
  35. }  
  36.   
  37. </script>  
  38.   
  39.   </head>  
  40.     
  41.   <body>  
  42.     <form action="${pageContext.request.contextPath }/uploadServlet.do" method="post" enctype="multipart/form-data">  
  43.      <table>  
  44.      <tr>  
  45.      <td>用户名:</td><td><input type="text" name="username"/></td><td></td>   
  46.      </tr>  
  47.      <tr>  
  48.      <td></td><td><input type="button" value="添加文件" onclick="addfiles()"/></td><td></td>   
  49.      </tr>  
  50.      <tr>  
  51.      <td></td><td><input type="file" name="浏览"/></td><td></td>   
  52.      </tr>  
  53.      <tr>  
  54.      <td></td><td><div id="files"></div></td><td></td>   
  55.      </tr>  
  56.      <tr>  
  57.      <td></td><td><input type="submit" value="上传"/></td><td></td>   
  58.      </tr>  
  59.      </table>  
  60.     </form>  
  61.       
  62.     ${message}  
  63.   </body>  
  64. </html>  


最终要的是servlet中

[html]  view plain copy
  1. package cn.csdn.web.servlet;  
  2.   
  3.   
  4. import java.io.File;  
  5. import java.io.FileOutputStream;  
  6. import java.io.IOException;  
  7. import java.io.InputStream;  
  8. import java.io.OutputStream;  
  9. import java.io.UnsupportedEncodingException;  
  10. import java.sql.Blob;  
  11. import java.sql.SQLException;  
  12. import java.util.List;  
  13. import java.util.UUID;  
  14. import javax.servlet.ServletException;  
  15. import javax.servlet.http.HttpServlet;  
  16. import javax.servlet.http.HttpServletRequest;  
  17. import javax.servlet.http.HttpServletResponse;  
  18. import javax.sql.rowset.serial.SerialBlob;  
  19. import javax.sql.rowset.serial.SerialException;  
  20. import org.apache.commons.fileupload.FileItem;  
  21. import org.apache.commons.fileupload.FileUploadBase.FileSizeLimitExceededException;  
  22. import org.apache.commons.fileupload.FileUploadException;  
  23. import org.apache.commons.fileupload.disk.DiskFileItemFactory;  
  24. import org.apache.commons.fileupload.servlet.ServletFileUpload;  
  25. import sun.print.resources.serviceui;  
  26. import cn.csdn.web.dao.UploadDao;  
  27. import cn.csdn.web.dao.UploadDaoImpl;  
  28. import cn.csdn.web.domain.Upload;  
  29.   
  30. public class UploadFilesServlet extends HttpServlet {  
  31. /**  
  32.  * @author sword  
  33.  */  
  34. private static final long serialVersionUID = 1L;  
  35.   
  36. UploadDao uDao = new UploadDaoImpl();  
  37. Upload entity = new Upload();  
  38. @SuppressWarnings({ "unchecked", "unchecked" })  
  39. public void doGet(HttpServletRequest request, HttpServletResponse response)  
  40. throws ServletException, IOException {  
  41. request.setCharacterEncoding("utf-8");  
  42. try {  
  43. //1、创建工厂对象  
  44. DiskFileItemFactory factory = new DiskFileItemFactory();  
  45. //2、设置临时文件路径  
  46. factory.setRepository(new File("d:\\test"));  
  47. //3、得到上传文件解析器  
  48. ServletFileUpload upload = new ServletFileUpload(factory);  
  49. //4、处理乱码问题  
  50. upload.setHeaderEncoding("utf-8");  
  51. //5、设定文件上传大小限制  
  52. //upload.setSizeMax(1024*1024);  
  53. //6、进行解析  得到存放FileItem的List对象  
  54. List<FileItem> list ;  
  55. list = upload.parseRequest(request);  
  56. for(FileItem item : list){  
  57. if(item.isFormField()){  
  58. String paramName = item.getFieldName();  
  59. String paramValue = item.getString("utf-8");  
  60. System.out.println("普通输入项" + paramName + " = " + paramValue);  
  61.   
  62. entity.setName(paramValue);  
  63. }else{  
  64. //获取上传文件名  
  65. String fileName = item.getName();  
  66. //如果文件名有目录,则去掉目录部分,只保留文件名  
  67. fileName = fileName.substring(fileName.lastIndexOf("\\")+1);  
  68. System.out.println("name = " + fileName);  
  69.   
  70. if(!fileName.equals("")){  
  71. //处理同名问题  名字前加UUID处理  调用refactorFile方法  
  72. String uuidName = refactorFileName(fileName);  
  73. System.out.println("uuidName==="+uuidName);//测试代码  
  74. entity.setFileName(uuidName);//将信息存入到数据库中  
  75.   
  76. InputStream is = item.getInputStream();  
  77. //上传文件位置生成指定的二级路径  调用方法  
  78. String basepath = this.getServletContext().getRealPath("WEB-INF/upload");  
  79. String finalPath = generateFilePath(basepath,uuidName);//文件的完整路径+名字+后缀  
  80. String finalName = finalPath.substring(finalPath.indexOf("_")+1);//得到文件的真实名字  
  81. System.out.println("finalName==="+finalName);  
  82. entity.setFilePath(finalPath);//将信息存入到数据库中  
  83. entity.setFile(item.get());//将上传文件存入到数据库中  
  84.   
  85. File file = new File(finalPath);  
  86. FileOutputStream fos = new FileOutputStream(file);  
  87.   
  88. byte[] buffer = new byte[1024];  
  89. int len = 0;  
  90. while((len=is.read(buffer))!=-1){  
  91. fos.write(buffer, 0, len);  
  92. }  
  93.   
  94. uDao.insert(entity);  
  95.   
  96. fos.flush();  
  97. fos.close();  
  98. is.close();  
  99. item.delete();  
  100. request.setAttribute("message", "文件上传成功");    
  101.   
  102. }  
  103. }   
  104. }  
  105. }catch(FileSizeLimitExceededException e1){  
  106. e1.printStackTrace();  
  107. request.setAttribute("message", "上传文件尺寸太大!!!");  
  108. }catch(FileUploadException e){  
  109. e.printStackTrace();  
  110. request.setAttribute("message", "bbbb文件上传失败");  
  111.   
  112. }  
  113. request.getRequestDispatcher("/upload.jsp").forward(request, response);  
  114. }  
  115.   
  116.   
  117. private String generateFilePath(String basepath, String uuidName) {  
  118. int hashcode = uuidName.hashCode();  
  119. int dir1 = hashcode & 0xf;  
  120. int dir2 = (hashcode >> 4) & 0xf;  
  121.   
  122. String path = basepath+"\\"+dir1+"\\"+dir2+"\\";  
  123.   
  124. File f = new File(path);  
  125. if(!f.exists()){  
  126. f.mkdirs();  
  127. }  
  128. return path+uuidName;  
  129. }  
  130.   
  131.   
  132. private String refactorFileName(String fileName) {  
  133. return UUID.randomUUID().toString()+"_"+fileName;  
  134. }  
  135.   
  136.   
  137. public void doPost(HttpServletRequest request, HttpServletResponse response)  
  138. throws ServletException, IOException {  
  139. this.doGet(request, response);  
  140. }  
  141.   
  142.   
  143. }  
详细分析一下华为自研的MetaERP系统中的合并报表流程与规则 华为MetaERP合并报表系统针对其全球化复杂业务量身定制,采用五层自动化架构:统一数据采集、多币种转换、智能对账协同、规则化抵消处理及多维分析输出。系统核心在于可配置的智能规则引擎,涵盖股权合并范围、内部交易抵消、未实现利润计算等复杂场景,实现多准则并行处理。相比传统软件,该系统深度集成业务数据、支持准实时合并,并通过参数化配置快速适应组织变革,成为华为全球财务管控的"数字神经中枢",在效率、准确性和安全性上具有显著优势。 阅读详情

相关推荐

基于OkHttp3+Retrofit2+RxJava3搭建响应式网络框架

本文介绍了一个基于OkHttp3+Retrofit3+RxJava3的响应式网络框架设计。该框架采用分层架构,OkHttp3负责底层网络请求,Retrofit3封装HTTP接口,RxJava3实现响应式流处理。核心亮点包括:1)高度解耦的分层设计;2)统一的异常处理和响应体封装;3)RxJava3实现线程切换和请求管理;4)MVVM架构适配,业务层只需关注数据逻辑。框架提供了完整的实现方案,包括全局配置、拦截器、响应转换、接口声明、仓库封装等组件,并支持生产环境扩展功能如Cookie持久化、Token刷新等

fuge2008的博客 870

tcp二机制写死

/**  * @version 创建时间:2017年6月1日 下午3:02:18  * 类说明  */ import java.io.*; import java.net.*; import java.util.Timer; import java.util.TimerTask; public class TcpServer {   static OutputStream os

wxy123588的博客 270

避坑指南:CST粒子工作室Track Solver常见的5个参数设置错误

本文深入剖析了CST粒子工作室中Track Solver在电子枪仿真时常见的5个关键参数设置错误,包括空间电荷模型选择、发射源定义、材料边界处理、监视器配置及求解器稳定性设置。通过对比错误与正确做法,帮助用户避开陷阱,确保粒子追踪仿真的物理准确性与数值稳定性,从而获得更精准的电子枪仿真结果。

dapp9builder的博客 486

SSH实战 第三天 代码

需求在这 目录 BaseServlet抽取(抽取简单增删改查的代码,以后传个类型就不用写了) BaseDao.java BaseDaoImpl.java 简单调用(仅仅继承时改下 没有动任何配置文件) CustomerDao.java CustomerDaoImpl.java BaseAction的抽取 BaseAction.java LinkmanAction.java 顺...

树叶子的博客 489

量化交易新手入门:从零开始搭建你的第一个Python交易策略(附完整代码)

本文为量化交易新手提供从零开始搭建Python双均线策略的完整指南,涵盖环境配置、数据获取、策略实现及风险管理等关键步骤。通过详细的代码示例和实践建议,帮助读者快速掌握量化交易的核心技术,并避免常见陷阱。文章特别强调Python在量化交易中的技术革新优势,适合希望进入金融科技领域的初学者。

weixin_26905487的博客 443

人类肠道微生物群落代谢建模

MICOMWeb 是款用户友好型网站,专为人类肠道微生物群落代谢建模设计。该网站旨在解决基因组尺度代谢模型(in silico)构建过程中的3大限制:① 使用 MICOM Python 包进行通量平衡分析时对用户 Python 编程知识的要求;② 支持预定义和用户自定义饮食,以生成专属代谢模型;③ 处理宏基因组鸟枪法测序或 16S 扩增子测序获得的真实丰度数据时,所需的高通量计算基础设施。本文展示了 MICOMWeb 的核心功能,用户可轻松开展虚拟实验,为3个已发表数据集的实验验证生成功能性假设。

多组・学・多组学 1169

JSP文件上传下载---上传篇

文件上传到本地磁盘同时将信息出入数据库: 上传JSP页面中利用js能添加多个文件同时上传: <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %>

2309

UNet改进(54):当医学图像分割遇上频域学习与自监督

本文提出了一种改进U-Net的方法,通过频域增强模块和代理任务模块提升医学图像分割性能。频域增强模块在傅里叶空间对特征图进行可学习的频率调制,重点增强高频细节特征;代理任务模块通过图像重建约束编码器保留关键信息。两个模块协同工作,在仅增加5%参数量的情况下,形成空间域、频域和重建约束三条互补的信息路径。该方法特别适用于需要精细边缘分割的医学图像任务,预期能提升5%-10%的边缘分割精度,在小样本场景效果更显著。部署时可移除代理任务模块,不影响推理效率。未来可探索空间自适应频域调制和更丰富的代理任务设计。

2501_91516851的博客 225

01JAVA入门

1 Welcome to java public class ch01Welcome { public static void main(String[] args) { System.out.println("Welcome to Java!"); //运行的快捷键为crtl + F11 } } 2 从控制台输入 package ...

weixin_33985679的博客 178

TensorRT的安装:一步一步教会你如何安装TensorRT

TensorRT(Tensor Runtime)是由NVIDIA开发的一个用于深度学习推理(inference)优化的库,它可以在NVIDIA的GPU上加速神经网络模型的推理过程,从而提高模型的性能和效率。安装完成后,需要将CUDA的安装路径添加到系统环境变量中,以便系统能够找到CUDA的库文件。根据你安装的CUDA版本,将CUDNN的库文件复制到CUDA的安装目录中。要使用TensorRT,首先需要安装NVIDIA的CUDA和cuDNN库,并根据NVIDIA官方文档安装TensorRT。

Science prince的博客 2372

【x265编码器】章节1——x265的lookahead模块分析

目录一、模块功能二、lookahead模块分析1.调用流程2.代码分析Lookahead::addPicture()Lookahead::checkLookaheadQueue()Lookahead::getDecidedPicture()Lookahead::findJob()Lookahead::slicetypeDecide()PreLookaheadGroup::processTasksLookaheadTLD::lowresIntraEstimate()Lookahead::slicetypeAn

vcvdv123的博客 4万+

JSP——编写三个JSP页面,main.jsp、circle.jsp和ladder.jsp,将三个JSP页面保存在同一个Web服务目录中,

编写三个JSP页面,main.jsp、circle.jsp和ladder.jsp, 将三个JSP页面保存在同一个Web服务目录中, main.jsp使用include动作标记加载circle.jsp和ladder.jsp页面。 circle.jsp页面可以计算并显示圆的面积,ladder.jsp页面可以计算并显示梯形的面积。 当circle.jsp和lader.jsp被加载时获取main....

lmm0513的博客 2万+

Python在振动信号处理中的应用(一):振动信号消除多项式趋势项

文章目录一、概述二、最小二乘法去除趋势项原理三、python模块介绍3.1 scikitlearn简介(1)转化器(Transformer)(2)估计器(Estimator)3.2 线性回归LinearRegression3.3 多项式PolynomialFeatures3.4 工作流Pipeline四、python代码实现4.1 构造模拟信号4.2 编写去除趋势项主代码4.3 展示算法效果五、TIPS 一、概述   在振动测试过程中,传感器或采集设备由于自身性能问题或受环境干扰(如温度、供电等影响),容易

白银时代的博客 8578

什么是JSP

JSP全称Java Server Pages即 java服务页面,是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。标签通常以&lt;%开头以%&gt;结束。 JSP是一种Java servlet【JSP 的本质就是一个servlet】,主要用于实现Java web应用程序的用户界面部分。 它和servelt 一样 可以提供 动态的HTML 响应。 不同的是 Servl...

nO0b 1万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

什么是jsp,它有什么用+jsp的本质是什么

jsp的全称是:java servlet pages,java的服务器页面 主要作用:替代servlet程序回传html页面的数据,因为servlet程序回传html页面数据是一件非常繁琐的事情,开发成本和维护成本都极高 如下: 这是servlet回传html页面的方法,超级麻烦 虽然也能打印成功 我们来尝试用jsp回传html页面来试试 我们先来创建一个jsp文件 如图,在web下面我们可以创建一个jsp文件 jsp文件,如下和servlet打印出来的html页面一样,但是这个方便简洁了很多

你好牛蛙! 1万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

JSP语法——[JSP]5

Java 程序片 Java表达式 JSP中的注释   JSP指令标记

ormstq的博客 2637

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

JSP概述——什么是JSP、JSP运行原理

(一)什么是JSP 是JSPJSP全名是JavaServerPages,它是建立在Servlet规范之上的动态网页开发技术。在JSP文件中,HTML代码与Java代码共同存在,其中,HTML代码用来实现网页中静态内容的显示,Java代码用来实现网页中动态内容的显示。为了与传统HTML有所区别,JSP文件的扩展名为.jsp。 JSP技术所开发的Web应用程序是基于Java的,它可以用一种简捷而快速的方法从Java程序生成Web页面,其使用上具有如下几点特征。 •跨平台:由于JSP是基于J...

醉瑾_的博客 1万+

JSP简介——[JSP]3

JSP页面   1.5 JSP与jJava servlet的关系   1.6实验11编写、保存、运行JSP页面

ormstq的博客 1459

你写的JSP就是JSP么?

以前 Java Web是使用Java语言进行web系统开发,以前一般情况下我们写好的Java代码都要打包诚war包,然后放入到Tomcat容器下,启动Tomcat。系统会自动进行解压。 注意:前端收到的一定是HTML、CSS、JS这样的代码。服务器端在JSP没出现前只能调用resp.getWriter().write方法来拼接出前端表示语句。 比如我们创建一个Servlet对象 package c...

sowhat 4500

JSP技术

学习目标 一、JSP概述 二、JSP基本语法 三、JSP隐式对象 学习内容 一、JSP概述 1.1 什么是jsp: 它的英文全称 java server pages ,java服务端页面,它是建立在servlet规范基础上的动态网页开发技术。 java 服务端 页面: 在jsp上可以写java代码,也可以写html标记,它运行在服务器端。 jsp = java + html + jsp自身的一些东西。 为什么会产生jsp技术: 因为在早期没有jsp时,需要servlet向页面写数据,比较麻烦,所以就产生了

m0_55689562的博客 1万+

JSP学习3-JSP语法

一个JSP表达式中包含的脚本语言表达式,先被转化成String,然后插入到表达式出现的地方。由于表达式的值会被转化成String,所以您可以在一个文本行中使用表达式而不用去管它是否是HTML标签。表达式元素中可以包含任何符合Java语言规范的表达式,但是。在JSP中,可以使用表达式标签(<%=,这实际上是一个方便的语法糖,它背后是使用jspWriter的out对象来输出的。因此,使用<%= %>来生成内容是一个简化的方式,等价于使用。

spy47_的博客 1954

JSP——JSP介绍以及运行原理

本文介绍了JSP的基本概念,介绍了一个快速入门案例,并且详细介绍了JSP的运行原理以及它和Servlet的关系

Gavin 9815

JSP起源、JSP的运行原理、JSP的执行过程

JSP起源 在很多动态网页中,绝大部分内容都是固定不变的,只有局部内容需要动态产生和改变。  如果使用Servlet程序来输出只有局部内容需要动态改变的网页,其中所有的静态内容也需要程序员用Java程序代码产生,整个Servlet程序的代码将非常臃肿,编写和维护都将非常困难。   对大量静态内容的美工设计和相关HTML语句的编写,并不是程序员所要做的工作,程序员对此也不一定在行。网页美工

fengdongkun的专栏 2万+

JSP

概念:Java Server Pages,Java服务端页面一种动态的网页技术,其中既可以定义HTML、JS、CSS等静态内容,还可以定义Java代码的动态内容。

didkdjdk的博客 1601

【JSP】第一个JSP程序:Hello,JSP

JSP就是Servlet。如果不会Servlet,就无法理解JSP。通过本文,你将学到如何实现第一个JSP程序,以及JSP程序的实现原理。

极客-多重人格递归 5034
上一篇: css实现按钮透明色
下一篇: jsp上传下载下篇
NissanZh
博客等级 码龄14年 8粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值