要创建注册表格, 数据库中必须有一个表。你可以在JSP文件中编写数据库逻辑, 但是将其与JSP页面分开是更好的方法。在这里, 我们将使用DAO, Factory方法, DTO和Singletion设计模式。有很多文件:
- index.jsp用于从用户获取值
- User.java, 一个具有属性以及setter和getter方法的bean类。
- process.jsp, 一个处理请求并调用方法的jsp文件
- Provider.java, 一个包含许多常量的接口, 例如DRIVER_CLASS, CONNECTION_URL, USERNAME和PASSWORD
- ConnectionProvider.java, 一个返回Connection对象的类。它使用Singleton和工厂方法设计模式。
- RegisterDao.java, 一个DAO类, 负责访问数据库
在此示例中, 我们使用Oracle10g数据库与数据库连接。首先让我们在Oracle数据库中创建表: |
CREATE TABLE"USER432"
( "NAME" VARCHAR2(4000), "EMAIL" VARCHAR2(4000), "PASS" VARCHAR2(4000)
)
/
我们在这里创建了名为user432的表。
index.jsp这里只有三个字段, 以使概念更清晰并简化应用程序流程。你还可以根据需要设置其他字段, 例如国家/地区, 爱好等。
<
form action="process.jsp">
<
input type="text" name="uname" value="http://www.srcmini.com/Name..." onclick="this.value=''"/>
<
br/>
<
input type="text" name="uemail"value="http://www.srcmini.com/Email ID..." onclick="this.value=''"/>
<
br/>
<
input type="password" name="upass"value="http://www.srcmini.com/Password..." onclick="this.value=''"/>
<
br/>
<
input type="submit" value="http://www.srcmini.com/register"/>
<
/form>
process.jsp这个jsp文件包含所有到bean类的对象的输入值, 该类作为参数传递给RegisterDao类的register方法。
<
%@page import="bean.RegisterDao"%>
<
jsp:useBean id="obj" class="bean.User"/>
<
jsp:setProperty property="*" name="obj"/>
<
%
int status=RegisterDao.register(obj);
if(status>
0)
out.print("You are successfully registered");
%>
User.java
该bean类具有setame和getter方法的3个属性uname, uemail和upass。 |
package bean;
public class User {
private String uname, upass, uemail;
public String getUname() {
return uname;
}public void setUname(String uname) {
this.uname = uname;
}public String getUpass() {
return upass;
}public void setUpass(String upass) {
this.upass = upass;
}public String getUemail() {
return uemail;
}public void setUemail(String uemail) {
this.uemail = uemail;
}}
Provider.java此接口包含四个常量, 每个数据库的常量可能不同。
package bean;
public interface Provider {
String DRIVER="oracle.jdbc.driver.OracleDriver";
String CONNECTION_URL="jdbc:oracle:thin:@localhost:1521:xe";
String USERNAME="system";
String PASSWORD="oracle";
}
ConnectionProvider.java此类负责返回Connection对象。此处, 驱动程序类仅加载一次, 并且连接对象仅获取一次内存。
package bean;
import java.sql.*;
import static bean.Provider.*;
public class ConnectionProvider {
private static Connection con=null;
static{
try{
Class.forName(DRIVER);
con=DriverManager.getConnection(CONNECTION_URL, USERNAME, PASSWORD);
}catch(Exception e){}
}public static Connection getCon(){
return con;
}}
RegisterDao.java【JSP中的注册表】此类将Bean组件的值插入数据库。
package bean;
import java.sql.*;
public class RegisterDao {public static int register(User u){
int status=0;
try{
Connection con=ConnectionProvider.getCon();
PreparedStatement ps=con.prepareStatement("insert into user432 values(?, ?, ?)");
ps.setString(1, u.getUname());
ps.setString(2, u.getUemail());
ps.setString(3, u.getUpass());
status=ps.executeUpdate();
}catch(Exception e){}
return status;
}}
推荐阅读
- 使用JSP将文件上传到服务器
- JSP中的分页
- JSP中的MVC
- JSP中的登录和注销示例
- jsp(useBean操作标记)
- jsp(setProperty和jsp:getProperty操作标签)
- jsp(include动作标签)
- JSP动作标签
- JSP JavaBean