//声明JavaBean
RegisterForm rform = (RegisterForm) form;
//从表单类中接过已验证过的表单信息
user.setUsername(rform.getUsername());
user.setPassword(rform.getPassword());
user.setSex(rform.getSex());
user.setBorntime(rform.getYear() + "-" + rform.getMonth() + "-"
+ rform.getDay());
user.setEmail(rform.getEmail());
user.setIntroduce(rform.getIntroduce());
user.setRealname(rform.getRealname());
user.setTelNumber(rform.getTelNumber());
user.setStatus("0");
//赋值Bean中所有属性
UserBean database=new UserDAO().findOne(user.getUsername());
//注册之前检查用户名是否已经存在,若存在则生成错误信息,反馈到注册页面
if(database!=null){
request.setAttribute("login.error", "对不起,您的用户名已经被人使用,请重新输入!");
return mapping.findForward("register.error");
}
//所有验证完成,将用户信息入库,成功则将成功信息反馈到首页
int n = new UserDAO().insertUser(user);
if (n == 0) {
return mapping.findForward("register.error");
} else {
request.setAttribute("login.error", "注册成功,请等待审核!!");
return mapping.findForward("register.ok");
}
}
}
4.2 用户登陆模块 4.2.1 用户登陆流程分析用户在正确注册之后,在后台经管理员审批,正式获得日志系统的使用权限。在首页输入用户名和密码登陆系统。若用户名和密码有误,将返回登陆页,并显示错误提示。用户名和密码无误则成功登入系统。后台系统中管理员登陆模块与该模块实现类似,本文不再叙述。用户登陆过程活动图如下图4-2。
图4-2 用户活动过程
4.2.2 用户登陆模块文件设计用户登陆模块主要有三个文件。负责视图层的login.jsp和负责控制层的LoginAction.java和负责模型层的UserDAO.java和UserBean.java。
在structs-config.xml中actionMappings中配置如下:
<action input="/index.jsp" path="/login"
type="my.action.LoginAction" validate="true">
<forward path="/user_index.jsp"/>
<forward path="/index.jsp"/>
</action>
其中模块商业逻辑的主要部分LoginAction.java的代码如下:
package my.action;
public class LoginAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
LoginForm userform=(LoginForm)form;
//获取页面表单信息
UserBean bean=null;
bean=new UserDAO().finduser(userform.getUsername(), userform.getPassword());
//将用户从登陆页面输入的用户名和密码与user表中用户名与密码核对,若不一致,生成错误信息,返回到登陆页面
if(bean==null){
request.setAttribute("login.error", "您还没有注册,请先注册!");
return mapping.findForward("login.error");
}else{
String status=bean.getStatus();
if(status.equals("0")){
request.setAttribute("login.error", "抱歉,您的帐户正在审批中,暂时无法登陆!");
//若用户名和密码一致,再次核对用户审批状态,未审批完成,生成提示信息并返回首页
return mapping.findForward("login.error");
}
List kind=new KindDAO().findKind(userform.getUsername());
List diary=new DiaryDAO().findDiaryByUser(bean.getUsername());
request.setAttribute("diary", diary);
request.getSession().setAttribute("kind", kind);
request.getSession().setAttribute("user", bean);
return mapping.findForward("login.ok");
}
}
}
4.3 日志管理模块 4.3.1 日志管理功能模块图4.3.2 设计思想及特点
注册用户登陆后进入日志管理页面能对日志进行相关操作。具体来说,若用户是第一次登陆,在添加日志之前系统会提示用户先添加日志分类,所有日志均建立在分类之下的。在分类添加完成之后,用户就能进入日志维护页面对日志进行添加,删除,修改操作了。值得注意的是在删除分类时,用户在删除类别的同时,也把该类别下的所有日志删除了。添加日志时用户能够通过设置日志状态是否公开来决定是否让日志被他人浏览,这样能将优秀的文章进行相互交流。
下面主要给出添加日志的活动图和文件设计:
活动图如下图4-4。
图4-4 添加日志活动图
在structs-config.xml中actionMappings中配置如下:
<action input="/addDiary.jsp" path="/addDiary"
type="my.action.AddDiaryAction" validate="true">
<forward path="/user_index.jsp"/>
<forward path="/addDiary.jsp"/>
</action