您的位置:首页 > 编程语言 > Java开发

javabean基础应用

2010-05-16 23:01 267 查看
javabean基础应用
一、实验目的
通过实验掌握下列知识:
1    掌握javabean的基本概念;
2    掌握javabean和表单的配合使用;
 
二、实验内容及步骤
1、表单数据回显功能的实现
改进实验三的内容,设计登录验证功能。
原实验三的内容为:在原创教务系统中,系统会根据用户类型(教师/学生)显示不同的页面。为模拟该功能,需要定义设计如下页面:
-Login.html:包括用户类型名(默认为学生类型)、用户名、用户密码
-Forward.jsp: 根据用户类型,进行任务转发。如果是教师类型,把任务转发给Teacher.jsp;如果是学生类型,把任务转发给Student.jsp
-Teacher.jsp:    如果用户名和密码都等于TEACHER,把用户名写入到Session中,同时输出“登录成功”,否则页面返回到Login.html
-Student.jsp: 输出:您输入的用户名是***。
在此基础上,设计登录验证功能,在Teacher.jsp和Student.jsp页面中增加判断:1)若Teacher.jsp中获得的密码不为teacher,或Student.jsp中获得的密码不为student,则返回Login.html;
在Teacher.jsp中加入如下代码:
    String name = request.getParameter("Username");
    String password = request.getParameter("Password"); 
    if(name.equals("teacher")&&password.equals("teacher")){
       out.println("登录成功");
    }
    if(!password.equals("teacher")){
       response.sendRedirect("Login.jsp");   
    }
在Student.jsp中加入如下代码:
    String name = request.getParameter("Username");
    String password = request.getParameter("Password");
    if(!password.equals("student")){
       response.sendRedirect("Login.jsp");
    }
2)在Login.jsp中显示该用户已经选择的用户类型和已经输入的用户名,在用户密码一栏为空,并在该栏之后用红色显示为“***密码错误,请重填!***”;
       解决方案:
Login.jsp文件的源代码:
主要是用到了session来表示是第一次登录,还是登录失败之后返回的
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%!
    String failStr = "***密码错误,请重填!***";
 %>
 
 <%
    String passwordBySession = (String)session.getAttribute("password");
    if(passwordBySession==null||passwordBySession.equals("right")){
       failStr ="";
    }
    System.out.println(failStr);
 %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
   
    <title>登录</title>
   
 </head>
 
 <body>
     <form name="Login" action="Forward.jsp" method="post">
 <table>
 <tr>
       <td>用户类型</td>
       <td>
          <select name ="User">
          <option value="Student">学生</option>
          <option value="Teacher">老师</option>
          </select>
       </td>
  </tr>
  <tr>
  <td>用户名</td>
  <td>
       <input name="Username" type="text" size="20">
  </td>
  </tr>
  <tr>
       <td>用户密码</td>
       <td>
          <input name="Password" type="password" size="20">
       </td>
       <td><font color="#FF0000"><%=failStr%></font></td>
    </tr>
    <tr>
       <td>
       <input type="submit" value="提交">
       </td>
  </tr>
 </table>
 </form>
 </body>
</html>
 
Teacher.jsp中:
<%
    String name = request.getParameter("Username");
    String password = request.getParameter("Password"); 
    if(name.equals("teacher")&&password.equals("teacher")){
       session.setAttribute("password","right");
       out.println("登录成功");
    }
    if(!password.equals("teacher")){
       session.setAttribute("password","wrong");
       response.sendRedirect("Login.jsp");   
      
    }
    else{
    session.setAttribute("password","wrong");
       response.sendRedirect("Login.jsp");
    }
 %>
 
在Student.jsp中:
<%
    String name = request.getParameter("Username");
    String password = request.getParameter("Password");
    if(!password.equals("student")){
       session.setAttribute("password","wrong");
       response.sendRedirect("Login.jsp");
      
    }
    session.setAttribute("password","right");
    out.println("您输入的用户名是"+name);
