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

第二个功能修改个人资料以及更改头像
目录结构和其他代码接上https://blog.csdn.net/ignite_/article/details/90453076
前台html代码:
个人中心加上:
<div>
    修改个人资料 <br>
    <form action="changeperson" method="post">
        nickname: <input type="text" name="nickname" id="changeNickname"> <br>
        sex:    <input type="radio" name="sex" id="Sex0" value="0">男
                <input type="radio" name="sex" id="Sex1" value="1">女
                <input type="radio" name="sex" id="Sex2" value="2">保密 <br>

        <input type="text" name="changeID" id="changeID" value="" style="display: none"><br>
        <input type="submit" value="确认修改">
    </form>
    <br><br><br>

    修改头像 <br>
    <form action="changepicture" method="post" enctype="multipart/form-data">
        <input type="text" name="changeID" id="changeID1" style="display: none"><br>
        <input type="file" name="flie"><br>
        <input type="submit" value="修改头像">
    </form>
</div>

同步请求,将用户的id,用样式"display;none"偷偷藏起来,一起将id和其他数据一起悄咪咪的提交给servlet处理。

java代码:
Dao 和 Service:

新增两个方法:

//    修改个人资料
    @Override
    public Boolean update(String id, String nickname, String sex) throws SQLException {
        int update = queryRunner.update("update user set nickname=? ,sex =? where id=? ",nickname,sex,id);
        if (update > 0) {
            return true;
        }
        return false;
    }
//      修改头像
    @Override
    public boolean ChangePicture(String id, String newFimeName) throws SQLException {
        int update = queryRunner.update("update user set picture=? where id=? ",newFimeName,id);
        if (update > 0) {
            return true;
        }
        return false;
    }

新增两个Dao方法,用于用户的个人信息及头像的修改。

Servlet:

两个新的servlet:

ChangePersonServlet(更改个人资料)
package Servlet;

import Domain.User;
import Service.Impl.UserServiceImpl;
import Service.UserService;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;

@WebServlet(name = "ChangePersonServlet")
public class ChangePersonServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//        设置编码
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("gb2312");

//        设置输出
        PrintWriter out = response.getWriter();

//        获得id
        String id = request.getParameter("changeID");
        String nickname = request.getParameter("nickname");
        String sex = request.getParameter("sex");

        System.out.println(id+nickname+sex);


//        根据id更改person
        UserService userService = new UserServiceImpl();
        boolean result = false;
        try {
            result = userService.update(id, nickname, sex);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        if (result){
            out.print("<script>\n" +
                    "alert('修改成功');"+
                    "    window.history.go(-1);\n" +
                    "</script>");
        }else{
            out.print("<script>\n" +
                    "alert('发生意外情况');"+
                    "    window.history.go(-1);\n" +
                    "</script>");
        }


    }


    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
}


ChangePictureServlet(更改用户头像)
package Servlet;

import Domain.User;
import Service.Impl.UserServiceImpl;
import Service.UserService;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.sql.SQLException;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

@WebServlet(name = "ChangePictureServlet")
public class ChangePictureServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//        设置编码
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("gb2312");
//        设置输出
        PrintWriter outprint = response.getWriter();

//        根据id找到User对象,用于Oldpic的删除
        User user = new User();
        UserService userService = new UserServiceImpl();

//        上传文件
        //        设置文件目录
        String webroot = this.getServletContext().getRealPath("/");
        File temppath = new File(webroot + "fileuploadtemp");
        String dir = webroot + File.separator + "upload";
        File path = new File(webroot + File.separator + "upload");
        if (!temppath.exists()) {
            temppath.mkdirs();
        }
        if (!path.exists()) {
            path.mkdirs();
        }

//      设置文件类型(后期可新增文件类型)
        String[] type = new String[]{".jpg", ".png", ".jpeg", ".gif"};

//      创建文件项工厂
        DiskFileItemFactory factory = new DiskFileItemFactory(1024 * 1024,
                temppath);
        ServletFileUpload upload = new ServletFileUpload(factory);
        upload.setFileSizeMax(1024 * 1024 * 10);
        try {
            List<FileItem> fileItems = upload.parseRequest(request);
            Iterator<FileItem> it = fileItems.iterator();
            String id = null;
//            遍历request file
            while (it.hasNext()) {
                FileItem fi = it.next();
//                判断该表单为普通表单类型
                if (fi.isFormField()) {
//                    获得id
                    id = fi.getString();
                    user = userService.select(id);
                } else {
                    InputStream in = fi.getInputStream();
                    String name = fi.getName();//获得文件原名

//                    得到文件后缀名
                    int index = name.lastIndexOf(".");
                    if (index == -1) {
                        outprint.print("<script>\n" +
                                "alert('请选择头像'); window.history.go(-1);" +
                                "</script>");
                        return;
                    }
                    String endWith = name.substring(index);
//                    判断是否符合类型
                    boolean TypeExists = Arrays.asList(type).contains(endWith);
                    if (!TypeExists) {
                        outprint.print("<script>\n" +
                                "alert(\"文件类型错误,只允许jpg,png,jpeg,gif\"); window.history.go(-1)" +
                                "</script>");
                        return;
                    }

                    String newFimeName = System.currentTimeMillis() + endWith;//新文件名
//                    更改数据库picture字段
                    boolean result = userService.ChangePicture(id, newFimeName);
                    if (result) {
//                    创建上传文件
                        FileOutputStream out = new FileOutputStream(new File(
                                dir + "/" + newFimeName));

                        byte buffer[] = new byte[1024];
                        int len = 0;
                        while ((len = in.read(buffer)) > 0) {
                            out.write(buffer, 0, len);//写入大小
                        }
                        in.close();
                        out.close();
                        fi.delete();
                        outprint.print("<script>\n" +
                                "alert('修改成功'); window.history.go(-1);" +
                                "</script>");
                        //删除原头像文件
                        //避免空指针
                        if (!("1.png").equals(user.getPicture())) {
                            File delete = new File(dir + "/" + user.getPicture());
                            delete.delete();
                        }
                    }
                }
            }
        } catch (FileUploadException e) {
            response.getWriter().write(e.toString());
        } catch (SQLException e) {
            e.printStackTrace();
        }


    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
}


更改个人资料很简单,先根据id找人,再update更新就行;

再更改头像的时候,本准备修改个人资料和头像一起进行更改,但是由于用户可能只需要更改用户昵称,不选择需要更改头像的时候,再上传文件的时候,java代码会报错,无奈解决不了,只能两个分开进行修改了。

再注册的servlet,可以在picture字段给用户一个默认的头像。

运行效果:

注册后默认头像

在这里插入图片描述

修改个人信息(后期还会加上几个字段)

在这里插入图片描述
修改个人信息也做了点手脚,在提交前,input的value值就是用户修改前的信息,欸嘿嘿嘿。

修改头像(修改头像,把旧头像文件删掉)

在这里插入图片描述

注:所用jar包在前几篇博客中都有。

由于本人学生,可能有些部分可能不符合规范,欢迎各位前辈指出。

  • 5
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值