javabean按例分析开发方法

来源:互联网 发布:bae专业版 数据库 编辑:程序博客网 时间:2024/05/19 20:38

 

所有代码:

UserInfo.java

package com.william.TestJDBC.bean;

 public class UserInfo  //该类用来初始化所要用到的函数 包含一些set get器
 {
     private String userid;
     private String name;
    
     // setter property
     public void setUserid(String value)
     {
         this.userid=value;
     }
     public void setName(String value)
     {
         this.name=value;
     }
    
     // getter property
     public String getUserid()
     {
         return this.userid;
     }
     public String getName()
     {
         return this.name;
     }
 }

UserRegist.java

package com.william.TestJDBC.bean;

import java.sql.*;

public class UserRegist {
 private UserInfo userInfo;//新建构造方法

 private Connection conn;

 // get database connection
 public UserRegist() {   
  String CLASSFORNAME = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
  String SERVANDDB = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test";
  String USER = "sa";
  String PWD = "123";

  try {
   Class.forName(CLASSFORNAME);
   conn = DriverManager.getConnection(SERVANDDB, USER, PWD);

  } catch (Exception e) {
   e.printStackTrace();
  }
 }

 // set register user info
 public void setUserInfo(UserInfo userInfo) {
  this.userInfo = userInfo;
 }

 // begin register
 public void regist() throws Exception {
  String reg = "INSERT INTO user_info values(?,?)";

  try {
   PreparedStatement pstmt = conn.prepareStatement(reg);

   pstmt.setString(1, userInfo.getUserid());
   pstmt.setString(2, userInfo.getName());

   pstmt.executeUpdate();

  } catch (Exception e) {
   e.printStackTrace();
   throw e;
  }
 }

 public ResultSet registSelect() throws Exception {

  ResultSet rs = null;

  String reg = "select * from user_info";

  try {
   PreparedStatement pstmt = conn.prepareStatement(reg);
   rs = pstmt.executeQuery();
  } catch (Exception e) {
   e.printStackTrace();
   throw e;
  }
  return rs;
 }
}

index.jsp

<%@ page language="java" pageEncoding="utf-8"%>
<html>
<head>
<title>JavaBean Sample</title>
</head>
<body>
<script language="javascirpt">
  function RgValidation()
  {
    if(document.form1.userid.value=="")
    {
    window.alert("Please input userID");
    }
    if(document.form1.name.value=="")
    {
    window.alert("Please input name");
    }
    return true;
}
  </script>
<%String userid = request.getParameter("userid");//只是取做判断的!
   String name = request.getParameter("name");
   if (userid == null) {
    userid = "";
   }
   if (name == null) {
    name = "";
   }

   %>
<form name="form1" method="post" action="newuser.jsp">注册页面(Demo)
<hr>
输入用户ID: <input size="15" name="userid" value=<%=userid %>></input><br>
输入用户名: <input size="15" name="name" value=<%=name%>></input> <input
 type="submit" name="submit!" value="插入"></form>
</body>
</html>

newuser.jsp

<%@ page language="java" pageEncoding="utf-8"%>

<jsp:useBean id="userInfo" class="com.william.TestJDBC.bean.UserInfo"
 scope="page">
 <jsp:setProperty name="userInfo" property="*" />
</jsp:useBean>

<jsp:useBean id="regist" class="com.william.TestJDBC.bean.UserRegist"
 scope="page" />

<%//使用第二个Bean的时候可以看出这种调用方法是隐含的将类给构造了一次!
   regist.setUserInfo(userInfo);//从index中取得userid和name将其用set器设置
   regist.regist();//调用regist方法 插入数据库
   response.sendRedirect("userselect.jsp");//此步用来将这个JSP文件作为中间件直接转到userselect界面
  %>

<html>
<head>
<title>My JSP 'newuser.jsp' starting page</title>
</head>

<body>
This is my JSP page.
<br>
</body>
</html>

userselect.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
 import="java.sql.*" pageEncoding="GB2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<jsp:useBean id="userInfo" class="com.william.TestJDBC.bean.UserInfo"
 scope="page">
 <jsp:setProperty name="userInfo" property="*" />
</jsp:useBean>

<jsp:useBean id="registsel" class="com.william.TestJDBC.bean.UserRegist"
 scope="page" />

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<table width="590" cellspacing="1">
 <thead>
  <tr>
   <td>ID号</td>
   <td>姓名</td>
  </tr>
 </thead>
 <tbody>
  <%registsel.setUserInfo(userInfo);
   ResultSet rs = null;
   rs = registsel.registSelect();
   while (rs.next()) {
    registsel.setUserInfo(userInfo);
    userInfo.setUserid(rs.getString("userID"));
    userInfo.setName(rs.getString("userName"));

    %>
  <tr>
   <td><%=userInfo.getUserid()%></td>
   <td><%=userInfo.getName()%></td>
  </tr>
  <%}

  %>
 </tbody>
