WEB项目经验总结——不要再对面试官说,我没有项目经验了
前言
这里不定时的更新一些自己的项目终于到的实际问题吧,做一下记录,如果大家对方案有其他的好的方式欢迎留言探讨,一起学习哈。
正文
问题是针对后台用户账号的状态修改遇到的问题,因为新用户申请待审核,或者账号异常需要冻结,这里主要是给了一个状态字段。如图页面。
在冻结,解冻列表栏通过点击图标更改状态。
首先是页面代码:
<tr
style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; HEIGHT: 25px; BACKGROUND-COLOR: #afd1f3">
<td align="center" width="7%">用户ID</td>
<td align="center" width="12%">用户名</td>
<td width="9%" align="center">权限(0普通,1商家,3是管理)</td>
<td align="center" width="7%">联系电话</td>
<td width="5%" align="center">账号状态(0正常,1冻结)</td>
<td width="4%" align="center">冻结</td>
<td width="4%" align="center">解结</td>
</tr>
<c:forEach items="${User}" var="u">
<tr onMouseOver="this.style.backgroundColor = 'white'"
onmouseout="this.style.backgroundColor = '#F5FAFE';">
<td style="CURSOR: hand; HEIGHT: 22px" align="center"
width="23">${u.id}</td>
<td style="CURSOR: hand; HEIGHT: 22px" align="center"
width="23">${u.username}</td>
<td style="CURSOR: hand; HEIGHT: 22px" align="center"
width="23">${u.admin }</td>
<td style="CURSOR: hand; HEIGHT: 22px" align="center"
width="23">${u.phone}</td>
<td style="CURSOR: hand; HEIGHT: 22px" align="center"
width="23">${u.frozen }</td>
<td align="center" style="HEIGHT: 22px" width="7%"><a
href="${pageContext.request.contextPath}/servlet/UpdateFrozenServlet?id=${u.id }&flag=1">
<img
src="${pageContext.request.contextPath}/admin/images/i_edit.gif"
width="16" height="16" border="0" style="CURSOR: hand">
</a>
<td align="center" style="HEIGHT: 22px" width="7%"><a
href="${pageContext.request.contextPath}/servlet/UpdateFrozenServlet?id=${u.id }&flag=0">
<img
src="${pageContext.request.contextPath}/admin/images/i_edit.gif"
width="16" height="16" border="0" style="CURSOR: hand">
</a></td>
</tr>
</c:forEach>
上图jsp代码所对应的的显示效果,然后我们需要在解冻很冻结栏加上我们的事件代码。
里面有两个参数,一个是id指对应更改的用户id,另一个是flag标记,1是冻结,0是解冻,针对两个事件分别执行不同的flag,然后我们需要编写UpdateFrozenServlet,更新frozen字段的标记,数据库dao层代码如下
public int update(int id,int flag) throws SQLException {
// TODO Auto-generated method stub
QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());
String sql =" update user set frozen = ? where id = ?";
Object[] params={flag,id};
return qr.update(sql, params);
}
后台用的servlet,获取页面传过来的两个参数,然后调用dao层的方法,转回到当前页面。
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
int id = Integer.parseInt(request.getParameter("id"));
int flag = Integer.parseInt(request.getParameter("flag"));
System.out.println("id="+id+",flag="+flag);
UserService us = new UserServiceImpl();
us.update(id, flag);
request.getRequestDispatcher("/servlet/UserListServlet").forward(request, response);
}
其中遇到一个问题,request.getRequestDispatcher("/servlet/UserListServlet").forward(request, response);本来我写的语句是request.getRequestDispatcher("/admin/myhome/userlist.jsp").forward(request, response);用这句话导致我更改了状态以后,页面无法自己刷新最新的数据,数据库已经改过来了,后来发现是这句话有问题,里面直接update数据了,但是没有执行select语句,因此页面无法得到最新的数据,而我任务直接转给/servlet/UserListServlet语句,里面执行了select语句,因此刷新除了改变。
到这里就解决了问题,如果有看不懂的可以留言,都是自己在做项目中遇到的小问题,总结一下,