demo项目开发笔录(头像上传)

利用JSP和Servlet实现网页头像上传功能 htmltable {th, td {th {pre {简介:在Web应用开发中,使用JSP和Servlet技术来实现用户上传头像的功能十分常见。JSP负责创建包含上传表单的用户界面,而Servlet处理实际的文件上传逻辑,包括验证文件类型和大小,存储文件,并可能更新用户的数据库记录。文章将提供JSP上传表单和Servlet文件处理的实现示例,以及可能需要的文件预览和数据库操作。掌握这些技术对于开发高效和安全的Web应用程序至关重要。 阅读详情

这里记录下一个完整的头像上传过程,实用部分笔者会指出,嘿嘿嘿。

工具:idea

css文件:w3.css

声明,笔者没有使用ajax来上传头像,原因是头像为单个,内容小,有需要转ajax的简单修改即可。

步骤:首先是绘制静态页面(包括修改默认上传样式),然后就是上传头像,最后反馈上传结果

这里直接给出主要html代码:

<div class="w3-container w3-white w3-round" style="margin-top: 20px;">
    <div class="w3-text-grey" style="margin-top: 5px;">头像上传</div>
    <hr style="margin-top: 5px"/>
    <form action="${pageContext.request.contextPath}/user/upLoadImg.html" method="post" enctype="multipart/form-data" name="upload_form">
        <div style="margin-left: 0px">
            <table class="w3-table w3-text-dark-grey" style="font-size: 13px;">
                <tr>
                    <td style="text-align: right;vertical-align: middle;width: 18%">预览头像</td>
                    <td>
                        <span style="display: block;width: 50px;">
                            <img src="${pageContext.request.contextPath}${currentUser.picUrl}" style="width: 100%;height: 50px" id="currentImg" />
                        </span>
                    </td>
                </tr>
            </table>
        </div>
        <div style="margin-left: 8.5%;margin-top: 10px">
            <span class="w3-text-dark-grey" style="font-size: 13px">选择一个图片文件:</span>
            <input id="choiceImg" type="button" class="w3-btn w3-teal w3-tiny" style="width: 60px" value="浏览...">
            <span id="imgName" class="w3-text-dark-grey" style="font-size: 13px"></span>
            <input style="display: none" id="realChoiceImg" name="file" type="file" accept="image/jpeg,image/png,image/jpg"/><br><br>
            <span class="w3-text-grey" style="font-size: 13px">支持 2MB 以内的 PNG / JPG / JPEG 文件</span>
        </div>
        <div style="text-align: center;margin-top: 10px">
            <input class="w3-btn w3-teal w3-small" style="width: 80px;" type="submit" value="上传头像">
        </div>
    </form>
    <hr style="margin-top: 5px"/>
    <div class="w3-text-dark-grey" style="font-size: 13px;margin-bottom: 10px">
        <span>关于头像的规则</span><br><br>
        <span><strong>· </strong>禁止使用任何低俗或者敏感图片作为头像</span><br>
        <span><strong>· </strong>如果你是男,请不要用女人的照片作为头像,这样可能会对其他人产生误导</span>
    </div>
</div>


<%--模态框--%>
    <div id="alert_warn" class="w3-modal">
        <div class="w3-modal-content w3-animate-top w3-card-8" style="width: 30%">
            <header class="w3-container w3-orange" >
                <span onclick="document.getElementById('alert_warn').style.display='none'" class="w3-closebtn">×</span>
                <p style="color: white">提醒</p>
            </header>
            <div class="w3-container" style="height: 100px;text-align: center">
                <br>
                <span class="" id="alert_content"></span>
            </div>
        </div>
    </div>

下面是js代码:

<%--js--%>
    <script>
        $(document).ready(function () {
            $("#choiceImg").click(function () {
                $("#realChoiceImg").click();
                $("#realChoiceImg").on('change',function(){
                    var filePath = $(this).val(),         //获取到input的value,里面是文件的路径
                        fileFormat = filePath.substring(filePath.lastIndexOf(".")).toLowerCase(),
                        src = window.URL.createObjectURL(this.files[0]); //转成可以在本地预览的格式

                    // 检查是否是图片
                    if( !fileFormat.match(/.png|.jpg|.jpeg/) ) {
//                        alert('上传错误,文件格式必须为:png/jpg/jpeg');
                        $("#alert_warn").css("display","block");
                        $("#alert_content").text("上传错误,文件格式必须为:png/jpg/jpeg");
                        return;
                    }
                    $('#currentImg').attr('src',src);
                })
//                $("#imgName").text("已选择");
            })

            /*提示用户名重复*/
            if("${flag}"==1){
                $("#alert_warn").css("display","block");
                $("#alert_content").text("上传成功");
            }
        })
    </script>

关于css和js的实用部分请看对应笔录(二)的内容,这里追加说明两点:

一、修改原file上传按钮的样式,笔者的做法是:间接修改,这里通过w3.css简单生成一个相对美观的按钮(浏览...),然后隐藏起真实效果的file按钮,通过js,在点击浏览按钮后,也执行file按钮的click事件,达到间接修改的目的。

二、记录一个w3.css模态框的使用,这里笔者修改成了一个提醒效果,提醒内容可以在js内设置

整体效果如下:


然后是上传头像的java后台内容:

	public String upLoadImg(MultipartFile[] files, HttpServletRequest request, HttpServletResponse response) {
		response.setContentType("text/html;charset=utf-8");
		HttpSession session = request.getSession();
		//得到上传文件的保存目录,将上传的文件存放于WEB-INF目录下,不允许外界直接访问,保证上传文件的安全
		ServletContext application = session.getServletContext();
		String path="/static/images/frontstage/head_img";
		String realPath = application.getRealPath(path);
		File pathFile = new File(realPath);
		if(!pathFile.exists()&&!pathFile.isDirectory()){
			pathFile.mkdirs();
		}
		String finalPath="";
		String flag="false";
		if(files!=null&&files.length>0){
			for(int i =0;i<files.length;i++){
				MultipartFile file = files[i];
				try {
					String uuPath=Until.getUUID();
					finalPath = realPath +"/"+ uuPath+"_"+file.getOriginalFilename();
					file.transferTo(new File(finalPath));
					String username = (String) SecurityUtils.getSubject().getPrincipal();
					String savePath=path+"/"+uuPath+"_"+file.getOriginalFilename();
					userDao.saveImgUrl(username,savePath);
					Users user=getUser(username);
					SecurityUtils.getSubject().getSession().setAttribute("currentUser",user);
					flag="true";
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		}
		response.reset();
		return flag;
	}

通过name为file的input获取头像内容,使用spring框架自带的上传方法完成上传目的,同时保存上传路径。

通过flag标记上传是否成功,在页面弹出模态,完成信息反馈



JSP与Servlet实现图片上传及数据库存储全教程 在数据库中,尤其是对于图像、视频、大型文档等二进制文件,使用BLOB(Binary Large Object)字段是一个非常普遍的选择。BLOB字段是SQL标准定义的四种大型对象(LOB)类型之一,专门用于存储大量的二进制数据。在Web应用中,存储图片到数据库的好处是可以将图片和业务数据关联在一起,便于管理和检索。例如,可以容易地实现对用户上传的头像或者图片附件进行管理。 阅读详情

相关推荐

Servlet和jdbc登录示例源代码(内附数据库脚本)

Servlet和jdbc登录示例源代码(内附数据库脚本)博客链接:http://hyz301.iteye.com/blog/2226197

HTML5实现头像的上传

HTML5实现头像的上传 这是利用form-data给后台传输数据,来实现头像的上传加载! html代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=, initial-...

qq_44891434的博客 5642

嵌套交叉验证的‘双循环’哲学:为什么你的模型评估总是不准?

本文深入探讨了嵌套交叉验证(Nested Cross-Validation)在机器学习模型评估中的关键作用,揭示了传统交叉验证方法存在的偏差问题。通过双重循环设计,嵌套交叉验证有效隔离数据,提供无偏评估,显著提升模型在真实场景中的性能预测准确性。文章还提供了工程实践中的优化策略和量化分析,帮助开发者在计算成本与评估精度之间找到平衡。

b3n4m5q6w7的博客 225

JAVA项目:用户界面——修改密码+上传图片头像(mysql)

此DEMO包含一下功能 用户界面(显示头像、学号、电话号码、性别) 修改密码(密码检验+两次密码是否一致的检验) 上传头像(这里采用的是先用io流将图片传到工程文件下,把图片路径保存到数据库中) 用户界面 用户界面 customerUI.jsp <%@ page contentType="text/html;charset=UTF-8" %> <html lang="en"> <head> <meta charset="UTF-8"> &

立志成为炼丹师? 4036

从问卷到结论:手把手教你用SPSS 28完成一份完整的社科数据分析报告

本文详细介绍了如何使用SPSS 28完成社会科学研究中的数据分析报告,从问卷数据导入、清洗到描述性和推断性统计分析,再到结果呈现与报告撰写。通过实际案例演示,帮助研究者掌握SPSS 28的核心功能,提升数据分析效率与报告质量。

weixin_28717431的博客 249

旋转矩阵推导

推导前提: 坐标使用右手坐标系,角度逆时针旋转为正。 绕X轴旋转角度为 俯仰角 即Pitch 绕Y轴旋转角度为 偏航角 即Yaw(Head) 绕Z轴旋转角度为 翻滚角 即Roll 一、平面二维坐标点的旋转 如右图所示,根据三角函数关系,可以列出向量OP与OP’的坐标表示形式: x = |OP|•cosα x′ = |OP|•cos(α+β) y = |OP|•sinα y′ = |OP|•sin(α+β) 将P′(x′,y′)表达式展开: x′ =

suixinger_lmh的随笔 1384

教师管理平台-----servlet+html修改个人资料及更改头像

第二个功能修改个人资料以及更改头像 目录结构和其他代码接上https://blog.youkuaiyun.com/ignite_/article/details/90453076 前台html代码: 个人中心加上: <div> 修改个人资料 <br> <form action="changeperson" method="post"> nic...

ignite_的博客 3315

第4.4节:保护轴承与安全系统

飞轮储能系统的保护轴承是磁悬浮失效时的最后安全屏障,其设计需满足非干涉性、高可靠性和有限寿命承载原则。转子跌落过程包括自由下落、碰撞、进动和滑行减速等复杂非线性阶段,产生远超常规工况的冲击载荷。保护轴承需具备极限冲击容量、高温耐受性和抗卡死能力。系统采用多层级安全架构,结合故障诊断与健康管理,通过监测振动、电流等参数实现预测性维护。安全停机序列有序结合主动制动与被动摩擦制动,确保系统在极端工况下的安全。保护轴承类型多样,需根据系统规模与可靠性要求合理选择。

技术工作者 227

servlet修改用户头像_SSH系列:(10)用户管理-用户头像上传

用户头像上传是使用Struts的上传功能,因此需要遵循Struts上传文件的方式。基本步骤:1.在JSP中使用 HTML 表单上传文件,须把 HTML 表单的 enctype 属性设置为 multipart/form-data, method 属性设置为 post。HTML表单中包含 使用户能选择上传文件。2. Action 中添加三个文件上传相关的属性。上传单个文件属性格式属性一:类型为Fi...

weixin_39637203的博客 311

HTML5+CSS3+JS小实例:焦点图波浪切换动画特效

实例:焦点图波浪切换动画特效。字体图标库:Font Awesome。技术栈:HTML+CSS+JS。

艾恩小灰灰的博客 907

FanucROBOGUIDE软件二次开发:使用ROBOGUIDEAPI进行编程

菜单栏:位于界面顶部,提供文件、编辑、视图、插入、格式、工具、窗口和帮助等选项。工具栏:包含常用的工具按钮,如新建、打开、保存、运行、停止、机器人控制等。工作站视图:显示工作站的3D模型,用户可以在这里放置机器人、工件、工具和其他设备。机器人控制面板:用于控制机器人运动,包括手动移动、程序编辑和运行。程序编辑器:在这里可以编写和编辑机器人程序,支持Fanuc的R-30iB Plus和R-30iB控制柜的程序格式。状态栏:显示当前工作站的状态信息,如机器人位置、程序状态等。

kkchenjj的博客 1408

SonicNote聆犀AI录音卡 × WorkBuddy:安装与八大实战场景全解析

聆犀AI录音卡与WorkBuddy(腾讯小龙虾)深度整合,通过SonicNote妙记助手实现语音内容智能处理。安装仅需在WorkBuddy的SkillHub搜索安装,绑定妙记API Key即可。 八大核心应用场景: 会议录音自动生成PPT 客户访谈转产品分析报告 销售拜访同步CRM系统 内容创作多平台适配 投资会议关键信息提取 培训课程生成知识图谱 法律咨询自动建档 医疗问诊结构化记录 实现从语音采集到智能处理的闭环,工作效率提升3倍以上。支持腾讯文档、销售易等平台无缝对接,是职场人士的AI效率倍增器。

2601_96238755的博客 751

ADS基础教程23 - 有限元电磁仿真(FEM)可视化操作

一、引言 二、FEM可视化操作流程1.打开可视化界面2.查看介质的网格3.设置网格颜色4.选择网格5.传感器选择6.编辑传感器7.选择频率8.动画 三、总结介绍了在ADS中如何进行FEM仿真场视图操作过程。

XZ_ZC的博客 1815

记录写项目时遇到的问题——小程序篇

记录写项目时遇到的问题——小程序篇

maple_leaf_red的博客 548

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

关于如何上传用户头像(JSP+Servlet)的思路

仅仅给的是思路,但愿你也能有点儿启发,我也学习学习 最近需要做一个类似百度贴吧的东东,需要搞一个类似用户上传头像的东西,找了好多资料,也没搞出来,甚至那个JQuery插件uploadify都找了来试试,网上没找到个称心的例子来研究,自己配置也一直出错。但是大概思路就是如下的 1,【jsp】:添加一个form表单,一个input浏览图片按钮,一个input上传按钮,选择图片(可以加文件类型过滤)

kayzhao的专栏 7517

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

上传本地文件 Servlet 实例

上传头像 永久保存文件 并且用户可切换 一,前端 部分 <body> <div class="layui-col-md12" style="height: 100%"> <div class="layui-card-header layui-bg-green layui-font-20 ">${UserSession.getUserName()}的信息管理</div> <div class="layui-car...

p0_0q9527的博客 328

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

2021-01-16

Mvc+jsp+servlet实现从数据库图片的切换和添加 此次采用的是Mvc模式+jsp+servlet+C3p0来实现的,在实训中也算是唯一拿的出手的了,希望能对你有所帮助.,运行效果图如下: 点击图片就能切换背景图片,也可以进行添加. 思路: 1.新建一个数据表(imges表)用来存放图片的: 2.把所需的jar添加进去, c3p0配置好,在搭建Mvc框架模型,dao(层), domain(实体类),service(层),servlet(层),util(工具类)层, 拦截器(防止传参

weixin_44353851的博客 240

jsp文件上传 头像上传

前言: 这篇文章简单介绍了文件上传的代码和我遇到的一些问题以及基于我实现的头像上传(不包含框架,仅仅达到目标即可) 一、整体效果: (1)头像显示 (2)文件上传 (3)完成头像修改 (4)查看文件目录(这里已经上传成功而且文件名字也被更改了) 二、代码: (1)首先是jsp页面部分:用form提交文件信息 < form action=“这里是servlet路径” method=" post(用post去处理) " enctype=“multipart/form-data” > 设置in

m0_46217359的博客 2557

Java web实现头像的上传以及读取显示

最近在做一个学生的信息管理系统,其中就有一个功能是要上传头像以及实现显示的功能,那么要如何实现呢? 思路:1.如果要上传头像并要显示的话,可以创建一个工具类来将获取的头像另外复制一份放在工程目录下,并修改其文件名(防止名字相同有冲突)。 2.要创建两个表,一个user表,用于存放学生的学号、姓名、密码等信息的,另一个img表用于存放该学生的头像的存储路径、头像名称、以及该学生对应的ID。 3.在h...

鹿谷門実的博客 1万+

(仿牛客社区项目)Java开发笔记2.6:设置用户的头像和修改密码功能

(仿牛客社区项目)Java开发笔记2.6:设置用户的头像和修改密码功能

weixin_45700663的博客 1114

用ssm框架上传头像,从前端到后端的详细代码

我的方法是先上传图片到服务器上,返回一个图片的路径,之后再修改数据库头像字段的路径,从而达到头像修改的方法。 首先在pom.xml里导入依赖包 <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupl...

qq_39381892的博客 4941

带头像的用户显示功能

作为一个javaweb的小白,也不知以前做了多少demo,但始终有一个遗憾,我的数据库的用户没有图像,只有姓名和id等等其他属性,今天想起来,觉得是一种遗憾,于是我决定研究一把,做一个完美的demo,让我数据库里面的用户,也能有一个美丽图像。 1.我首先帮我的表结构以图片,展示出来,表很容易 表其实特表简单,我就弄了几个简单字段,然后注意的就是我存用户图像存的是地址。 2.这

blue_sky的博客 1410

头像上传

1.controller代码 @ApiOperation(value = "用户头像修改", notes = "用户头像修改", httpMethod = "POST") @PostMapping("uploadFace") public IMOOCJSONResult uploadFace( @ApiParam(name = "userId", value = "用户id", required = true) @RequestParam S

qingwenc的博客 243

3.用户上传头像

·

weixin_45780538的博客 1687

java实现用户头像上传和修改功能

我整理的一些关于【Java】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://d.51cto.com/bLN8S1Java 实现用户头像上传和修改功能 在当今的互联网时代,用户头像是个人形象的重要组成部分。用户通常希望能够在其账户中轻易上传和修改头像。本文将介绍如何使用 Java 实现用户头像的上传和...

weixin_40904087的博客 549
上一篇: demo项目开发笔录(页面技巧)
下一篇: demo项目开发笔录(UEditor实践)
gcc_front
博客等级 码龄9年 16粉丝 98原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值