Diary(十二)——个人信息修改

目录

 

1. dao层,写修改个人信息的方法;

2. web层,使用Commons-FileUpload组建实现文件上传-以图片为例

3. 页面;

4. 测试,运行成功;


​​​​​​​

1. dao层,写修改个人信息的方法;

这里面我们在UserDao类里面写一个修改个人信息的方法;

//修改个人信息的方法
	public int userUpdate(Connection con,User user) throws Exception{
		String sql="update t_user set nickName=?,imageName=?,mood=? where userId=?";
		PreparedStatement pstmt=con.prepareStatement(sql);
		pstmt.setString(1,user.getNickName());
		pstmt.setString(2,user.getImageName());
		pstmt.setString(3,user.getMood());
		pstmt.setInt(4,user.getUserId());
		return pstmt.executeUpdate();
	}

2. web层,使用Commons-FileUpload组建实现文件上传-以图片为例

这里面写保存提交方法的逻辑;

private void userSave(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        FileItemFactory factory=new DiskFileItemFactory();
        ServletFileUpload upload=new ServletFileUpload(factory);
        List<FileItem> items=null;
        try {
            items=upload.parseRequest(request);
        } catch (FileUploadException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        Iterator<FileItem> itr=items.iterator();

        HttpSession session=request.getSession();

        User user=(User)session.getAttribute("currentUser");
        boolean imageChange=false;
        while(itr.hasNext()){
            FileItem item=(FileItem)itr.next();
            if(item.isFormField()){
                String fieldName=item.getFieldName();
                if("nickName".equals(fieldName)){
                    user.setNickName(item.getString("utf-8"));
                }
                if("mood".equals(fieldName)){
                    user.setMood(item.getString("utf-8"));
                }
            }else if(!"".equals(item.getName())){
                try{
                    imageChange=true;
                    String imageName= DateUtil.getCurrentDateStr();
                    user.setImageName(imageName+"."+item.getName().split("\\.")[1]);
                    String filePath=PropertiesUtil.getValue("imagePath")+imageName+"."+item.getName().split("\\.")[1];
                    item.write(new File(filePath));
                }catch(Exception e){
                    e.printStackTrace();
                }
            }
        }

        if(!imageChange){
            user.setImageName(user.getImageName().replaceFirst(PropertiesUtil.getValue("ImageFile"), ""));
        }

        Connection con=null;
        try {
            con=dbUtil.getCon();
            int saveNums=userDao.userUpdate(con, user);
            if(saveNums>0){
                user.setImageName(PropertiesUtil.getValue("imageFile")+user.getImageName());
                session.setAttribute("currentUser", user);
                request.getRequestDispatcher("main?all=true").forward(request, response);
            }else{
                request.setAttribute("currentUser", user);
                request.setAttribute("error", "保存失败!");
                request.setAttribute("mainPage", "user/userSvae.jsp");
                request.getRequestDispatcher("mainTemp.jsp").forward(request, response);
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            try {
                dbUtil.closeCon(con);
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

另外在doPost()方法里面调用;

 @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String action=request.getParameter("action");
        if("preSave".equals(action)){
            userPreSave(request,response);
        } else if("save".equals(action)){
            userSave(request,response);
        }
    }

3. 页面;

我们在页面上稍微改动一点,要使用FileUpload组件的话,其中表单form的enctype必须设置为multipart/form-data属性才行;还有用js写的一点逻辑;

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!-- 使用JSTL标签需要引入的头文件 -->
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!-- 使用fmt 对时间进行格式化的时候需要引入的头文件 -->
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
	function checkForm(){
		var nickName=document.getElementById("nickName").value;
		if(nickName==null||nickName==""){
			document.getElementById("error").innerHTML="昵称不能为空!";
			return false;
		}
		return true;
	}
</script>
</head>
<body>
<div class="data_list">
	<div class="data_list_title">
		<img src="${pageContext.request.contextPath}/images/user_edit_icon.png"/>
		个人信息设置
	</div>
	<div class="row-fluid" style="padding-top: 20px;">
		<div class="span3">
			<img src="${currentUser.imageName }">
		</div>

		<div class="span9">
			<form action="user?action=save" method="post" enctype="multipart/form-data" οnsubmit="return checkForm()">
				<table width="100%">
					<tr>
						<td width="15%">头像路径:</td>
						<td><input type="file" id="imagePath" name="imagePath"/></td>
					</tr>
					<tr>
						<td>个人昵称:</td>
						<td><input type="text" id="nickName" name="nickName" value="${currentUser.nickName }" style="margin-top:5px;height:30px;"/></td>
					</tr>
					<tr>
						<td valign="top">个人心情:</td>
						<td><textarea id="mood" name="mood" rows="10" style="width: 100%">${currentUser.mood }</textarea></td>
					</tr>
					<tr>
						<td><button class="btn btn-primary" type="submit">保存</button></td>
						<td><button class="btn btn-primary" type="button" οnclick="javascript:history.back()">返回</button>&nbsp;&nbsp;<font id="error" color="red">${error}</font></td>
					</tr>
				</table>
			</form>
		</div>
	</div>
</div>
</body>
</html>

4. 测试,运行成功;

发布了295 篇原创文章 · 获赞 100 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/qq_37084904/article/details/101345319