1. JavaBean的开发
用户信息封装成一个值对象的JavaBean,这个JavaBean只包含与用户信息相关的属性和与这些属性相关的getter,setter方法。如下是用户信息的JavaBean:UserInfo
package com.javabean.demo;
public class UserInfo {
//属性
private String userid;
private String name;
private String password;
//getter方法
public String getUserid(){
return userid;
}
public String getName(){
return name;
}
public String getPassword(){
return password;
}
//setter方法
public void setUserid(String userid){
this.userid = userid;
}
public void setName(String name){
this.name = name;
}
public void setPassword(String password){
this.password = password;
}
}
UserInfo仅仅表示用户信息的属性,没有任何业务方法,它的主要用途是数据的传递。UserInfo的每个属性对应于提交的表单中的一个参数。
执行数据库操作的JavaBean代码:UserRegist
package com.javabean.demo;
import java.sql.*;
public class UserRegist {
private Connection conn;
private UserInfo userInfo;
//获得数据库连接
public UserRegist(){
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=jspdev", "sa", "sql123");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//设置待注册的用户信息
public void setUserInfo(UserInfo userInfo){
this.userInfo = userInfo;
}
//注册用户
public void Regist(){
String sql="insert into user_Info values (?,?,?)";
try{
//创建一个预处理语句,然后设置它们的参数
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, userInfo.getUserid());
ps.setString(2, userInfo.getName());
ps.setString(3, userInfo.getPassword());
//执行更新操作
ps.executeUpdate();
}catch(Exception e){
e.printStackTrace();
}
}
}
UserInfo作为UserRegist的一个属性,这个属性可以在JSP页面中进行设置。在UserRegist的构造方法中,创建了一个到数据库的连接。
通过regist()方法执行数据库相关的操作。在这个方法中,首先通过connection对象创建一个预处理语句,然后设置这个预处理语句的参数。设置完参数后,通过ps.executeUpdate()方法执行数据库操作。如果在注册时发送了错误,那么将把这个异常抛出到JSP页面。
2. JSP页面的开发
两个JSP页面:一个用于接收用户信息的输入的JSP,一个用于注册用户信息到数据库的JSP。执行注册的JSP首先通过JavaBean获得用户请求的参数,然后通过UserRegist JavaBean 执行具体的注册操作。
regist.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"">
<title>用户注册页面</title>
</head>
<body>
<form name="form1" action="newuser.jsp" method="get">
<table>
<tr>
<td>用户名:</td>
<td><input type="text" name="userid"></td>
</tr>
<tr>
<td>真实名:</td>
<td><input type="text" name="name"></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" name="password"></td>
</tr>
</table>
<input type="submit" value="注册">
</form>
</body>
</html>
newuser.jsp
分析蓝色部分代码:
这里使用UserInfo JavaBean接收客户端的输入参数必须注意的是,客户端的输入参数的名字和JavaBean属性的名字必须一一对应。
<jsp:setProperty name="userInfo" property="*"/>
一个语句就接收了客户端的所有参数。更让人人兴奋的是,内在的机制还把客户端的输入参数类型自动转换成JavaBean类型。
regist.setUserInfo(userInfo);方法把userInfo作为参数来设置RegistUser的userInfo属性。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<jsp:useBean id="userInfo" scope="page" class="com.javabean.demo.UserInfo">
<jsp:setProperty name="userInfo" property="*"/>
</jsp:useBean>
<jsp:useBean id="regist" scope="page" class="com.javabean.demo.UserRegist">
<jsp:setProperty name="regist" property="*"/>
</jsp:useBean>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>信息注册执行页面</title>
</head>
<body>
<%
regist.setUserInfo(userInfo);
regist.Regist();
out.println("注册成功");
%>
</body>
</html>