%>
 
登录失败后的结果:


 
 
3)若Teacher.jsp中获得的用户名不为teacher,或Student.jsp中获得的用户名不为student,则返回Login.html,并在Login.html中显示该用户已经选择的用户类型,使用户名一栏之后用红色显示为“***用户名错误,请重填!***”,用户密码一栏为空。该功能要求用javabean实现(注意null point判断)。
源代码:
新建一个包user,再在包中建一个User的类

具体结构:

 




Uuser类的源代码:
package user;
 
publicclass User {
    private String kind;
    private String name;
    private String password;
   
    public User(){
       kind = "Teacher";
       name = "";
       password = "";
    }
   
    public String getKind() {
       returnkind;
    }
    publicvoid setKind(String kind) {
       this.kind = kind;
    }
    public String getName() {
       returnname;
    }
    publicvoid setName(String name) {
       this.name = name;
    }
    public String getPassword() {
       returnpassword;
    }
    publicvoid setPassword(String password) {
       this.password = password;
    }
   
   
}
 
Login.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%@ page import="user.User" %>
<%--我开始使用JavaBean,scope类型是application,对数据的改变我是在Forward做的,这里主要是数据回显--%>
<jsp:useBean id="myUser" class="user.User" scope="application"></jsp:useBean>
 
 
 
<%!
    String WrongNameStr = "";//定义一个表示输入数据有误的字符串
%>
 
<%
    //当姓名还没有输入或者输入为空字符串时
    if(myUser.getName()==null||myUser.getName().equals("")){
       WrongNameStr = "";
    }
    //输入的姓名数据正确时
    elseif(myUser.getName().equals("student")||myUser.getName().equals("teacher")){
       WrongNameStr = "";
    }  
    //输入的姓名数据不正确
    else {
       WrongNameStr = "***用户名错误,请重填!***";
    }
 
 %>
 
 
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
   
    <title>登录</title>
   
 </head>
 
 <body>
     <form name="Login" action="Forward.jsp" method="post">
 <table>
 <tr>
       <td>用户类型</td>
       <td>
          <select name ="UserKind">
          <option value="Student">学生</option>
          <option value="Teacher">老师</option>
          </select>
       </td>
  </tr>
  <tr>
  <td>用户名</td>
  <td>
       <%--姓名数据的回显--%>
       <input name="Username" type="text" size="20" value=<%=myUser.getName()%>>
   </td>
  <%--说明输入的数据有问题--%>
  <td><font color="#FF0000"><%=WrongNameStr%></font></td>
  </tr>
 
  <tr>
       <td>用户密码</td>
       <td>
          <input name="Password" type="password" size="20" >
       </td>
   
    </tr>
    <tr>
       <td>
       <input type="submit" value="提交">
       </td>
  </tr>
 </table>
 </form>
 
 </body>
</html>
 
Forward.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%@ page import="user.User" %>
 
 
<%
    //接受从Login传递过来的数据
    request.setCharacterEncoding("gbk");
    String kindOfUser = request.getParameter("UserKind");
    String name = request.getParameter("Username");
    String password = request.getParameter("Password");
   
    //获取JavaBean中的myUser对象
    User myUser = (User)application.getAttribute("myUser");
    //具体赋值,我本来是想在Login中直接赋值,但找不到合适的方法,所以退而求其次写在这里了
    myUser.setKind(kindOfUser);
    myUser.setName(name);
    myUser.setPassword(password);
    //用户类型是学生
    if(kindOfUser.equals("Student")){
       //学生类型的用户名不是“student”,直接返回Login.jsp
       if(!name.equals("student")){
           response.sendRedirect("Login.jsp");
       }
       //登录正确
       else{
           out.println("学生登录成功");
       }
    }
    //老师类型
    elseif(kindOfUser.equals("Teacher")){
       //老师类型的用户名不是“teacher”,直接返回Login.jsp
       if(!name.equals("teacher")){
           response.sendRedirect("Login.jsp");
       }
       //登录正确
       else{
           out.println("老师登录成功");
       }
    }
