1、药品进销存储管理系统(二)涉及该模块文件分别为:register.jsp、 RegisterAction.java以及UserDAO.java。4.1.2 文件设计 register.jsp文件:按照下述内容设计 register.jsp文件。表单名:form1。表单执行程序:register.jsp。表单数据传输方法:post。表单的要素如附录一表 1所示。在 structs-config.xml中 actionMappings中配置如下:action input=“/register.jsp“ name=“RegisterForm“ path=“/register“type=“my.act
2、ion.RegisterAction“ validate=“true“forward name=“register.ok“ path=“/index.jsp“/forward name=“register.error“ path=“/register.jsp“/action/带表单验证类的 action,input 参数为表单证错误返回的页面,name是接受页面参数的表单类,path 为页面请求到服务器的路径,type为处理请求的 action类的路径,forward 为验证成功与否的转发路径。RegisterAction.java代码如下:package my.action;public c
3、lass RegisterAction extends Action public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) UserBean user = new UserBean();/声明 JavaBeanRegisterForm rform = (RegisterForm) form;/从表单类中接过已验证过的表单信息user.setUsername(rform.getUsername();u
4、ser.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.setSta
5、tus(“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().insertUs
6、er(user);if (n = 0) return mapping.findForward(“register.error“); else request.setAttribute(“login.error“, “注册成功,请等待审核!“);return mapping.findForward(“register.ok“);4.2 用户登陆模块 4.2.1 用户登陆流程分析 用户在正确注册之后,在后台经管理员审批,正式获得日志系统的使用权限。在首页输入用户名和密码登陆系统。若用户名和密码有误,将返回登陆页,并显示错误提示。用户名和密码无误则成功登入系统。后台系统中管理员登陆模块与该模块实现类
7、似,本文不再叙述。用户登陆过程活动图如下图 4-2。图 4-2 用户活动过程4.2.2 用户登陆模块文件设计 用户登陆模块主要有三个文件。负责视图层的 login.jsp和负责控制层的 LoginAction.java和负责模型层的 UserDAO.java和UserBean.java。在 structs-config.xml中 actionMappings中配置如下:action input=“/index.jsp“ name=“LoginForm“ path=“/login“type=“my.action.LoginAction“ validate=“true“forward name=“
8、login.ok“ path=“/user_index.jsp“/forward name=“login.error“ path=“/index.jsp“/action其中模块商业逻辑的主要部分 LoginAction.java的代码如下:package my.action;public class LoginAction extends Action public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse respon
9、se) 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
10、“);elseString 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(be
11、an.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 设计思想及特点 注册用户登陆后进入日志管理页面能对日志进行相关操作。具体来说,若用户是第一次登陆,在添加日志之前系统会提示用户先添加日志分类,所有日志均建
12、立在分类之下的。在分类添加完成之后,用户就能进入日志维护页面对日志进行添加,删除,修改操作了。值得注意的是在删除分类时,用户在删除类别的同时,也把该类别下的所有日志删除了。添加日志时用户能够通过设置日志状态是否公开来决定是否让日志被他人浏览,这样能将优秀的文章进行相互交流。下面主要给出添加日志的活动图和文件设计:活动图如下图 4-4。图 4-4 添加日志活动图在 structs-config.xml中 actionMappings中配置如下:action input=“/addDiary.jsp“ name=“AddDiaryForm“ path=“/addDiary“type=“my.act
13、ion.AddDiaryAction“ validate=“true“forward name=“addDiary.ok“ path=“/user_index.jsp“/forward name=“addDiary.error“ path=“/addDiary.jsp“/action控制器层主要文件 AddDiaryAction.java源代码如下:package my.action;public class AddDiaryAction extends Action public ActionForward execute(ActionMapping mapping, ActionForm
14、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 Diary
15、Bean();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“);elsediary.setStatus(“0“);/接表单信息,并封装到 jvabean中int n=new DiaryDAO().
16、addDiary(diary);/调用数据操作对象的 add方法,将信息入库,成功则返回到成功页面if(n!=0)List list=new DiaryDAO().findDiary(diary.getKindID();request.setAttribute(“diary“, list);return mapping.findForward(“addDiary.ok“);elsereturn mapping.findForward(“addDiary.error“);4.4 后台用户管理模块 4.4.1 主要功能概述 该模块主要是由查询和显示两个子模块组合而成。管理能通过在查询模块输入用户名
17、、性别、联系方式、真实姓名之后选择操作进行查询,在显示模块能根据用户选择的查询方式和操作显示不同的结果。管理员能在显示页面对用户进行相应操作。选择“停用”后页面显示结果如下图 4-5。图 4-5 选择“停用”后页面显示结果4.4.2 查询与分页 在此模块中最为关键的就是查询与分页功能的实现。本系统在设计时将此过程分两步来实现的。第一步用 SearchUserAction.java来处理查询要求;首先接受页面查询参数生成查询所有记录的 SQL语句,然后运用JAVA的 String类的相关方法将 SQL语句字符串进行处理,等到查询总记录数目的 CountSQL语句,再次通过得到的记录总数和每页应该
18、显示记录条数计算得到显示总页数,然后将 SQL语句和页数传给第二步。第二步ShowUserAction.java负责显示个分页内容。通过接受第一步所传过来的SQL语句和总页数生成新的光查该页记录数的 SQL语句,再一次从数据库中查询出具体记录并传到 jsp页面将结果显示出来。该过程活动图如图 4-6。图 4-6 过程活动图在 structs-config.xml中 actionMappings中配置如下:action path=“/searchUser“ type=“my.action.SearchUserAction“forward name=“search.ok“ path=“/showUser.do?page=1“/actionaction path=“/showUser“ type=“my.action.ShowUserAction“forward name=“show.ok“ path=“/edit_user.jsp“/actionSearchUserAction.java源代码:package my.action;public class SearchUserAction extends Action public ActionForward execute(ActionMapping mapping, ActionForm form,