广告
返回顶部
首页 > 资讯 > 精选 >Java怎么通过JSP实现头像自定义上传
  • 529
分享到

Java怎么通过JSP实现头像自定义上传

2023-07-04 19:07:45 529人浏览 安东尼
摘要

今天小编给大家分享一下Java怎么通过jsP实现头像自定义上传的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。开发环境整体使用

今天小编给大家分享一下Java怎么通过jsP实现头像自定义上传的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

    开发环境

    整体使用了Maven的开发环境   数据库操作使用的是mybatis进行管理   前台页面的显示操作则是通过jsp+servlet   数据库采用mysql数据库

    开发过程

    1、JSP前台页面

    首先你需要在你的jsp页面中准备好一个图片上传的<fORM>表单,一开始<input> 标签中的value值可以先设置为默认值,到后面连接好数据库,写好servlet之后再进行替换,这里就不在具体展示过程了,直接一步到位。另外本次举例的具体呈现的效果样式如下图所示:

     <div class="modal modal-profile" >   <div class="hd"><h5 class="tt" >我的资料</h5><a id="a_close" class="close">×</a></div>    <div class="bd">        <form class="form-horizontal" action="../usersInfo.do" method="post" enctype="multipart/form-data">            <div class="avatar"><img id="showupimg" src="img/upload/image/<%=usersInfo.getUava()%>" alt="头像">                <a class="upload">点击更换</a><input id="uploadimg" type="file" name="file" accept="image/png, image/jpeg, image/gif, image/jpg" class="upload-input">                <input type="hidden" name="uname" value="<%=usersInfo.getUname()%>"/>            </div>            <div class="form-group"><label class="control-label">昵称</label>                <div class="control-form"><input name="unname" type="text" placeholder="请输入昵称" class="form-control" value="<%=usersInfo.getUnname()%>"><!----></div>            </div>            <div class="form-group"><label class="control-label">签名</label>                <div class="control-form">                    <textarea name="signview" rows="5" placeholder="请输入签名,字数不超过100字" class="form-control"><%=usersInfo.getUpersonal()%></textarea>                </div>            </div>            <div class="ft">                <input type="submit" id="btn_save" class="btn btn-primary" value="保存"/>                <button type="button" id="btn_cancel" class="btn btn-default">取消</button>            </div>        </form>    </div>
    样式图:

    Java怎么通过JSP实现头像自定义上传

    JS操作

    本来这里想通过ajax来完成的,因为通过servlet重定向会页面时,页面总会闪一下,影响了用户体验,但是由于赶时间,就没有把它改成ajax,以后有时间的话可能会补一段,现在先这样吧。

        $("#uploadimg").change(function () {        var url, imgbase64;        //获取file对象URL        if (navigator.userAgent.indexOf("MSIE") >= 1) { // IE            url = document.getElementById('uploadimg').value;        } else if (navigator.userAgent.indexOf("Firefox") > 0) { // Firefox            url = window.URL.createObjectURL(document.getElementById('uploadimg').files.item(0));        } else if (navigator.userAgent.indexOf("Chrome") > 0) { // Chrome            url = window.URL.createObjectURL(document.getElementById('uploadimg').files[0]);        }        // 创建Image对象        var image = new Image();        image.src = url;        image.onload = function () {            imgbase64 = getBase64Image(image);            $("#showupimg").attr("src",image.src);        }    });

    2、数据库的设计

    关于数据库表做的其实还是比较简单的,我做的其实是分了两个表,一个Users表,一个UsersInfo表。Users表用来存放用户的账号、密码和登录时间;UsersInfo表用来存储对应用户的用户信息,如昵称、头像、性别、年龄等等,这里Users表用不到,所以只展示了UsersInfo表。

    数据库表:

    Java怎么通过JSP实现头像自定义上传

    实体类:UsersInfo.java
    package com.skdsc.domain.login;public class UsersInfo {    private String uname;    private String unname;    private Sex usex;    private String uage;    private String uava;    private String uqq;    private String upersonal;    public UsersInfo() {    }    public UsersInfo(String uname, String unname, Sex usex, String uage, String uava, String uqq, String upersonal) {        this.uname = uname;        this.unname = unname;        this.usex = usex;        this.uage = uage;        this.uava = uava;        this.uqq = uqq;        this.upersonal = upersonal;    }    public String getUname() {        return uname;    }    public void setUname(String uname) {        this.uname = uname;    }    public String getUnname() {        return unname;    }    public void setUnname(String unname) {        this.unname = unname;    }    public Sex getUsex() {        return usex;    }    public void setUsex(Sex usex) {        this.usex = usex;    }    public String getUage() {        return uage;    }    public void setUage(String uage) {        this.uage = uage;    }    public String getUava() {        return uava;    }    public void setUava(String uava) {        this.uava = uava;    }    public String getUqq() {        return uqq;    }    public void setUqq(String uqq) {        this.uqq = uqq;    }    public String getUpersonal() {        return upersonal;    }    public void setUpersonal(String upersonal) {        this.upersonal = upersonal;    }}

    3、数据库操作

    这里用到的数据库操作主要是两个:findByUserInfoName()updateUsersInfo()

    UsersMapper
    import com.skdsc.domain.login.Users;import com.skdsc.domain.login.UsersInfo;import org.apache.ibatis.annotations.Param;public interface UsersMapper {    Users findByUserName(@Param("parUserName") String parUserName);    UsersInfo findByUsersInfoName(@Param("parUserName") String parUserName);    int updateUtime(@Param("uname") String uname,@Param("newUtime") String newUtime);    int updateUsersInfo(@Param("uname") String uname,@Param("newUnname") String newUnname,@Param("newUpersonal") String newUpersonal,@Param("newUava") String newUava);}
    UsersMapper.xml
    <mapper namespace="com.skdsc.mappers.login.UsersMapper">    <sql id="selStr">uid,uname,upwd,utime</sql>    <sql id="selStr1">uname,unname,uage,usex,uava,uqq,upersonal</sql>    <resultMap id="newUsersInfo" type="com.skdsc.domain.login.UsersInfo">        <result property="uname" column="uname"/>        <result property="unname" column="unname"/>        <result property="uage" column="uage"/>        <result property="uava" column="uava"/>        <result property="uqq" column="uqq"/>        <result property="upersonal" column="upersonal"/>        <!--嵌套对象标签-->        <association property="usex" javaType="com.skdsc.domain.login.Sex">            <id property="sid" column="sid"/>            <result property="sname" column="sname"/>        </association>    </resultMap>    <!-- 根据学号查询用户表 -->    <select id="findByUserName" resultType="com.skdsc.domain.login.Users">        SELECT <include refid="selStr" /> FROM Users where uname = #{parUserName,jdbcType=VARCHAR}    </select>    <!-- 根据学号查询用户信息表 -->    <select id="findByUsersInfoName" resultType="com.skdsc.domain.login.UsersInfo">        SELECT <include refid="selStr1" /> FROM UsersInfo where uname = #{parUserName,jdbcType=VARCHAR}    </select>    <!-- 更新最近一次的登录时间 -->    <update id="updateUtime">         UPDATE Users SET utime = #{newUtime} where uname = #{uname}    </update>    <!-- 更新个人资料(头像、昵称、个人签名) -->    <update id="updateUsersInfo">        UPDATE UsersInfo <trim prefix="set" suffixOverrides=",">        <if test="newUnname !=null">unname = #{newUnname},</if>        <if test="newUpersonal !=null">upersonal = #{newUpersonal},</if>        <if test="newUava !=null">uava = #{newUava}</if>    </trim>        WHERE uname = #{uname}    </update></mapper>

    4、Servlet

    这里主要是先获取<form>表单提交上来的数据,对数据进行处理,获得其路径以及文件后缀,并利用年月日时分秒+8位随机数生成一个新的文件名,最后通过DownloadImage工具类中的download方法将图片下载到本地的指定目录。

    import static com.lazy.servlet.utils.DownloadImage.download;import static com.lazy.servlet.utils.TimeRandom.createOrderCode;@WEBServlet("/usersInfo.do")@MultipartConfigpublic class UsersInfoAction extends httpservlet {    private static final long serialVersionUID = 1L;    @Override    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        request.setCharacterEncoding("UTF-8");        String unname = request.getParameter("unname");        String upersonal = request.getParameter("signview");        String uname = request.getParameter("uname");        System.out.println(unname + upersonal + uname);        try {            //设置基础路径            String basePath = "http://localhost:8080/smartcampus_web_war/center/img/upload/image/";            //获取上传的文件            Part part = request.getPart("file");            //获取请求的信息            String name=part.getHeader("content-disposition");            //获取上传文件的目录            String root=request.getServletContext().getRealPath("/center/img/upload/image");            System.out.println("测试上传文件的路径:"+root);            //获取文件的后缀            String str=name.substring(name.lastIndexOf("."), name.length()-1);            System.out.println("测试获取文件的后缀:"+str);            //生成一个新的文件名,不重复,数据库存储的就是这个文件名,不重复的            String filename=root+"\\"+createOrderCode()+str;            System.out.println("测试产生新的文件名:"+filename);            //获取上传到本地服务器的图片路径            String strimg = filename.substring(filename.lastIndexOf("\\")+1);            String imgsrc = basePath + strimg;            System.out.println("测试获取图片名称:"+strimg);            //上传文件到指定目录,不想上传文件就不调用这个            part.write(filename);            //下载到本地指定目录            download(imgsrc, strimg,"E:\\Studyspaces\\Intellij idea\\IdeaProjects\\sk170403\\smartcampus_web\\src\\main\\webapp\\center\\img\\upload\\image");            SqlSession sqlSession = MybatisUtil.getSqlSession();            UsersMapper usersMapper = sqlSession.getMapper(UsersMapper.class);            int updateUsersInfoflag = usersMapper.updateUsersInfo(uname,unname,upersonal,strimg);            if (updateUsersInfoflag != 0){                sqlSession.commit();            }else {                sqlSession.rollback();            }        } catch (Exception e) {            e.printStackTrace();        }        response.sendRedirect("center/zfcenter.jsp");    }    @Override    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        this.doGet(req, resp);    }}

    5、工具类

    DownloadImage:下载指定路径下的文件到本地指定目录
    package com.lazy.servlet.utils;import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import java.net.URL;import java.net.URLConnection;public class DownloadImage {        public static void download(String urlString, String filename,String savePath) throws Exception {        // 构造URL        URL url = new URL(urlString);        // 打开连接        URLConnection con = url.openConnection();        //设置请求超时为5s        con.setConnectTimeout(5*1000);        // 输入流        InputStream is = con.getInputStream();        // 1K的数据缓冲        byte[] bs = new byte[1024];        // 读取到的数据长度        int len;        // 输出的文件流        File sf=new File(savePath);        if(!sf.exists()){            sf.mkdirs();        }        OutputStream os = new FileOutputStream(sf.getPath()+"\\"+filename);        // 开始读取        while ((len = is.read(bs)) != -1) {            os.write(bs, 0, len);        }        // 完毕,关闭所有链接        os.close();        is.close();    }}
    TimeRandom:生成年月日时分秒+8位随机数
    package com.lazy.servlet.utils;import java.text.SimpleDateFormat;import java.util.Date;public class TimeRandom {    private static String getNowDate(){        Date date = new Date();        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");        return simpleDateFormat.format(date);    }    private static String getRandom(){        String rand = "";        for (int i = 0; i < 8; i++){            rand = rand + (int)(Math.random()*10);        }        return rand;    }    public static String createOrderCode(){        String OrderCode = getNowDate() + getRandom();        return OrderCode;    }}

    6、最终效果展示

    Java怎么通过JSP实现头像自定义上传

    以上就是“Java怎么通过JSP实现头像自定义上传”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网精选频道。

    --结束END--

    本文标题: Java怎么通过JSP实现头像自定义上传

    本文链接: https://www.lsjlt.com/news/347204.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • Java怎么通过JSP实现头像自定义上传
      今天小编给大家分享一下Java怎么通过JSP实现头像自定义上传的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。开发环境整体使用...
      99+
      2023-07-04
    • Java编程之如何通过JSP实现头像自定义上传
      目录开发概述开发环境开发过程1、JSP前台页面样式图:JS操作2、数据库的设计数据库表:实体类:UsersInfo.java3、数据库操作UsersMapperUsersMapper...
      99+
      2022-12-19
      java实现头像上传 jsp头像自定义上传 jsp实现更换头像功能
    • Android中怎么通过自定义View实现画圆
      Android中怎么通过自定义View实现画圆,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。引入布局<xml version="1.0...
      99+
      2023-05-30
      android
    • android中怎么通过自定义Camera实现拍照
      android中怎么通过自定义Camera实现拍照,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1、打开相机a.预览拍摄图片,需用到SurfaceView,并且...
      99+
      2023-05-31
      android camera
    • html+css怎么实现自定义图片上传按钮
      小编给大家分享一下html+css怎么实现自定义图片上传按钮,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!html是什么html的全称为超文本标记语言,它是一种标记语言,包含了一系列标签.通过这些标签可以将网络上的文档格式...
      99+
      2023-06-14
    • Android中怎么通过自定义view实现TopBar效果
      这篇文章给大家介绍Android中怎么通过自定义view实现TopBar效果,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。布局文件<xml version="1.0" en...
      99+
      2023-05-30
      android view topbar
    • 怎么在Android中通过自定义View实现一个箭头沿圆转动效果
      这篇文章主要为大家详细介绍了怎么在Android中通过自定义View实现一个箭头沿圆转动效果,文中示例代码介绍的非常详细,具有一定的参考价值,发现的小伙伴们可以参考一下:Android是什么Android是一种基于Linux内核的自由及开放...
      99+
      2023-05-30
      android view
    • 自定义input组件怎么实现拖拽文件上传
      这篇“自定义input组件怎么实现拖拽文件上传”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“自定义input组件怎么实现拖拽...
      99+
      2023-07-05
    • webuploader通过在java中使用怎么实现跨域上传
      本篇文章给大家分享的是有关webuploader通过在java中使用怎么实现跨域上传,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。项目中使用webuploader进行文件上传,...
      99+
      2023-05-31
      java webuploader 跨域上传
    • Android中怎么通过自定义View 实现QQ侧滑菜单
      这期内容当中小编将会给大家带来有关Android中怎么通过自定义View 实现QQ侧滑菜单,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。布局代码<fierce_luk.com.sideslipvie...
      99+
      2023-05-30
      android view
    • Android中怎么通过自定义view实现动态柱状图
      这篇文章将为大家详细讲解有关Android中怎么通过自定义view实现动态柱状图,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。自定义viewpublic class Hi...
      99+
      2023-05-30
      android view
    • Android中怎么通过自定义RecyclerView控件实现Gallery效果
      这期内容当中小编将会给大家带来有关Android中怎么通过自定义RecyclerView控件实现Gallery效果,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1、RecyclerView的基本用法首先主...
      99+
      2023-05-30
      android recyclerview gallery
    • Android中怎么通过自定义View实现圆形切图效果
      本篇文章给大家分享的是有关Android中怎么通过自定义View实现圆形切图效果,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。实现思路使用一个Paint,将得到的Bitmap设...
      99+
      2023-05-30
    • 怎么在Android中通过自定义View实现一个抽屉效果
      怎么在Android中通过自定义View实现一个抽屉效果?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Android 自定义View实现抽屉效果说明这个自定义V...
      99+
      2023-05-31
      android view roi
    • 怎么在Android中通过自定义View实现一个扫描效果
      这篇文章给大家介绍怎么在Android中通过自定义View实现一个扫描效果,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。自定义属性:<declare-styleable name="ScanV...
      99+
      2023-06-14
    • Android中怎么通过自定义view实现进度条加载效果
      Android中怎么通过自定义view实现进度条加载效果,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。分析图:代码如下:package com.example.d...
      99+
      2023-05-30
      android view
    • Android中怎么通过自定义控件实现下拉刷新效果
      本篇文章给大家分享的是有关Android中怎么通过自定义控件实现下拉刷新效果,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。@Override  protec...
      99+
      2023-05-30
      android
    • 怎么在Android中通过自定义view实现滑动解锁效果
      怎么在Android中通过自定义view实现滑动解锁效果?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。自定义view如下@SuppressLint("Clicka...
      99+
      2023-06-15
    • 怎么在HTML5中通过自定义元素实现播放焦点图动画
      这期内容当中小编将会给大家带来有关怎么在HTML5中通过自定义元素实现播放焦点图动画,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。HTML代码<div class="parall...
      99+
      2023-06-09
    • 怎么在SpringBoot中通过自定义注解实现一个Token校验功能
      本篇文章为大家展示了怎么在SpringBoot中通过自定义注解实现一个Token校验功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。定义Token的注解,需要Token校验的接口,方法上加上此注解...
      99+
      2023-06-14
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作