%>
 
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
   
    <title>Forward.jsp</title>
   
 
 
 </head>
 
 <body>
   
 </body>
</html>
 

运行结果:

第一次进入登陆界面:

 

 



当以学生身份正确登陆时:

 





以不正确方法登陆时:





 

2、附加:尝试用JavaBean实现用户注册功能,用户信息包括用户登陆名、密码、真实姓名、性别、出生年月、籍贯、Email、联系电话、联系地址、QQ号,要求对注册的信息进行有效性判断,并显示在页面。

 建包Register和类User,结构如下:

 




User的源代码:
package RegisterUser;
/*
String StrLoginName = request.getParameter("loginName");
String StrPassword = request.getParameter("password");
String StrpasswordConfirm = request.getParameter("passwordConfirm");
String Strusername = request.getParameter("username");
String StrSex = request.getParameter("sex");
String StrAge = request.getParameter("age");
String StrHome = request.getParameter("home");
String StrEmail = request.getParameter("Email");
String StrpHone = request.getParameter("phone");
String StrLocation = request.getParameter("location");
String StrQQNumber = request.getParameter("QQNumber");
*/
publicclass User {
    private String loginName;
    private String password;
    private String passwordConfirm;
    private String username;
    private String sex;
    private String age;
    private String home;
    private String Email;
    private String phone;
    private String location;
    private String QQNumber;
   
    //构造函数
    public User(){
       loginName = "";
       password = "";
       passwordConfirm = "";
       username = "";
       sex = "";
       age = "";
       home = "";
       Email = "";
       phone = "";
       location = "";
       QQNumber = "";   
    }
    //以下函数是参数的get和set函数
    public String getPhone() {
       returnphone;
    }
 
    publicvoid setPhone(String phone) {
       this.phone = phone;
    }
 
    public String getLoginName() {
       returnloginName;
    }
 
    publicvoid setLoginName(String loginName) {
       this.loginName = loginName;
    }
 
    public String getPassword() {
       returnpassword;
    }
 
    publicvoid setPassword(String password) {
       this.password = password;
    }
 
    public String getPasswordConfirm() {
       returnpasswordConfirm;
    }
 
    publicvoid setPasswordConfirm(String passwordConfirm) {
       this.passwordConfirm = passwordConfirm;
    }
 
    public String getUsername() {
       returnusername;
    }
 
    publicvoid setUsername(String username) {
       this.username = username;
    }
 
    public String getSex() {
       returnsex;
    }
 
    publicvoid setSex(String sex) {
       this.sex = sex;
    }
 
    public String getAge() {
       returnage;
    }
 
    publicvoid setAge(String age) {
       this.age = age;
    }
 
    public String getHome() {
       returnhome;
    }
 
    publicvoid setHome(String home) {
       this.home = home;
    }
 
    public String getEmail() {
       returnEmail;
    }
 
    publicvoid setEmail(String email) {
       Email = email;
    }
 
    public String getLocation() {
       returnlocation;
    }
 
    publicvoid setLocation(String location) {
       this.location = location;
    }
 
    public String getQQNumber() {
       returnQQNumber;
    }
 
    publicvoid setQQNumber(String number) {
       QQNumber = number;
    }
    //判断输入数据的正确与否
    public String checkInformation(){
       String tell ="";
       //判断用户所填的参数是否合格
       //用户名为空
       if(loginName==null||loginName.equals("")){
           tell = "用户名不能为空!";
       }
       elseif(password==null||password.equals("")||passwordConfirm==null||passwordConfirm.equals("")){
           tell = "密码和确认密码不能为空";
       }
       elseif(!password.equals(passwordConfirm)){
           tell = "前后输入的两次密码不同,请重新输入";
       }
       elseif(!isEmail(Email)){
           tell = "邮箱格式有问题";
       }
       else{
           tell = "恭喜注册成功";
       }
       return tell;
      
    }
   
    //判断是否是合格的Email格式
    boolean isEmail(String Email){
       boolean flag = true;
       int locationDot = Email.indexOf(".");
       int locationAt = Email.indexOf("@");
       //.和 @中至少一个不存在
       if(locationDot<0||locationAt<0){
           flag = false;
       }
       //@前面没有任何字符
       elseif(locationAt==0){
           flag = false;
       }
       //.在@前面,或者@和.之间没有任何字符
       elseif(locationDot-1<=locationAt){
           flag = false;
       }
       //.后面没有字符了
       elseif(locationDot==Email.length()-1){
           flag = false;
       }  
       return flag;     
    }
   
   
}
 
