JSP

网页应用程序开发

JSP实验10 会员系统的实现

实验目的:掌握会员子系统的实现过程

1 建立系统框架

1-1 创建站点和页面

首先用DW创建一个使用JSP技术的站点jsproot(站点目录使用tomcat的Web应用程序根目录ROOT)

使用现成的Web设计模板templatemo227,包括样例页面、图片和附加样式表,复制到站点目录,根据模板创建网站的样本页temp.jsp

本例中我们使用包括指令(Include)在所有页面中包括相同的顶部导航栏和底部信息栏文件,这样当需要调整这些设置时只需修改一次,具体做法如下:
- 建立header.jsp,保存样例页面中类名为site_title_bar_wrapper的div区段的内容
- 建立footer.jsp,保存样例页面中类名为footer_wrapper的div区段的内容
- 在页面body区段的开始和末尾分别添加包括指令<%@ include file="header.jsp" %>和<%@ include file="footer.jsp" %>

其他通用的页面元素例如左侧栏也可以使用包括指令。要使各页面中导航栏中相应栏目项能够设为当前项状态,需使header.jsp的导航链接的类名动态化,例如创建“主页”index.jsp和“相册”album.jsp两个栏目首页:

<li><a class="<%= section.equals("home")?"current":"" %>" href="index.jsp">主页</a></li>
<li><a class="<%= section.equals("album")?"current":"" %>" href="album.jsp">相册</a></li>

然后在各页面的顶端添加设置所属栏目变量值的代码段,例如主页index.jsp中:

<% String section = "home"; %>

1-2 添加数据库连接

准备好数据库文件cloud.mdb

在DW数据库面板中添加数据库连接conn

驱动程序为sun.jdbc.odbc.JdbcOdbcDriver
连接URL为jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=d:/cloud.mdb

2 在线注册模块

2-1 注册页register.jsp

功能:显示注册新会员表单,将提交的注册信息保存到会员表

以首页为样本创建注册页register.jsp
在页顶添加代码段以正常处理表单提交的中文信息:<% request.setCharacterEncoding("utf-8"); %>
插入表单,表单中添加提示文本“请输入您的注册信息,带*号的为必填项:”,添加8行2列表格,表格中添加文本和文本域账号logname、密码password(密码文本域)、确认密码passrepeat(密码文本域)、联系电话phone、电子邮箱email、通讯地址address(多行文本域)、真实姓名realname和提交按钮

使用“行为”面板为表单添加“检查表单”行为,将账号和密码设为必填项
使用“服务器行为”面板添加“插入记录”服务器行为,插入成功后转到reg_success.jsp
继续添加“用户身份验证>检查新用户名”服务器行为,如果输入的用户名已存在则转到reg_exist.jsp

(补充说明:DW提供的行为不能检查两次密码是否一致,需要修改自动生成的JavaScript代码的MM_validateForm函数,在if (errors)之前手工添加检查两次密码是否一致的代码:) 

	if (password.value != passrepeat.value) {
		errors+='- 两次输入的密码不一致。';
		password.value='';
		passrepeat.value='';
		password.focus();
	

2-2 提示注册成功页reg_success.jsp

功能:提示注册成功,并提供返回主页的链接 

以index.jsp为样本创建提示注册成功页reg_success.jsp,添加“注册成功,欢迎你成为新会员!前往登录页面。”并添加前往index.jsp的链接。

2-3 提示账号已存在页reg_exist.jsp

功能:提示账号已存在,并提供返回注册页的链接 

以reg_exist.jsp为样本创建提示账号已存在页reg_exist.jsp,添加“注册失败,你输入的账号已存在!返回注册页面。”并添加返回register.jsp的链接。

3 会员登录模块

3-1 登录页index.jsp

功能:在首页显示会员登录表单,将提交的账号和密码与会员表中的账号和密码进行比对,比对成功则显示欢迎信息,将登录账号存入阶段变量并隐藏登录表单

在首页index.jsp中插入表单,表单中添加文本域logname、密码文本域password和登录按钮,为表单添加“检查表单”行为,再添加“用户身份验证>登录用户”服务器行为,设置登录成功转到index.jsp或前一个URL,如果登录失败则转到log_fail.jsp

再在登录表单外围添加如下代码段,使得登录成功后不再显示登录表单而是欢迎登录会员的信息:

<% if (session.getAttribute("MM_Username") == null || session.getAttribute("MM_Username").equals("")) { %>
(此处为登录表单form区段)
<% } else { %>
        <h4>欢迎光临云端网,<%= session.getAttribute("MM_Username") %>!</h4>
<% } %>

(补充说明:阶段变量不能直接支持中文,获取包含中文的阶段变量后需要进行编码转换才能正常显示,参见以下代码)

byte b[] = session.getAttribute("MM_Username").toString().getBytes("iso-8859-1");
String str = new String(b, "utf-8");

3-2 提示登录失败页log_fail.jsp

功能:提示登录失败,并提供返回登录页的链接 

以reg_exist.jsp为样本创建登录登录失败页log_fail.jsp,添加“登录失败,请重新输入登录信息!返回登录页面。”并添加返回index.jsp的链接。

3-3 登录用户注销登录

功能:注销登录实际上就是清除登录相关的阶段变量,已登录的会员应该能在任何页面注销登录

在header.jsp中的网站logo之后添加如下代码段,使得所有页面都显示当前登录会员信息:

<% if (session.getAttribute("MM_Username") == null || session.getAttribute("MM_Username").equals("")) { %>
	<a href="register.jsp">注册</a>
<% } else { %>
	<%= session.getAttribute("MM_Username") %>
<% } %>

在账号名之后添加文本“退出”,选定文本添加“用户身份验证>注销用户”服务器行为,注销后转到index.jsp

注册会员登录后的显示效果:

(下次课程将继续介绍会员子系统的修改资料、密码加密和上传头像功能)

 

评论:

发表评论:
该文章禁用评论功能。