Servlet实现图片的上传和显示

本篇文章是在上一篇文章上改进而来

一、图片上传需要引用的jar包

链接:https://pan.baidu.com/s/17FLjlWlNEG5YnS_dl3C8WA
提取码:wbis
在这里插入图片描述

二、最后的结果

在这里插入图片描述

三、更改数据库增加图片路径字段path

在这里插入图片描述

四、前端页面增加图片上传按钮,和上传的复选框

在这里插入图片描述
在这里插入图片描述
代码
在这里插入图片描述
上传的复选框
在这里插入图片描述

  <div id = "upload" class = "white_content">
	    <form action="UploadServlet" method="post" enctype="multipart/form-data" >
	         id:<input type="text" id="up_id" name="up_id"> <br/>
	       	 文件上传:<input type="file" name="file"/> <br/>
	        <input type="submit" value="提交">
	    </form>
	</div>	

 <style> 
    .white_content { 
        display: none; 
        position: absolute; 
        top: 25%; 
        left: 25%; 
        width: 25%; 
        height: 25%; 
        padding: 20px; 
        border: 10px solid orange; 
        background-color: white; 
        z-index:1002; 
        overflow: auto; 
    } 
 </style> 

五、Servlet图片上传

(注意创建UploadServlet文件,并且在doPost()方法中编写代码)
在这里插入图片描述
创建的servlet类
在这里插入图片描述

protected void doPost(HttpServletRequest request,HttpServletResponse response)
            throws ServletException,IOException{
        //说明输入的请求信息采用UTF-8编码方式
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html; charset=UTF-8");
        PrintWriter out = response.getWriter();
        //Servlet3.0中新引入的方法,用来处理multipart/form-data类型编码的表单
     
        //接收id
        String id = request.getParameter("up_id");
        System.out.println("id="+id); 
        
        //接收文件
        Part part = request.getPart("file");
        //获取HTTP头信息headerInfo=(form-data; name="file" filename="文件名")
        String headerInfo = part.getHeader("content-disposition");
        //从HTTP头信息中获取文件名fileName=(文件名)
        String fileName = headerInfo.substring(headerInfo.lastIndexOf("=") + 2, headerInfo.length() - 1);
        //获得存储上传文件的文件夹路径
        String fileSavingFolder = this.getServletContext().getRealPath("/upload");
        //获得存储上传文件的完整路径(文件夹路径+文件名)
        //文件夹位置固定,文件夹采用与上传文件的原始名字相同
        String fileSavingPath = fileSavingFolder + File.separator + fileName;
        System.out.println(fileSavingPath); 
        //如果存储上传文件的文件夹不存在,则创建文件夹
        File f = new File(fileSavingFolder + File.separator);
        if(!f.exists()){
            f.mkdirs();
        }
        
        System.out.println(fileName);
        //将文件的名称传递到服务器
        String sql = "update student set path = '"+fileName+"'  where id = "+id;
        MySqlUtil.update(sql);
        
        //将上传的文件内容写入服务器文件中
        part.write(fileSavingPath);
        //输出上传成功信息
        out.println("文件上传成功~!");    
    }

在这里插入图片描述
编写MySqlUtil.update()方法
上次课程已经创建了,看开头!

    public static int update(String sql) {
        int i =0;
        try {
			Class.forName("com.mysql.jdbc.Driver"); // 1.加载驱动
			//2.建立连接
			Connection connection = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/school", "root", "2020");
			Statement statement = (Statement) connection.createStatement();
			//4.执行sql语句
			statement.executeUpdate(sql);
			if(statement !=null) {
				statement.close();
			}
			if (connection !=null) {
				connection.close();
			}
			i++;
		} catch (Exception e) {
			// TODO Auto-generated catch block
			System.out.println("找不到驱动类,加载失败");
			e.printStackTrace();
		}    
        return i;
    }

@MultipartConfig注解
在这里插入图片描述

文件上传的Servlet上添加一个@MultipartConfig注解,否则服务器代码就无法使用getPart()方法,同时y也会影响普通字段的数据获取。

六、测试Servlet上传,并获取上传后的路径

在这里插入图片描述

七、配置路径,展示图片

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
增加图片展示区域
在这里插入图片描述

