目录
2. web层,使用Commons-FileUpload组建实现文件上传-以图片为例
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> <font id="error" color="red">${error}</font></td>
</tr>
</table>
</form>
</div>
</div>
</div>
</body>
</html>