|
2.6 管理员功能模块设计 |
本模块使用的数据表:tb_admin(管理员信息表)。
在管理员模块中,涉及的数据表是管理员信息表(tb_admin)。在管理员信息表中保存着管理员名称和登录密码两部分内容,根据这些信息创建管理员的FormBean,名称为AdminForm,关键代码如下:
代码位置:光盘 \ MR\02\src\com\form \AdminForm.java
在上述代码中,admin_user和admin_password两个属性代表tb_admin数据表中的两个字段,而admin_repassword1和admin_repassword2两个属性用于修改密码的操作。
管理员模块是一个系统必有的功能,系统管理员有着系统的最高权限,该模块需要实现管理员的登录功能和修改密码功能。首先需要创建管理员的Action实现类,在该Action相应的方法中调用 DAO层的方法验证登录和修改密码。
在本实例中,管理员的实现类名称为AdminAction。该类继承AdminForm类,可以使用AdminForm类中的属性和方法,而AdminForm本身继承了MySuperAction类,可以使用MySuperAction类中的属性和方法。
AdminAction类中可以使用AdminForm类和MySupperAction类中的方法和属性。在该类中首先需要在静态方法中实例化管理员模块的AdminDao类(该类用于实现与数据库的交互)。管理员模块中实现类的关键代码如下:
代码位置:光盘 \ MR\02\src\com\form \AdminForm.java
在创建完管理员功能模块中实现类后,需要在struts.xml文件中进行配置。该文件主要配置管理员功能模块的请求结果。管理员功能模块涉及的struts.xml文件的代码如下:
代码位置:光盘 \MR\02\src\Struts.xml
在上述代码中,<action>元素的name属性代表着请求的方式,在请求方式中“*”代表请求方式的方法,这与method属性的配置是相对应,而class属性是请求处理类的路径。如果客户端请求的名称是“admin_index.action”时,通过struts.xml文件的配置信息,请求的是AdminAction类中的index()方法。
通过<result>子元素添加了两个返回映射地址。其中success表示返回请求的成功页面,而“input”表示请求失败的页面,但是无论是请求成功还是请求失败,最后返回的页面是同一个页面,而这个页面的名称要根据请求方法名称而确定。
1)编写管理员登录页面
管理登录是物流配货网中最先使用的功能,是系统的入口。在系统登录页面中,管理员可以通过输入正确的用户名和密码进入到系统,当用户没有输入用户名和密码时,系统会通过服务器端进行判断,并给予系统提示。系统登录模块运行结果如图2.4所示。
图2.4 管理员登录页面的运行结果
如图2.4所示,该页面的Form表单主要通过Struts 2的标签元素进行编写的,关键代码如下:
代码位置:光盘 \ MR\02\WebRoot \admin _index.jsp
2)编写管理员登录代码
在管理登录页面的用户名和密码文本框中输入正确的用户名和密码后,单击“登录”按钮,网页会访问一个URL地址(可以通过IE浏览器看到),该地址是“admin_index.action”。根据struts.xml文件的配置信息,我们可以知道,该请求地址执行的是AdminAction类中的index()方法,该方法主要执行管理员登录验证。
在执行验证index()方法之前,需要输入校验对管理员登录页面的表单实现校验。在Struts 2中,validate()方法是无法知道需要校验哪个处理逻辑的。实际上,如果我们重写了validate()方法,则该方法会校验所有的处理逻辑。为了实现校验执行指定处理逻辑的功能,Struts 2的Action类允许提供一个validateXxx()方法,其中Xxx即是Action对应处理逻辑方法。验证index()方法之前,执行校验登录页面的表单的代码如下:
代码位置:光盘 \ MR\02\src\com\webtier \AdminAction.java
在上述代码中,一旦判断用户名和密码为null或空字符串时,就把校验失败提示通过addFieldError()方法添加进fieldError中,之后系统就自动返回“input”逻辑视图,这个逻辑视图需要在struts.xml配置文件中进行配置。为了在input视图对应的JSP页面中输出错误提示,应该在页面中编写如下的标签代码:
如果输入校验成功,则直接进入业务逻辑处理的index()方法,该方法主要判断用户名和密码是否与数据库中的用户名和密码相同。验证用户名和密码是否正确的关键代码如下:
代码位置:光盘 \ MR\02\src\com\webtier \AdminAction.java
3)编写管理员登录的AdminDao类的方法
管理员登录实现类使用的AdminDao类的方法是getAdmin Password(),在getAdminPassword()方法中,首先从数据表tb_admin中查询输入的用户名是否存在,如果存在,则根据这个用户名查询出密码,将密码的值进行返回。getAdminPassword()方法的具体代码如下:
代码位置:光盘 \ MR\02\src\com\dao\AdminDao.java
1)编写管理员密码修改页面
管理员成功登录后,直接进入到物流配货网的主界面。如果登录的管理员想要修改自己的登录密码,则在主界面中单击最上面的“修改密码”超链接,进入到修改管理密码的页面,如图2.5所示。
图2.5 修改管理员密码页面
如图2.5所示,该页面通过Struts 2标签库进行编写的Form表单,关键代码如下:
代码位置:光盘 \ MR\02\WebRoot \admin _updatePassword.jsp
2)编写管理员修改代码
在管理修改页面中,“原密码”文本框中输入管理员登录的原来的密码,而“新密码”和“密码确认”两个文本框中输入的新密码要求必须一致,这些操作是在修改密码之前进行编写的。因此,在AdminAction类中编写valiadateUpdatePassword()方法,该方法是完成上述操作的内容,主要代码如下:
代码位置:光盘 \ MR\02\src\com\webtier \AdminAction.java
valiadateUpdatePassword()方法是在执行修改密码之前进行操作的,而修改密码的方法名称是updatePassword(),该方法主要代码如下:
代码位置:光盘 \ MR\02\src\com\webtier \AdminAction.java