现今全部的 Web都是基于数据库的,可见数据库在Web中的开发时如此的重要。然而基本上全部的网站都是要求客户登录的时候都必须事先注册帐号,这样才能进入网页,访问其中的页面,资源。。开发基于数据库的Web程序时,涉及到多个用户同时请求与数据库创建"链接"的问题,但多用户并发处理目前仍是一个难点。该文在对传统数据链接模式的分析基础上,采用了一种基于对象的数据链接池的设计方案。经过链接对象放置预先创建的若干"链接",根据必定的策略管理这些"链接",防止"链接"过多内存开销过大,及链接排队过长问题。并用JAVA实现了该方案,在实际应用中提供了一个高效的链接管理策略,提升了Web数据库应用系统的性能。
一:在此我经过一个实际的例子谈谈我最近最Web得心得,首先咱们创建一个javaWeb项目在Myeclipse下。首先创建好数据库链接,即创建一个Vo对象User类,以下:html
package vo; java
/* 用户名称:<input type="text" name="username"><br>sql
用户密码:<input type="password" name="password"><br> 数据库
用户爱好:<input type="checkbox" name="hobby" value="1">游泳 浏览器
<input type="checkbox" name="hobby" value="2">足球<br> 并发
用户性别:<input type="radio" name="gender" value="male">男 app
<input type="radio" name="gender" value="female">女 eclipse
<input type="radio" name="gender" value="secret">保密<br> jsp
用户职位:<select name="position">post
<option value="CEO">CEO</option>
<option value="CFO">CFO</option>
<option value="CTO">CTO</option>
</select><br>
用户简历:<textarea rows="5" cols="20" name="resume"></textarea>
<input type="submit" value="注册">
*/ public class User {
private int id;
private String userName;
private String passWord;
private String hobby;
private String gender;
private String position;
private String resume;
public int getId() { return id; }
public void setId(int id) { this.id = id; }
public String getUserName() { return userName; }
public void setUserName(String userName) { this.userName = userName; }
public String getPassWord() { return passWord; }
public void setPassWord(String passWord) { this.passWord = passWord; }
public String getHobby() { return hobby; }
public void setHobby(String hobby) { this.hobby = hobby; }
public String getGender() { return gender; }
public void setGender(String gender) { this.gender = gender; }
public String getPosition() { return position; }
public void setPosition(String position) { this.position = position; }
public String getResume() { return resume; }
public void setResume(String resume) { this.resume = resume; }
}
二:这样咱们创建好了实体对象以后,如今咱们来创建UserDAO接口和DAOFactory两个类以下:
package dao;
import vo.User;
public interface UserDAO { //创建一个接口 void save(User user);
}
package factory;
import impl.UserDaoImpl; import dao.UserDAO;
public class DAOFactory { public static UserDAO getUserDAOInstance(){ return new UserDaoImpl(); }
}
三:如今咱们来创建ConnectionUtil类,这里我才用咱们最经常使用的一种方法来链接数据库Database即:
package db;
import java.sql.Connection; import java.sql.DriverManager; import java.util.Properties;
public class ConnectionUtil {
public Connection openConnection() { String driver = ""; String url = ""; String user = ""; String password = ""; Properties prop = new Properties();
//实例化一个配置文件的对象
Connection conn = null;
try {
// 加载属性文件
prop.load(this.getClass().getClassLoader().getResourceAsStream( "DBConfig.properties"));
driver = prop.getProperty("driver");
url = prop.getProperty("url");
user = prop.getProperty("user");
password = prop.getProperty("password");
// Class.forName加载驱动
Class.forName(driver);
// DriverManager得到链接
conn = DriverManager.getConnection(url, user, password); return conn;
} catch (Exception e) { e.printStackTrace(); }
return null; } }
四:是实现Java程序与数据库的连接层创建一个UserDaoImpl类:
package impl;
import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException;
import vo.User; import dao.UserDAO; import db.ConnectionUtil;
public class UserDaoImpl implements UserDAO{ //实现接口UerDAO
public void save(User user) {
//实现接口类中的方法
ConnectionUtil cu=new ConnectionUtil();
//初始化链接的数据库 Connection conn=cu.openConnection();
String sql = "insert into User(username,password,hobby,gender,position,resume) values(?,?,?,?,?,?)";
try {
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, user.getUserName());
pstmt.setString(2, user.getPassWord());
pstmt.setString(3, user.getHobby());
pstmt.setString(4, user.getGender());
pstmt.setString(5, user.getPosition());
pstmt.setString(6, user.getResume());
pstmt.executeUpdate(); }
catch (SQLException e) { e.printStackTrace(); }
finally{ try { conn.close();//关闭链接数据库 } catch (SQLException e) { e.printStackTrace();
} } } }
五:是经过网站往数据库中加载数据,以下:
package com.bx.Servletform;
import java.io.IOException; import java.io.PrintWriter;
import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;
import dao.UserDAO;
import factory.DAOFactory;
import vo.User;
public class RegisterServlet extends HttpServlet {
public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
String username=request.getParameter("username");
String password=request.getParameter("password");
String[] hobby=request.getParameterValues("hobby");
String gender=request.getParameter("gender");
String resume=request.getParameter("resume");
String position=request.getParameter("position");
User user=new User();
user.setUserName(username);
user.setGender(gender);
user.setPassWord(password);
user.setPosition(position);
user.setResume(resume);
String hobbyStr="";
if(hobby!=null&&hobby.length>0){
for(int i=0;i<hobby.length;i++){ hobbyStr=hobby[i]+":"; } }
user.setHobby(hobbyStr);
UserDAO udao=DAOFactory.getUserDAOInstance();
udao.save(user);
PrintWriter out=response.getWriter();
out.println("Hello World Servlet james");
System.out.println("username |"+username);
System.out.println("password |"+password);
System.out.println("gender |"+gender);
System.out.println("resume |"+resume);
System.out.println("position |"+position);
if(hobby!=null&& hobby.length>0){
for(int i=0;i<hobby.length;i++){
System.out.println(hobby[i]); }
}
//实现页面的跳转
if(username!=null && username.equals("james")){
request.getRequestDispatcher("/success.html").forward(request, response);
}else{
request.getRequestDispatcher("/failure.jsp").forward(request, response);
} }
如今咱们来配置一下register,jsp吧,以下:
<form action="/Servlet_Form_Project/form" method="post">
<!--form 中有两个最为重要的属性--> 用户名称:<input type="text" name="username"><br>
用户密码:<input type="password" name="password"><br>
用户爱好:<input type="checkbox" name="hobby" value="1">游泳
<input type="checkbox" name="hobby" value="2">足球<br>
用户性别:<input type="radio" name="gender" value="male">男
<input type="radio" name="gender" value="female">女
<input type="radio" name="gender" value="secret">保密<br>
用户职位:<select name="position">
<option value="CEO">CEO</option>
<option value="CFO">CFO</option>
<option value="CTO">CTO</option>
</select><br>
用户简历:<textarea rows="5" cols="20" name="resume"></textarea><br/>
<input type="submit" value="注册">
</form>
如今咱们来配置一下WEB.xml以下所示:
<servlet>
<servlet-name>RegisterServlet</servlet-name>
<servlet-class>com.bx.Servletform.RegisterServlet</servlet-class>
<!-- this is servlet --> </servlet> <servlet-mapping>
<servlet-name>RegisterServlet</servlet-name>
<url-pattern>/form</url-pattern>
</servlet-mapping> 在此咱们已经完成了Java Web与数据库的链接:至此咱们能够开始comcat,在浏览器中输入链接的地址即:http://localhost:8080/Servlet_Form_Project/register.jsp 获得页面为