目录
3. web层,在DiaryServlet里面调用修改日志的方法;
1. dao层,写修改日志的方法;
这里我们在DiaryDao里面写一个修改日志的方法;
//修改日志的方法
public int diaryUpdate(Connection con,Diary diary) throws Exception{
String sql="update t_diary set title=?,content=?,typeId=? where diaryId=?";
PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.setString(1, diary.getTitle());
pstmt.setString(2, diary.getContent());
pstmt.setInt(3, diary.getTypeId());
pstmt.setInt(4,diary.getDiaryId());
return pstmt.executeUpdate();
}
2. diaryShow.jsp,在里面添加修改链接;
在这里我们找到修改日志的按钮,然后在里面添加一下修改链接就可以了;
写一个修改的js方法,并传入一个diaryId参数;
<!-- 日志信息修改 -->
<div class="diary_action">
<button class="btn btn-primary" type="button" onclick="javascript:window.location='diary?action=preSave&diaryId=${diary.diaryId}'">修改日志</button>
<button class="btn btn-primary" type="button" onclick="javascript:history.back()">返回</button>
<button class="btn btn-danger" type="button" onclick="diaryDelete(${diary.diaryId})">删除日志</button>
</div>
3. web层,在DiaryServlet里面调用修改日志的方法;
在我们原先写的diaryPreSave方法里面写预处理日志信息,
判断是否有diaryId,看看是写日志还是修改日志;
//预处理日志信息的方法
protected void diaryPreSave(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String diaryId=request.getParameter("diaryId");
Connection con=null;
try {
//判断是否有Id,避免修改日志与写日志重复
if(StringUtil.isNotEmpty(diaryId)){
con=dbUtil.getCon();
Diary diary=diaryDao.diaryShow(con,diaryId);
request.setAttribute("diary",diary);
}
//将得到的mainPage和diarySave连接起来
request.setAttribute("mainPage", "diary/diarySvae.jsp");
//内部转发
request.getRequestDispatcher("mainTemp.jsp").forward(request, response);
} catch (Exception e) {
e.printStackTrace();
} finally{
try {
dbUtil.closeCon(con);
} catch (Exception e) {
e.printStackTrace();
}
}
}
这时候我们点击修改日志按钮就会重新跳到写日志的页面;
4. 更改完日志后,我们要保存起来;
在DiaryServlet里面我们要在diarySave方法里面获取一下前台的diaryId;
String diaryId=request.getParameter("diaryId");
//判断Id是否不为空,不为空就是修改日志
if(StringUtil.isNotEmpty(diaryId)){
diary.setDiaryId(Integer.parseInt(diaryId));
}
然后在数据库连接里面添加一下逻辑:
只有当diaryId为空时,我们进行添加日志操作;
当diaryId不为空时,我们进行修改日志操作;
if(StringUtil.isNotEmpty(diaryId)){
saveNum=diaryDao.diaryUpdate(con, diary);
} else{
saveNum=diaryDao.diaryAdd(con, diary);
}
在这里我们还需要在diarySave.jsp页面传一下diaryId,这里我们可以设置为隐藏域,不显示在页面上;
<!-- 操作按钮部分 -->
<div>
<!--在修改日志时候的保存日志的id,将其设置为隐藏域-->
<input type="hidden" name="diaryId" id="diaryId" value="${diary.diaryId}"/>
<input type="submit" class="btn btn-primary" value="保存"/>
<button class="btn btn-primary" type="button" onclick="javascript:history.back()">返回</button>
<font id="error" color="red">${error }</font>
</div>
这样就行了!
5. 测试;
我们点击修改日志:
注意,在这里我们要把类别选择默认设置为之前的类别:
<option value="${diaryTypeCount.diaryTypeId }" ${diaryTypeCount.diaryTypeId==diary.typeId?'selected':'' }>${diaryTypeCount.typeName }</option>
还有在点击写日记和修改日记这两个不同的页面时,左上角显示的图标是不同的,这里我们需要再写一下逻辑;
在diarySave.jsp页面里面我们添加以下内容:
<div class="data_list_title">
<c:choose>
<c:when test="${diary.diaryId!=null }">
<img src="${pageContext.request.contextPath}/images/diary_type_edit_icon.png"/>
修改日记
</c:when>
<c:otherwise>
<img src="${pageContext.request.contextPath}/images/diary_add_icon.png"/>
写日记
</c:otherwise>
</c:choose>
</div>
点击保存,就可以修改成功了!