正文

都市供求信息网(21)

JSP项目开发案例全程实录(第2版) 作者:明日科技


(9)运行测试。单击Eclipse菜单栏中的按钮,在弹出的菜单中选择“运行方式/JUnit测试”命令运行测试,若显示图1.43所示的运行结果,则说明Count类中的encrypt()方法正确;否则,说明encrypt()方法中存在错误或方法实现的功能与预设计的不同。 1.9 后台登录设计

1.9.1 后台登录功能概述

用户可通过单击前台页面顶部的“进入后台”超链接,进入后台登录页面,如图1.48所示。

为了防止任意用户进入后台,进行非法操作,所以需要设置登录功能。当用户没有输入用户名和密码,或输入了错误的用户名和密码进行登录时,会返回登录页面显示相应的提示信息,如图1.49所示。

后台登录模块的操作流程如图1.50所示。

在实现登录功能时,对于已经登录的用户,当再次单击前台页面顶部的“进入后台”超链接时,应直接进入后台主页,而不是再次显示如图1.48所示的登录页面要求用户登录,该功能的具体实现过程,将在1.9.3节中进行介绍。

1.9.2 后台登录技术分析

在后台登录模块中,对于已登录的用户要跳过登录页面,直接进入后台主页。实现该功能的主要技术就是:在当前用户登录成功后,向session中注册一个属性,并为该属性赋值,当用户再次单击“进入后台”超链接时,先在程序中获取存储在session中该属性的值,然后通过判断其值来得知当前用户是否已经登录,从而决定将请求转发到登录页面还是后台首页。

1.9.3 后台登录的实现过程

后台登录用到的数据表:tb_user。

根据技术分析,用户单击页面顶部的“进入后台”超链接请求登录时,会先判断用户是否已经登录。若没有登录,则进入登录页面,在该页面中填写用户名和密码后,提交表单,在Action处理类中获取表单数据进行验证,验证成功后查询数据表,查询是否存在用户输入的用户名和密码,若存在,则登录成功,进入网站后台。如果用户已经登录,则直接进入后台。下面按照这个流程,介绍后台登录的实现过程。

1.实现“进入后台”超链接

在view目录下的top.jsp文件中实现进入后台的超链接。代码如下:

例程45 代码位置:光盘\TM\01\view\top.jsp

<a href="log_isLogin.action">[进入后台]</a>

上述代码实现的超链接所请求的路径为log_isLogin.action,触发该超链接产生的请求将由LogInOutAction类中的isLogin()方法处理,isLogin()方法用来判断用户是否已经登录。

2.设计登录页面Login.jsp

在登录页面中,应包含一个表单,并提供“用户名”和“密码”两个表单字段以便用户输入数据。Login.jsp页面的关键代码如下:

例程46 代码位置:光盘\TM\01\pages\admin\Login.jsp

<%@ taglib prefix="s2" uri="/struts-tags" %>

<s2:form action="log_Login.action" theme="simple">

<tr><td colspan="2"><s2:fielderror/></td></tr> <!-- 输出提示信息 -->

<tr>

<td>用户名: </td>

<td><s2:textfield name="user.userName" size="30"/></td>

</tr>

<tr>

<td>密 码: </td>

<td><s2:password name="user.userPassword" size="30"/></td>

</tr>

</s2:form>

3.创建封装登录表单数据的JavaBean

该JavaBean用来保存输入的用户名和密码。代码如下:

例程47 代码位置:光盘\TM\01\src\com\yxq\model\UserSingle.java

package com.yxq.model;

public class UserSingle{

private String userName; //对应表单中的“用户名”字段

private String userPassword; //对应表单中的“密码”字段

……//省略了属性的setXXX()与getXXX()方法

}

4.创建LogInOutAction类

LogInOutAction类用来处理用户登录和退出登录请求。代码如下:

例程48 代码位置:光盘\TM\01\src\com\yxq\action\LogInOutAction.java

package com.yxq.action;

import com.yxq.actionSuper.MySuperAction;

import com.yxq.dao.OpDB;

import com.yxq.model.UserSingle;

public class LogInOutAction extends MySuperAction {

protected UserSingle user; //封装表单数据的JavaBean

public UserSingle getUser() {

return user;

}

public void setUser(UserSingle user) {

this.user = user;

}

……//此处为判断当前用户是否登录的isLogin()方法

……//此处为验证用户身份的Login()方法

……//此处为处理退出登录的Logout()方法

……//此处为表单验证方法validateLogin()

}

当用户触发“进入后台”超链接后,请求由LogInOutAction类中的isLogin()方法验证用户是否已经登录。isLogin()方法的代码如下:

例程49 代码位置:光盘\TM\01\src\com\yxq\action\LogInOutAction.java

/* 功能:判断当前用户是否登录 */

public String isLogin(){

Object ob=session.get("loginUser");

if(ob==null||!(ob instanceof UserSingle)) //如果对象为空,或者不是UserSingle类的实例,表示没有登录

return INPUT; //返回登录页面

else //已经登录

return LOGIN; //进入后台

 


上一章目录下一章

Copyright © 读书网 www.dushu.com 2005-2020, All Rights Reserved.
鄂ICP备15019699号 鄂公网安备 42010302001612号