八、最终结果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/406715.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT 4.0 升级指南

1.ChatGPT 是什么&#xff1f; ChatGPT 是由 OpenAI 开发的一种基于人工智能的聊天机器人&#xff0c;它基于强大的语言处理模型 GPT&#xff08;Generative Pre-trained Transformer&#xff09;构建。它能够理解人类语言&#xff0c;可以为我们解决实际的问题。 1.模型规模…

vue+node.js美食分享推荐管理系统 io551

&#xff0c;本系统采用了 MySQL数据库的架构&#xff0c;在开始这项工作前&#xff0c;首先要设计好要用到的数据库表。该系统的使用者有二类&#xff1a;管理员和用户&#xff0c;主要功能包括个人信息修改&#xff0c;用户、美食类型、美食信息、订单信息、美食分享、课程大…

Camunda7.18流程引擎启动出现Table ‘camunda_platform_docker.ACT_GE_PROPERTY‘的解决方案

文章目录 1、问题描述2、原因分析3、解决方案3.1、方案一&#xff1a;降低mysql版本3.2、方案二&#xff1a;增加nullCatalogMeansCurrent参数&#xff08;推荐&#xff09; 4、总结 1、问题描述 需要在docker中&#xff0c;部署Camunda流程引擎。通过启动脚本camunda-platfor…

【LeetCode-337】打家劫舍III(动态规划)

目录 题目描述 解法1&#xff1a;动态规划 代码实现 题目链接 题目描述 在上次打劫完一条街道之后和一圈房屋后&#xff0c;小偷又发现了一个新的可行窃的地区。这个地区只有一个入口&#xff0c;我们称之为“根”。 除了“根”之外&#xff0c;每栋房子有且只有一个“父“…

JVM内存随着服务器内存的升高而升高问题排查

一、故障描述 公司测试环境和线上环境&#xff0c;都会有&#xff1a;JVM内存随着服务器内存的升高而升高 这种问题 二、排查 1、linux服务器上使用htop查看java项目内存占比&#xff0c;给最大最小推内存300m&#xff0c;但是实际上超出一倍 2、排查方案 a、通过后面的学习…

Games 103 作业四

Games 103 作业四 第四次作业就是流体模拟了&#xff0c;作业中给了若干的实现步骤&#xff0c;以及一些模板代码。 首先第一步&#xff0c;在update函数的开头&#xff0c;加载水面mesh的高度&#xff0c;然后在update的结束时&#xff0c;把计算后的高度更新到mesh中。这个很…

CSDN原力值怎么提升?

文章目录 前言一、原力值怎么看二、提升原力值的方法1.原力值↑2.原力值↓提示!!!禁止在csdn网站内进行违规行为!!! 结束语 前言 在前面一篇文章中&#xff0c;我讲了付费收看的条件&#xff0c;有需要的先把网址收藏起来&#xff01; https://blog.csdn.net/m0_69481332/arti…

【坑】Spring Boot整合MyBatis,一级缓存失效

一、Spring Boot整合MyBatis&#xff0c;一级缓存失效 1.1、概述 MyBatis一级缓存的作用域是同一个SqlSession&#xff0c;在同一个SqlSession中执行两次相同的查询&#xff0c;第一次执行完毕后&#xff0c;Mybatis会将查询到的数据缓存起来&#xff08;缓存到内存中&#xf…

【Java面试系列】Nginx

目录 为什么要用Nginx&#xff1f;为什么Nginx性能这么高&#xff1f;Nginx 是如何实现高并发的&#xff1f; Nginx怎么处理请求的&#xff1f;Nginx的工作流程 给 favicon.ico 和 robots.txt 设置过期时间; 这里为 favicon.ico 为 99 天,robots.txt 为 7 天并不记录 404 错误日…

前沿科技速递——YOLOv9

随着YOLO系列的不断迭代更新&#xff0c;前几天&#xff0c;YOLO系列也迎来了第九个大型号的更新&#xff01;YOLOv9正式推出了&#xff01;附上原论文链接。 arxiv.org/pdf/2402.13616.pdf 同样是使用MS COCO数据集进行对比比较&#xff0c;通过折线图可看出AP曲线在全方面都…

