控制器层主要文件AddDiaryAction.java源代码如下:
package my.action;
public class AddDiaryAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
HttpSession session=request.getSession();
UserBean user=(UserBean)session.getAttribute("user");
if(user==null){
return mapping.findForward("tohome.do");
}//验证用户是否已经登陆,若没登陆则为非法登入,返回首页
AddDiaryForm aform=(AddDiaryForm)form;
DiaryBean diary=new DiaryBean();
diary.setDiaryTitle(aform.getTitle());
diary.setContent(aform.getContent());
diary.setKindID(aform.getKind());
diary.setUserID(user.getUsername());
diary.setIsOpen(aform.getIsopen());
if(aform.getIsopen().equals("0")){
diary.setStatus("2");
}else{
diary.setStatus("0");
}
//接表单信息,并封装到jvabean中
int n=new DiaryDAO().addDiary(diary);
//调用数据操作对象的add方法,将信息入库,成功则返回到成功页面
if(n!=0){
List list=new DiaryDAO().findDiary(diary.getKindID());
request.setAttribute("diary", list);
return mapping.findForward("addDiary.ok");
}else{
return mapping.findForward("addDiary.error");
}
}
}
4.4 后台用户管理模块 4.4.1 主要功能概述该模块主要是由查询和显示两个子模块组合而成。管理能通过在查询模块输入用户名、性别、联系方式、真实姓名之后选择操作进行查询,在显示模块能根据用户选择的查询方式和操作显示不同的结果。管理员能在显示页面对用户进行相应操作。
选择“停用”后页面显示结果如下图4-5。
图4-5 选择“停用”后页面显示结果
4.4.2 查询与分页在此模块中最为关键的就是查询与分页功能的实现。本系统在设计时将此过程分两步来实现的。第一步用SearchUserAction.java来处理查询要求;首先接受页面查询参数生成查询所有记录的SQL语句,然后运用JAVA的String类的相关方法将SQL语句字符串进行处理,等到查询总记录数目的CountSQL语句,再次通过得到的记录总数和每页应该显示记录条数计算得到显示总页数,然后将SQL语句和页数传给第二步。第二步ShowUserAction.java负责显示个分页内容。通过接受第一步所传过来的SQL语句和总页数生成新的光查该页记录数的SQL语句,再一次从数据库中查询出具体记录并传到jsp页面将结果显示出来。
该过程活动图如图4-6。
图4-6 过程活动图
在structs-config.xml中actionMappings中配置如下:
<action path="/searchUser" type="my.action.SearchUserAction">
<forward path="/showUser.do?page=1"/>
</action>
<action path="/showUser" type="my.action.ShowUserAction">
<forward path="/edit_user.jsp"/>
</action>
SearchUserAction.java源代码:
package my.action;
public class SearchUserAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
HttpSession session=request.getSession();
AdminBean admin=(AdminBean)session.getAttribute("admin");
if(admin==null){
return mapping.findForward("tohome.do");
}
//管理员登陆验证,若为非法登陆,则返回首页
String sql = this.createSql(request, response);
//生成分页之前的sql语句
String countSql = this.getCountSql(sql);
//生成统计所有记录数的sql语句
int total = new UserDAO().getUserNum(countSql);
//调用数据操作对象,统计所有记录数
int pageNumber = 1;
int perPageNumber = 7;
pageNumber = this.getPageNumber(total, perPageNumber);
//调用统计页数方法,获得总页数
request.getSession().setAttribute("u.pageNumber", pageNumber);
request.getSession().setAttribute("u.perPageNumber", perPageNumber);
request.getSession().setAttribute("u.sql", sql);
return mapping.findForward("search.ok");
}
//将所有分页信息放入session对象,并分发至显示处理类
//生成统计记录数的sql语句的方法
private String getCountSql(String sql) {
String temp = sql.substring(sql.indexOf("from") - 1);
temp = "select count(*) " + temp;
return temp;
}
//生成页数
private int getPageNumber(int total, int numPerPage) {
int pageNumber = 0;
if (total % numPerPage == 0) {
pageNumber = total / numPerPage;
} else {
pageNumber = (total / numPerPage) + 1;
}
return pageNumber;