实验五 登录与注册(JavaBean)
一、实验目的
-
熟练掌握JSP环境下Java类的编写和使用;
-
熟练掌握JavaBean的配置与使用。
二、实验要求
(一)基本要求:
- 编写一个UserBean类,要求该类具有两个属性name和password,并给出两个属性对应的getter和setter方法。
- 编写主页面index.jsp,该页面提供两个超链接,分别链接到注册页面和登录页面;
- 编写一个注册页面zhuce.jsp,包括:用户名,密码,密码确认以及确认和重设按钮;
- 编写一个登录页面denglu.jsp,包括:用户名,密码以及确认和重设按钮;
- 注册处理treatZhuce.jsp。判断用户名和密码是否为空、密码和密码确认是否相同。如果用户名和密码不为空且密码和密码确认相同,则认为注册成功,将用户的姓名和密码生成UserBean类型对象user,并将该对象按照“user”的键名存入application中。否则认为注册失败。处理结果交给zhuCeResult.jsp显示。
- 登录处理页面treatDengLu.jsp,判断用户名和密码是否为空,若为空则提示用户,否则判断用户名和密码是否与application中“user”对象的用户名和密码匹配。如果是则显示“您好!***登录成功”,生成UserBean类型对象user,设置user的name和password为用户名和密码,并将user对象按照“user”的键名存入到session中;否则提示用户用户名或密码错误。
(二)扩展要求:
- 基于Forward动作标签,将注册处理页面treatZhuCe.jsp拆成三个页面:注册处理页面treatZhuCe.jsp、注册处理结果页面zhuCeSuccess.jsp以及zhuCeFail.jsp。其中注册处理页面treatZhuCe.jsp负责接收注册页面zhuce.jsp传递过来的用户注册信息,并处理信息,根据注册是否成功分别交给注册处理结果页面zhuCeSuccess.jsp以及zhuCeFail.jsp显示。具体如下图所示:
- 基于Forward动作标签,将登录处理页面treatDengLu.jsp拆成三个页面:登录处理页面treatDengLu.jsp、登录处理结果页面dengLuSuccess.jsp以及dengLuFail.jsp。其中登录处理页面treatDengLu.jsp负责接收并处理登录页面denglu.jsp传递过来的用户登录信息,根据登录是否成功分别交给登录处理结果页面dengLuSuccess.jsp以及dengLuFail.jsp显示。具体如下图所示:
三、一些需用的技术
1、本实验中,application对象的一些常见方法
2、session对象的一些常见方法
四、实验步骤
1.基本要求1:新建一个UserBean类,右键点击项目选择new,点击Class
Source folder系统已经自动填写好本项目的名称,package自己填写,还有下面的Name,选择继承抽象方法Inherited abstract methods,如图 ,点击finish,创建完成
输入类名UserBean,选择继承方法,点击finish。
创建类中的两个属性name和password
package com.helloworld.bean;
public class UserBean {
private String name;
private String password;
}
给出对应的getter和setter方法,可以让编译器自动生成,当我们创建好两个属性后,点击Source,选择Generate Getters and Setters,如图:
选择所有生成setter和getter方法
UserBean类自动生成如下代码:
package com.helloworld.bean;
public class UserBean {
private String name;
private String password;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
基本要求2-4在前面实验都展示过了,可以在实验三基本要求找到,下面是相关链接。 实验三基本要求https://blog.csdn.net/m0_75073812/article/details/133720760?spm=1001.2014.3001.5501#:~:text=1-,.%E6%96%B0%E5%BB%BAindex.jsp%E6%96%87%E4%BB%B6,-%E9%A1%B5%E9%9D%A2%E4%B8%AD%E6%9C%89
2.基本要求5 treatZhuCe.jsp,判断用户名和密码是否为空、密码和密码确认是否相同之前实验都已做过,不同的是这里注册成功将用户的姓名和密码生成UserBean类型对象user,并将该对象按照“user”的键名存入application中,前面已经创建UserBean类了,这里生成UserBean类对象user,application对象也在前面实验四用过了,代码如下:
<%@ page language="java" contentType="text/html; charset=GBK"
pageEncoding="GBK"%>
<%@ page import="javax.servlet.*" %>
<%@ page import="javax.servlet.http.*" %>
<%@page import="com.helloworld.bean.UserBean" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="GBK">
<title>注册处理页面</title>
</head>
<body>
<%
request.setCharacterEncoding("GBK");
String name=request.getParameter("Name");
String passw=request.getParameter("PassWord");
String passc=request.getParameter("PassCode");
if(name==null||name.equals("")||passw==null||passw.equals("")){
out.println("用户名或密码为空!");
}
else if(passw.equals(passc)){
//用户的姓名和密码生成UserBean类型对象user
UserBean user=new UserBean();
user.setName(name);
user.setPassword(passw);
//按照“user”的键名存入application中
application.setAttribute("user",user);
response.sendRedirect("zhuCeResult.jsp");
}
else{
out.println("两次密码输入不一样!");
}
%>
</body>
</html>
新建zhuCeResult.jsp,将注册是被处理结果交给zhuCeResult.jsp,这里显示注册失败的原因,代码如下:
<%@ page language="java" contentType="text/html; charset=GBK"
pageEncoding="GBK"%>
<%@ page import="javax.servlet.*" %>
<%@ page import="javax.servlet.http.*" %>
<%@page import="com.helloworld.bean.UserBean" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="GBK">
<title>注册结果处理</title>
</head>
<body>
<%
request.setCharacterEncoding("GBK");
UserBean user = (UserBean) application.getAttribute("user");
out.println("注册成功!"+"<br>");
out.println("用户名:" + user.getName()+"<br>");
out.println("密码:" + user.getPassword());
%>
</body>
</html>
注册成功运行结果如图所示
用户名和密码未填写时,如图所示
密码和密码确认不一致时,效果如图
3.基本要求6:treatDengLu.jsp,这里判断用户名和密码是否与application中的“user”对象的用户名和密码匹配。登陆成功,生成UserBean类型对象user,设置user的name和password为用户名和密码,并将user对象按照“user”的键名存入到session中。登陆失败,则给出提示。
<%@ page language="java" contentType="text/html; charset=GBK"
pageEncoding="GBK"%>
<%@page import="com.helloworld.bean.UserBean" %>
<%@ page import="javax.servlet.*" %>
<%@ page import="javax.servlet.http.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="GBK">
<title>登陆处理页面</title>
</head>
<body>
<%
request.setCharacterEncoding("GBK");
String name=request.getParameter("Name");
String passw=request.getParameter("PassWord");
UserBean user=(UserBean)application.getAttribute("user");
if(name==null||name.equals("")||passw==null||passw.equals("")){
out.println("用户名或密码为空!");
}
else if(name.equals(user.getName())&&passw.equals(user.getPassword())){
user.setName(name);
user.setPassword(passw);
session.setAttribute("user",user);//user对象按照“user”的键名存入到session中
out.println("你好!");
out.print(name);
}
else{
out.println("用户名或密码输入错误!");
} %>
</body>
</html>
这里判断用户名和密码是否和application中“user”对象的用户名和密码是否一致,但是application中“user”对象是在treatZhuCe.jsp中设置,也就是注册成功的“user”对象的用户名和密码,前面我用的用户名为“呜呜呜”,密码为“1”,这里如果想登陆成功,就要用这个用户名和密码。
尝试输入其他用户名或密码,则出现如下效果
如果用户名或密码未填写,则提示如下
4.扩展要求1:用forward标签拆分treatZhuCe.jsp页面,treatZhuCe.jsp如下
<%@ page language="java" contentType="text/html; charset=GBK"
pageEncoding="GBK"%>
<%@ page import="javax.servlet.*" %>
<%@ page import="javax.servlet.http.*" %>
<%@page import="com.helloworld.bean.UserBean" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="GBK">
<title>注册处理页面</title>
</head>
<body>
<%
request.setCharacterEncoding("GBK");
String name=request.getParameter("Name");
String passw=request.getParameter("PassWord");
String passc=request.getParameter("PassCode");
String message="";
if(name==null||name.equals("")||passw==null||passw.equals("")){
message="用户名或密码为空!";%>
<jsp:forward page="zhuCeFail.jsp">
<jsp:param value="<%=message %>" name="message"/></jsp:forward>
<% }
else if(passw.equals(passc)){
UserBean user=new UserBean();
user.setName(name);
user.setPassword(passw);
application.setAttribute("user",user);%>
<jsp:forward page="zhuCeSuccess.jsp">
<jsp:param value="<%=name %>" name="name"/></jsp:forward>
<% }
else{
message="两次密码输入不一样!";%>
<jsp:forward page="zhuCeFail.jsp">
<jsp:param value="<%=message %>" name="message"/></jsp:forward>
<% }
%>
</body>
</html>
zhuCeSuccess.jsp与zhuCeFail.jsp与前面实验三中的代码相同,点击可查看。
5.扩展要求2:用forward标签拆分treatDengLu.jsp。treatDengLu.jsp如下
<%@ page language="java" contentType="text/html; charset=GBK"
pageEncoding="GBK"%>
<%@page import="com.helloworld.bean.UserBean" %>
<%@ page import="javax.servlet.*" %>
<%@ page import="javax.servlet.http.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="GBK">
<title>登陆处理页面</title>
</head>
<body>
<%
request.setCharacterEncoding("GBK");
String name=request.getParameter("Name");
String passw=request.getParameter("PassWord");
String message="";
UserBean user=(UserBean)application.getAttribute("user");
if(name==null||name.equals("")||passw==null||passw.equals("")){
message="用户名或密码为空!";%>
<jsp:forward page="dengLuFail.jsp">
<jsp:param value="<%=message %>" name="message"/></jsp:forward>
<% }
else if(name.equals(user.getName())&&passw.equals(user.getPassword())){
user.setName(name);
user.setPassword(passw);
session.setAttribute("user",user);
%>
<jsp:forward page="dengLuSuccess.jsp">
<jsp:param value="<%=name %>" name="name"/></jsp:forward>
<% }
else{
message="用户名或密码输入错误!";
%>
<jsp:forward page="dengLuFail.jsp">
<jsp:param value="<%=message %>" name="message"/></jsp:forward>
<% } %>
</body>
</html>
dengLuSuccess.jsp和dengLuFail.jsp在实验三中,点击查看。
本实验考查JavaBean中application和session的应用,相关技术也在前面展示,代码仅供参考,如有错误,敬请指正!