1. 程式人生 > >JSP連線資料庫的兩種方式

JSP連線資料庫的兩種方式

application連線資料庫:

                String driver=application.getInitParameter("driver");
		String url=application.getInitParameter("url");
		String userName=application.getInitParameter("user");
		String userPass=application.getInitParameter("pass");
		Class.forName(driver);
		Connection   conn=DriverManager.getConnection(url,userName,userPass);
		Statement stmt =conn.createStatement();
		stmt.executeUpdate("sql語句");

 Servlet連線資料庫:

package test;

import java.sql.Connection;
import java.sql.ResultSet;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.sun.crypto.provider.RC2Parameters;
@WebServlet(name="login",urlPatterns=("/login"))
public class LoginServlet extends HttpServlet {
	public void service(HttpServletRequest request ,HttpServletResponse response) 
	throws ServletException,java.io.IOException{
		String errorMessage="";
		//因為Servlet本身沒有設定記憶體物件,並不輸出響應到客戶端
		//因此 此處需要講處理請求傳送View
		RequestDispatcher rtd;
		//接受頁面提交的引數
		String name =request.getParameter("userName");
		String pass=request.getParameter("userPwd");
		try{
			//Controller本身不會連線資料庫,因此需要用model蹭的javaBean去連線
			UserDao udb=new UserDao(
				"com.mysql.jdbc.Driver",
				"jdbc:mysql://localhost:3306/test",
				"root",
				"123456"
			);
			ResultSet rs=udb.fetch("select * from tb_user where user_name='"+name+"'and user_pass='"+pass+"'");
			if(rs.next()){
				HttpSession session=request.getSession();
				session.setAttribute("name", name);
				rtd=request.getRequestDispatcher("/newPage.jsp");
				rtd.forward(request, response);
			}else{
				errorMessage="您輸入的使用者名稱或密碼錯誤!";
			} 
			
			
		}catch (Exception e) {
			e.printStackTrace();
		}
	}
}

 UserDao類內容:

package test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import com.mysql.jdbc.Driver;

public class UserDao {
	private Connection conn;
	private String driver;
	private String url;
	private String userName;
	private String userPass;
	
	public  UserDao(){
		
	}
	
	public void setConn(Connection conn) {
		this.conn = conn;
	}

	public String getDriver() {
		return driver;
	}

	public void setDriver(String driver) {
		this.driver = driver;
	}

	public String getUrl() {
		return url;
	}

	public void setUrl(String url) {
		this.url = url;
	}

	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	public String getUserPass() {
		return userPass;
	}

	public void setUserPass(String userPass) {
		this.userPass = userPass;
	}
	
	public  UserDao(String driver,String url, String user,String pass)
	throws Exception{
		this.driver=driver;
		this.url=url;
		this.userName=user;
		this.userPass=pass;
		if(this.conn==null){
			Class.forName(driver);
			conn=DriverManager.getConnection(url,userName,userPass);
		}
	}
	//操作資料包括增刪改
	public boolean query(String sql) throws Exception{
		Statement stmt=conn.createStatement();
		int rs=stmt.executeUpdate(sql); 
		if(rs==-1){
			return false;
		}
		return true;
	}
	//操作資料,查詢
	public ResultSet fetch(String sql) throws Exception{
		Statement statement=conn.createStatement();
		ResultSet rs=statement.executeQuery(sql);
		return rs;
	}
	//關閉資料庫連線
	public void closeConn()throws Exception{
		if(conn!=null&&!conn.isClosed()){
			conn.close(); 
		}
	}
}