WEB项目经验总结——不要再对面试官说,我没有项目经验了

前言

这里不定时的更新一些自己的项目终于到的实际问题吧,做一下记录,如果大家对方案有其他的好的方式欢迎留言探讨,一起学习哈。

正文

问题是针对后台用户账号的状态修改遇到的问题,因为新用户申请待审核,或者账号异常需要冻结,这里主要是给了一个状态字段。如图页面。

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>

WEB项目经验总结——不要再对面试官说,我没有项目经验了

<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>

WEB项目经验总结——不要再对面试官说,我没有项目经验了

上图jsp代码所对应的的显示效果,然后我们需要在解冻很冻结栏加上我们的事件代码。

WEB项目经验总结——不要再对面试官说,我没有项目经验了

里面有两个参数,一个是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语句,因此刷新除了改变。

WEB项目经验总结——不要再对面试官说,我没有项目经验了

到这里就解决了问题,如果有看不懂的可以留言,都是自己在做项目中遇到的小问题,总结一下,