电脑编程用户注册界面java_用JSP/Servlet开发简单的用户注册系统
用JSP/Servlet开发简单的用户注册系统
2.4界面编程实现
通过JavaBeans封装了大部分的逻辑或数据操作功能。这样,JSP页面中就可以减少很多Java代码,从而使得JSP的建立和修改变得方便。
2.4.1登录验证页面
用户注册系统主要是为了保护一些资源不被未被授权的用户访问,因此在具体应用中,如果没有登录的用户访问到那些被保护的资源,如何才能提示用户需要登录或注册?
假设用户访问index.jsp页面,而该页面只能是注册用户才能访问,那么在index.jsp的页头加入下列语句:
这表示要在本页index.jsp其他代码运行前,必须先运行signin.jsp。signin.jsp是用户的登录页面,用户通过登录页面实现用户和密码的验证。
登录页面signin.jsp的代码如下:
charset=UTF-8" %>
scope="session" class="com.jdon.simpleregister.SignIn"
/>
if (signIn.getAction() != null){
if (!signIn.validate())
out.println("
用户名或密码错误");
if (signIn.SignIn())
out.println("
登录成功");
}
if
(!signIn.isAuth()){ //如果没有进行过登录验证
%>
用户注册
method="post">
value="login">
用户:
name="userid" size="10">
密码:
type="password" name="password"
size="10">
value="Reset">
//将之前参数保存起来,准备再次提交
java.util.Enumeration e=request.getParameterNames();
while(e.hasMoreElements()){
String
param=(String)e.nextElement();
out.println("
name=\""+param+"\"
value=\""+request.getParameter(param)+"\"
>");
} %>
return;
}%>
在这个signIn.jsp中实现了两大功能:第一是提供用户第一次登录验证功能;第二是保存第一次登录验证信息。
首先,在signin.jsp中,提供了登录用表单界面显示,当用户填写好表单Form按提交后,实现表单中用户名和密码的验证功能。
signin.jsp通过检查signIn.getAction()是否为空来判断当前是显示表单还是处理表单,只有用户提交登录表单,signIn.getAction()将为“login”,这是执行signIn.
SignIn()方法,将提交表单中的用户名和密码与数据库中数据进行比较,如果验证错误,signIn.isAuth()还是不为真,将继续显示登录表单要求用户再次输入,直至登录验证正确。
如果用户已经通过了验证,SignIn实例将以Session形式继续存在,因为所有被保护的JSP页面都会include这个signin.jsp文件。因此,将每次都调用signIn.isAuth(),而同一个用户每次访问的都是同一个SignIn实例。这样,该用户第一次通过查询数据库登录验证后,以后就不必再次实行数据库操作,提高了页面处理速度。这也是缓冲Cache的一种优势体现。
新用户注册是本项目的主要功能,需要显示用户应该输入的相应条目,用户输入Form表单数据后,将提交另外一个JSP页面处理。现在将这两个功能也合并在一个JSP页面中实现。同时个人资料有新增和修改两个功能,在signup.jsp中也将这两个功能合并在一起。
在signup.jsp实现4个功能:个人资料新增表单的显示;处理新增表单;个人资料修改表单的显示;处理修改后的表单。
注册页面signup.jsp的代码主要结构如下:
charset=UTF-8" %>
//如果本页面出错,直接显示errorpage.jsp内容
errorPage="errorpage.jsp?from=signup.jsp" %>
import="com.jdon.simpleregister.Constants"%>
scope="session" class="com.jdon.simpleregister.SignIn"
/>
scope="page" class="com.jdon.simpleregister.Profile" />
property="*" />
//如果提交的是新增动作
if (request.getParameter("add")!=null)
{
//并且现有数据库这个email没有存在
if (prof.EmailExist()){
%>
page="error.jsp?error_info=email已经存在 请重新调换一个!"
flush="true"/>
return;
}
//通过Profile类的insert()方法将提交的表单中数据插入
int rs=prof.insert();
%>注册成功!
}else if
(request.getParameter("edit")!=null) //如果是编辑
{
// SignIn实例必须在session中存在,在SignIn实例中
//保存用户的用户和密码
if (!signIn.SignIn()) {
out.println("No login");
return;
}
//处理用户修改后的表单数据
prof.update();
%>注册资料修改成功!
}else{
%>
method=post οnsubmit="return Juge(this);">
//将SignIn实例中的userid赋值给Profile实例prof
prof.setUserid(signIn.getUserid());
//prof根据输入的参数userId,查询该用户数据库中其他数据,并保存在
//prof相关变量中
if (signIn.SignIn() && prof.select()){
%>
用户名:
type="hidden" name="edit" value="1">
}else{//否则 当前为显示个人资料新增表单
用户名
class="button" name="userid" value="" size=10>
}
%>
…
新增个人资料和编辑个人资料的重要区别是:后者用户必须是登录后的,即执行signin.jsp并且验证成功。因为scope是session,那么SignUp这个类的实例就在内存中一直存在,直到该用户离开系统,其他JSP就可以直接从内存中获得SignUp实例中变量,这些变量的值由用户在signin.jsp输入的。
个人资料新增表单的示意图如图2-4所示。
如果用户通过登录页面登录成功后,再执行signup.jsp,结果显示也几乎是图2-4,不同的是,各个数据空格中已经有相应的数据值,新增和编辑都使用的是同一个JSP页面,这样显得简洁有效。
在signup.jsp中使用了
errorPage="errorpage.jsp?from=signup.jsp" %>,这表示signup.jsp万一发生错误,不直接显示那些错误,而是转而显示errorpage.jsp。在errorpage.jsp会显示更加友好的提示信息,比如“对不起,页面出错了,请和系统管理员联系”。塑造一个界面友好的系统是成熟产品的一个象征,如图2-5所示。
图2-4个人资料新增页面图2-5出错帮助页面
2.5调试、发布和运行
单元测试是非常重要的。本项目中关键的是两个通用类,要对这两个通用类实现单元测试,以保证功能符合要求地正常运行。
关于重要类的单元测试成功后,需要将本项目放置在Web容器中进行集成测试。这时,如果JSP中包含过多的Java代码,将使得JSP的调试变得异常困难。只有在设计编码时,将有关业务逻辑的功能代码在JavaBeans中实现,依靠JavaBeans的成功测试,这样才能保证JSP页面的测试能够快速通过。
本项目中需要对两个通用类实现单元测试,一方面因为它们功能非常重要,另外一方面因为这两个通用类涉及到系统环境的配置。
以E-mail发送的SendMail.java测试为例。使用JUnit实现单元测试,Junit(http://www.junit.org)是一个开放源代码的测试软件,应用非常广泛。
Junit的使用非常简单,实际只要两步:
(1)继承junit.framework.TestCase类编写自己的测试类;
(2)在测试类中编写自己的testXXXXX()方法。
一般开发J2EE系统都会使用IDE工具辅助开发,在以后章节中谈到在J2EE开发中为什么必须依赖IDE才能提高开发速度。JBuilder作为首选的IDE工具使用也非常广泛,在JBuilder中使用Junit更加方便。
首先,需要在JBuilder中安装Junit的库文件junit.jar,然后在JBuilder中建立一个新的TestCase,取名为TestSendMail,它是继承junit.framework.TestCase的,用来测试SendMail.java,代码如下:
import junit.framework.*;
public class TestSendMail extends TestCase {
private SendMail sendMail = null;
protected void setUp() throws Exception {
super.setUp();
//构造SendMail的一个实例
sendMail = new SendMail();
}
protected void tearDown() throws Exception {
sendMail = null;
super.tearDown();
}
}
上面测试代码的基本框架已经完成,下面就是增加自己的测试方法,需要对SendMail.java的sendnow()方法实行测试,因此在TestSendMail.java中加入testSendnow(),方法如下:
public void testSendnow() {
sendMail.setMsgText("hello this is test");
sendMail.setFrom("banq@jdon.com");
sendMail.setSmtpHost("localhost");
sendMail.setTo("banq@jdon.com");
sendMail.setSubject("test");
try {
sendMail.sendnow();
} catch (Exception e) {
System.err.println(" error:
" + e);
}
}
在JBuilder中,建立TestSendMail.java测试类的同时,已经在这个project的run中自动增加一个TestSendMail的配置。因此,现在就可以直接运行TestSendMail测试类了。
注意,TestSendMail中发送邮件的SMTP服务器是设置成localhost。那么如果使用Windows 2000,就要配置Windows的SMTP服务功能,当然也可以指定其他域名或IP地址作为SMTP服务器。
通过运行TestSendMail,在没有错误显示的情况下,banq@jdon.com会收到一封该测试类发出的信件。
电脑编程用户注册界面java_用JSP/Servlet开发简单的用户注册系统相关推荐
- javaweb基于JSP+Servlet开发网上作业批改系统 大作业 毕业设计
基于JSP+Servlet开发网上作业批改系统(大作业/毕业设计) 开发环境: Windows操作系统 开发工具:MyEclipse+Jdk+Tomcat+SQLSERVER数据库 运行效果图: ...
- javaweb基于JSP+Servlet开发校园在线问卷调查系统 课程设计 大作业 毕业设计源码
基于JSP+Servlet开发校园在线问卷调查系统(大作业/毕业设计) 开发环境: Windows操作系统 开发工具:MyEclipse+Jdk+Tomcat+MYSQL数据库 运行效果图: 基于 ...
- 在线答疑系统源码java_java+jsp+servlet+mysql在线教学答疑系统
需求分析 基于java+jsp+servlet+mysql技术, 实现一个在线教学答疑系统, 学生可以通过该网站提出问题留言,教师登录后可以进行答疑, 系统管理员可以对答疑系统进行管理 运行环境 ja ...
- jsp+servlet搭建在线投票问卷系统
jsp+servlet搭建在线投票问卷系统 点赞再看,养成习惯 程序帮QQ:1022287044 开发环境准备 jdk1.8 tomcat8 mysql5.7 intellij IDEA 系统采用技术 ...
- java在线商城系统源码jsp+servlet+mysql实现的在线商城系统源码
今天给大家演示一款由jsp servlet MySQL实现的在线商城系统,本系统实现了管理员管理用户.商品(商品分类).订单.留言.新闻等功能,前台会员注册登录,查看商品信息,加入商品到购物车.提交订 ...
- javaweb基于JSP+Servlet开发水费管理系统+论文 大作业 毕业设计
基于JSP+Servlet开发水费管理系统+论文(大作业/毕业设计) 开发环境: Windows操作系统 开发工具:MyEclipse+Jdk+Tomcat+SQLServer数据库 运行效果图: ...
- java项目-第137期jsp+servlet的周公算命预测系统-java毕业设计
java项目-第137期jsp+servlet的周公算命预测系统-计算机毕业设计 [源码请到资源专栏下载] 今天分享的项目是<周公算命预测系统> 该项目分为管理员和普通用员2个角色. 管理 ...
- javaweb基于JSP+Servlet开发大数据与应用专业企业门户网站源码 课程设计 大作业
基于JSP+Servlet开发大数据与应用专业企业门户网站:(大作业/课程设计) 开发环境: Windows操作系统 开发工具: Eclipse+Jdk+Tomcat+MYSQL数据库 运行效果图: ...
- javaweb基于JSP+Servlet开发药店(私人诊所)管理系统设计与实现源码+论文 +视频讲解 毕业设计
基于JSP+Servlet开发私人诊所(药店)管理系统设计与实现+论文:(毕业设计/课程设计) 开发工具: MyEclipse+Jdk+Tomcat+SQLServer数据库 运行效果图 基于JSP+ ...
最新文章
- VScode配置ROS环境
- 04_NoSQL数据库之Redis数据库:set类型和zset类型
- DISCUZ x2.5 插件实现DIY功能,让页面也可以自由设计
- aix解锁oracle用户,aix用户被锁定的解决办法
- LeetCode 947. 移除最多的同行或同列石头(并查集)
- android 闪存软件测试,手机为什么这么卡:闪存I/O测试AndroBench
- 一个深圳程序员被一美女骗到东莞迷強
- php 返回object,深入分析使用mysql_fetch_object()以对象的形式返回查询结果
- properties加载的几种方式
- Word:不显示图片 + 清空“最近使用的文档”列表
- mysql 中文 转 拼音_MySQL中文转换成拼音的函数
- 考研英语 单词常见熟词生义
- 室内定位方案部署WIFI定位还是IBeacon定位-新导智能
- WordPress插件 Hide My WP 没人知道你使用的是WP系统[更新v3.0]
- 剑指Offer(java答案)
- 【2022-05-26】小红书蒲公英x-s x-t
- 提高动作节拍:一、让气缸速度更快: 1.快速排气阀
- 计算机术语宏,define
- 使用wmi显示rpc服务器不可用,WMI:“RPC服务器不可用”错误只为域用户
- 007_02ListView与BaseAdapter的参数
热门文章
- LIS(基于贪心的O(NlogN)解法)
- 二叉树的先序建树后序输出
- 基于php和服务器推技术的web即时聊天系统,基于php和服务器推技术的Web即时聊天系统...
- 宜搭数据量扩容升级公告
- Service Mesh 为什么从“趋势”走向“无聊”?
- 阿里资深技术专家崮德:如何成就更好的自己
- 如何用好云原生数据湖?
- 视频豪横时代,应用如何快速构建视频点播能力?
- 媒体声音 | 憋了这么久,阿里云数据库再放大招
- 崩坏3日记:戴尔超限专武天天出,我们的快乐变为刷题式重复养成