ConnectionPool.java
主要負責管理所有的資料庫連結,在DBInitServlet執行後會把DataSource給init完畢,之後只需要取用它就可以了。
package db; import java.sql.SQLException; import java.sql.Connection; import javax.sql.DataSource; public class ConnectionPool { private DataSource ds; private static ConnectionPool mySelf; private ConnectionPool(DataSource ds) { this.ds = ds; } public static void init(DataSource ds) { mySelf = new ConnectionPool(ds); } public static ConnectionPool getIstance() { if (mySelf == null) { throw new IllegalStateException("Pool not initialized."); } return mySelf; } public Connection getConnection() throws SQLException { return ds.getConnection(); } }
Prof.java
使用者資訊的類別檔,每一個登入成功的使用者,都會實體化一個class,然後加入Session裡
package user; public class Prof { private String userid = ""; public String getId() { return userid; } public void setId(String id) { this.userid = id; } }
checkLogin部份程式碼
從登入Form接收輸入的帳號及密碼,並查詢資料庫是否存在,如果存在則new一個Prof物件,並把它存入session裡暫存。
String id = String.valueOf(request.getParameter("userID")); String passwd = String.valueOf(request.getParameter("passWD")); if(id==null || passwd == null) { response.sendRedirect("index.jsp"); return; } String sql = "select id from user where id =? and passwd = ?"; Connection con = db.ConnectionPool.getIstance().getConnection(); PreparedStatement ps = con.prepareStatement(sql); int i = 0 ; ps.setString(++i,id); ps.setString(++i,passwd); ResultSet rs = ps.executeQuery(); if(rs.next()) { Prof user = new Prof(); user.setId(rs.getString(1)); session.setAttribute("user",user); } else { response.sendRedirect("index.jsp"); return; }
isLogin.jsp部份程式碼
取出session裡的Prof物件,如果取不到,則是未登入,如果不為null則是已登入成功狀態。
user.Prof user = (user.Prof)session.getAttribute("user"); if(user == null ) out.println("<h3>沒有登入!</h3>"); else out.println("<h3>登入帳號是"+user.getId()+"!</h3>");
testLogin.jsp部份程式碼
跟前一個程式一樣,只是上一個是輸出告知狀況是登入或未登入,而此程式則是直接把使用者導向其它頁面。
user.Prof user = (user.Prof)session.getAttribute("user"); if(user == null ) { response.sendRedirect("index.jsp"); return; }
資料庫的連線設定需更改\webapps\LoginDemo\WEB-INF\classes裡的 database.properties(用記事本開就可以了)
原始碼下載:
Pages: 1 2
您好:
小弟看了您這篇文章(http://blog.yslifes.com/archives/830/2),覺得獲益良多,想要下載範本檔來實作看看,但是發現範本檔已經無法下載,是否可以麻煩前輩提供範本檔呢?
版大你好
看了這篇文章我感觸良多
也想開始改寫看看
請問 如果我要 INSERT 一筆資料 要怎麼做??
是指sql語法新增嘛?
INSERT INTO `user` (`id`,`passwd`) VALUES
(‘pig’,’1234567′);
http://www.1keydata.com/tw/sql/sqlinsert.html
也可以參考
https://blog.yslifes.com/archives/971