所有代码:
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>