</table>

</body>
</html>

一个javabean程序的调用步骤:

一.元素类UserInfo:

   创建一个需要使用的元素的类,将所需要使用的元素设置为私有属性,然后给它设置set get器

二javabean类(UserRegist):

  1. 为刚才的元素类创建一个对象:

         Private UesrInfo userinfo;

   2. 建立与数据库连接的办法:

        定义一个构造函数UserRegist 构造函数中申明

    CLASSFORNAME(申明接口名,固定为"com.microsoft.jdbc.sqlserver.SQLServerDriver")

    SERVANDDB(申明数据库调用,格式

                         "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test")

    USER(申明数据库使用者,sa)

    PSW(申明数据库使用者密码 123)

 3.对UserInfo设置一个set器,修改userinfo的值

 4.创建插入数据库的方法regist()  定义抛出异常

     更新操作使用void返回值.

     Select方法使用ResultSet返回值.

      具体操作:

     //插入操作,删除操作类似与此.修改也与此类似

     public void regist() throws Exception {

  String reg = "INSERT INTO user_info values(?,?)";//设置操作语言

  try {

   PreparedStatement pstmt = conn.prepareStatement(reg);

   pstmt.setString(1, userInfo.getUserid());//第一个问号的值

   pstmt.setString(2, userInfo.getName());//第二个问号的值

   pstmt.executeUpdate();//做操作

  } catch (Exception e) {

   e.printStackTrace();

   throw e;

  }

 }

    public ResultSet registSelect() throws Exception {

  ResultSet rs = null;//一开始定义存放的容器rs

  String reg = "select * from user_info";

  try {

   PreparedStatement pstmt = conn.prepareStatement(reg);

   rs = pstmt.executeQuery();

  } catch (Exception e) {

   e.printStackTrace();

   throw e;

  }

  return rs;

 }

三.在JSP中调用.

   <jsp:useBean id="userInfo" class="com.william.TestJDBC.bean.

  UserInfo" scope="page">

  <jsp:setProperty name="userInfo" property="*"/>

  </jsp:useBean>

  <jsp:useBean id="regist" class="com.william.TestJDBC.bean.

  UserRegist" scope="page"/>   //个人觉得这个调用就是java中的构造器

  <%

  //使用第二个Bean的时候可以看出这种调用方法是隐含的将类给构造了一次!

  regist.setUserInfo(userInfo);//从index中取得userid和name将其用set器 设置

  regist.regist();//调用regist方法 插入数据库

  response.sendRedirect("userselect.jsp");//此步用来将这个JSP文件作为中间件直接转到userselect界面

在这里面第一步调用userInfo构造函数

第二步构造UserRegist类 取名叫regist.

先调用设置方法,然后调用刚才定义的插入数据库的方法,便完成操作.

在插入时候,首先是在index中将userid和name传进newuser.jsp中,将两个类都构造完之后,首先调用setuserinfo的set器将userid和username传入,然后当调用regest方法的时候.为了取问好的值,则需要调用userinfo的get器得到两个属性的值将其传入,最后执行更新操作就能够完成对数据库做的操作.

    Select操作,有返回值,可以调用滴

四.再看看select在JSP中的调用

  <jsp:useBean id="userInfo" class="com.william.TestJDBC.bean.

UserInfo"scope="page">

 <jsp:setProperty name="userInfo" property="*" />

</jsp:useBean>

<jsp:useBean id="registsel" class="com.william.TestJDBC.bean

.UserRegist"scope="page" />

这个调用基本上是相同的.然后看主要是下面的取rs记录器里面的值的方法

<table width="590" cellspacing="1">

<thead>

<tr>

<td>ID号</td>

<td>姓名</td>

</tr>

</thead>

<tbody>

 <%registsel.setUserInfo(userInfo);   

   ResultSet rs = null;

   rs = registsel.registSelect();

   while(rs.next()){

  %>

  <tr>

  <td><%=rs.getString("userID"%></td>

  <td><%=rs.getString("userName"%></td> //这里是从rs中取值,自然和刚才的不同鸟

  </tr>

  <%}

  %>

  </tbody>

</table>

下面是根据上面写的插入的方法,为了调用userInfo又写了一个select方法,这样可以把调用的过程看得更加清楚:

<table width="590" cellspacing="1">

<thead>

<tr>

<td>ID号</td>

<td>姓名</td>

</tr>

</thead>

<tbody>

 <%registsel.setUserInfo(userInfo);

   ResultSet rs = null;

   rs = registsel.registSelect();

   while(rs.next()){

    registsel.setUserInfo(userInfo);

       userInfo.setUserid(rs.getString("userID"));

       userInfo.setName(rs.getString("userName"));

  %>

  <tr>

  <td><%=userInfo.getUserid() %></td>

  <td><%=userInfo.getName() %></td>

  </tr>

  <%}

  %>

  </tbody>

</table>

 

原创粉丝点击