JavaBeanRegister.jsp的源代码:
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%@ page import="RegisterUser.User" %>
<jsp:useBean id="user" class="RegisterUser.User" scope="session"></jsp:useBean>
<%!
 
    String tell = "";
%>
 
 
<%
    request.setCharacterEncoding("gbk");
    String StrRegisterok = request.getParameter("registerok");//得到一个隐藏参数,判读进入到这个界面是否是由按提交所得
    if(StrRegisterok!=null&&StrRegisterok.equals("register")){
       //调用uesr的checkInformation()函数,来判断输入数据的情况
       tell = user.checkInformation();
    }
 
 
 
 
%>
 
<html>
 <head>
    <title>注册</title>
 </head> 
 <body>
 
 <form name ="register" action="JavaBeanRegister.jsp" method="post">
 <input name="registerok" type="hidden" value="register">
 <table>
  <tr>
       <td>用户登陆名</td>
       <td>
          <input name="loginName" type="text" size=20 value="<%=user.getLoginName()%>" >
       </td>
  </tr>
     <tr>
       <td>密码</td>
       <td>
          <input name=password type="password" size=20 value="<%=user.getPassword() %>">
       </td>
  </tr>
     <tr>
       <td>确认密码</td>
       <td>
          <input name="passwordConfirm" type="password" size=20 value="<%=user.getPasswordConfirm() %>">
       </td>
  </tr>
     <tr>
       <td>真实姓名</td>
       <td>
          <input name="username" type="text" size=20 value="<%=user.getUsername() %>">
       </td>
  </tr>
     <tr>
       <td>性别</td>
       <td>
           <input name="sex" type="radio" value="man" checked="checked">男  
          <input name="sex" type="radio" value="woman">女
       </td>
  </tr>
     <tr>
       <td>出生年月</td>
       <td>
           <input name="age" type="text" size=20 value="<%=user.getAge() %>">
       </td>
  </tr> 
   <tr>
       <td>籍贯</td>
       <td>
           <input name="home" type="text" size=20 value="<%=user.getHome() %>">
       </td>
  </tr>
     <tr>
       <td>Email</td>
       <td>
           <input name="Email" type="text" size=20 value="<%=user.getEmail() %>">
       </td>
  </tr>
  <tr>
       <td>联系电话</td>
       <td>
           <input name="phone" type="text" size=20 value="<%=user.getPhone() %>">
       </td>
  </tr>
  <tr>
       <td>联系地址</td>
       <td>
           <input name="location" type="text" size=20 value="<%=user.getLocation() %>">
       </td>
  </tr>
  <tr>
       <td>QQ</td>
       <td>
           <input name="QQNumber" type="text" size=20 value="<%=user.getQQNumber() %>">
       </td>
  </tr>
  
      
  <tr>
       <td>
       <input name="submit" type="submit" value="提交">
       </td>
  </tr>
 
 </table>
 </form>
 <jsp:setProperty name="user" property="*"/>
    <p><font color="#FF0000"><%=tell %></font></p>
 </body>
</html>

运行结果:

 




3. 实验收获及碰到的问题等。
遇到的问题是如果输入数据的类型为select和radio时,如何用JavaBean来实现它的功能,这个到现在我还没有好的方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息