2024比较赚钱的项目是什么?亲身经历,月入过万!

我是电商珠珠 年后找项目这件事&#xff0c;成为了部分人所焦虑的一点&#xff0c;有的想要兼职&#xff0c;有的在考虑全职。至于做什么还没有一丝头绪。大家都知道短视频很火&#xff0c;于是有直播能力的人就吃上了流量红利&#xff0c;开始做达人带货&#xff0c;拍视频接…

Linux下“一切皆文件”

“Linux下一切皆文件” Linux 下一切皆文件这个说法是指 Linux 系统中的一种设计理念&#xff0c;即将所有设备、资源和进程等抽象为文件或文件夹的形式。这种设计理念的好处在于统一了对待不同类型资源的方式&#xff0c;提供了统一的接口和工具来进行管理和操作。 Linux 下…

Flutter Slider自定义滑块样式 Slider的label标签框常显示

1、自定义Slider滑块样式 Flutter Slider控件的滑块系统样式是一个圆点&#xff0c;thumbShape默认样式是RoundSliderThumbShape&#xff0c;如果想要使用其它的样式就需要自定义一下thumbShape&#xff1b; 例如需要一个上图样式的&#xff08;圆点半透明圆形边框&#xff09…

freeswitch 权威指南 --- 高级篇

官网文档&#xff1a;https://developer.signalwire.com/freeswitch/FreeSWITCH-Explained/ 关于 freeswitch 的公开教程&#xff1a;https://zhuanlan.zhihu.com/p/451981734 内容来自 《FreeSWITCH 权威指南》&#xff1a;目录&#xff1a;https://juejin.cn/post/702058079…

2024全国水科技大会暨流域水环境治理与水生态修复论坛(六)

论坛召集人 冯慧娟 中国环境科学研究院流域中心研究员 刘 春 河北科技大学环境与工程学院院长、教授 一、会议背景 为深入贯彻“山水林田湖是一个生命共同体”的重要指示精神&#xff0c;大力实施生态优先绿色发展战略&#xff0c;积极践行人、水、自然和谐共生理念&…

软件游戏报错d3dcompiler_43.dll缺失,提供多个方法修复d3dcompiler_43.dll

当电脑系统缺失 d3dcompiler_43.dll 文件时&#xff0c;尝试打开依赖于该文件的软件时&#xff0c;通常会遇到以下几种情况&#xff1a; 启动失败&#xff1a; 软件在启动过程中可能会立即停止响应或弹出错误消息&#xff0c;指出“找不到 d3dcompiler_43.dll”、“无法启动此…

LabVIEW开发FPGA的高速并行视觉检测系统

LabVIEW开发FPGA的高速并行视觉检测系统 随着智能制造的发展&#xff0c;视觉检测在生产线中扮演着越来越重要的角色&#xff0c;尤其是在质量控制方面。传统的基于PLC的视觉检测系统受限于处理速度和准确性&#xff0c;难以满足当前生产需求的高速和高精度要求。为此&#xf…

Windows 远程控制 Mac 电脑怎么操作

要从 Windows 远程控制 Mac 电脑&#xff0c;您可以使用内置 macOS 功能或第三方软件解决方案。以下是一些方法&#xff1a; 一、使用内置 macOS 功能&#xff08;屏幕共享&#xff09; 1、在 macOS 上启用屏幕共享 转至系统偏好设置 > 共享&#xff1b;选中“屏幕共享”…

2024-02-20(DataX,Spark)

1.Oracle利用DataX工具导出数据到Mysql。Oracle利用DataX工具导出数据到HDFS。 只是根据导入导出的目的地不同&#xff0c;DataX的Json文件书写内容有所不同。万变不离其宗。 书写的Json格式的导入导出规则文件存放再Job目录下的。 2.Spark概念 Apache Spark是用于大规模数…

使用向量数据库pinecone构建应用06:日志系统异常检测 Anomaly Detection

Building Applications with Vector Databases 下面是这门课的学习笔记&#xff1a;https://www.deeplearning.ai/short-courses/building-applications-vector-databases/ Learn to create six exciting applications of vector databases and implement them using Pinecon…