JSP+bean訪問數據庫

user 採用jsp+bean (在bean裏面訪問數據庫)

 

前臺爲註冊:

jsp爲register.jsp

 

在註冊的時候需要檢查數據有效性,通過一個javascript來實現。

 

function checkdata(){

    var ssn=form.username.value.toLowerCase();

    if(!checkUserName(ssn)) return false//用戶名檢查

    if(strlen(form.pwd.value)<6 || strlen(form.pwd.value)>16 ){

       alert("\正確地登錄密碼長度爲6-16位,僅可用英文、數字、特殊字符!")

       form.pwd.focus()

       return false;

    }

    if( strlen2(form.pwd.value) ){

       alert("\您的密碼中包含了非法字符,僅可用英文、數字、特殊字符!")

       form.pwd.focus()

       return false;

    }

    if( form.pwd.value == form.username.value){

       alert("\用戶名和密碼不能相同!")

       form.pwd.focus()

       return false;

    }

    if( form.pwd2.value =="") {

       alert("\請輸入密碼確認!")

       form.pwd2.focus()

       return false;

    }

    if( form.pwd2.value !=form.pwd.value ){

       alert("\兩次密碼輸入不一致!")

       form.pwd.focus()

       return false;

    }

    //檢查性別

   

    if(!(form.sex[0].checked || form.sex[1].checked) ){

       alert("請選擇性別!");

       form.sex[0].focus();

       return false;

    }

   

    //檢查省份

    if(form.province.selectedIndex == 0 ){

       alert("請選擇省份!");

       form.province.focus();

       return false;

    }

   

    return true;

}

 

function checkUserName(ssn){

    if( ssn.length<3 ||ssn.length>18 ){

       alert("\請輸入正確的用戶名,用戶名長度爲3-18位!")

       form.username.focus()

       return false;

    }

    if (isWhiteWpace(ssn)){

       alert("\請輸入正確的用戶名,用戶名中不能包含空格!")

       form.username.focus()

       return false;

    }

    if (!isSsnString(ssn)){

       alert("\   對不起,您選擇的用戶名不正確或已被佔用!用戶名\naz的英文字母(不區分大小寫)09的數字、點、減\n號或下劃線組成,長度爲318個字符,只能以數字或字母\n開頭和結尾,例如:kyzy_001")

       form.username.focus()

       return false;

    }

    return true;

}

 

function strlen(str){

    var len;

    vari;

    len = 0;

    for(i=0;i<str.length;i++){

       if (str.charCodeAt(i)>255)len+=2; else len++;

    }

    return len;

}

 

function strlen2(str){

    var len;

    vari;

    len = 0;

    for(i=0;i<str.length;i++){

       if (str.charCodeAt(i)>255) return true;

    }

    return false;

}

 

function isWhiteWpace (s)

{

    var whitespace = " \t\n\r";

    vari;

    for(i = 0; i < s.length; i++){  

       var c = s.charAt(i);

       if(whitespace.indexOf(c) >= 0) {

           return true;

       }

    }

    return false;

}

 

function isSsnString (ssn)

{

    var re=/^[0-9a-z][\w-.]*[0-9a-z]$/i;

    if(re.test(ssn))

       return true;

    else

       return false;

}

 

function checkssn(gotoURL){

   var ssn=form.username.value.toLowerCase();

   if(checkUserName(ssn)){

       var open_url = gotoURL + "?username=" + ssn;

       window.open(open_url,'','status=0,directories=0,resizable=0,toolbar=0,location=0,scrollbars=0,width=322,height=200');

    }

}

 

bean就是普通的bean+ 數據庫訪問(save,update,delete等)

PreparedStatement 和Statement最大的區別就是在於PreparedStatement需要帶一個參數。

 

 

1.save()方法

    publicvoid save() {

       //使用了DB,就是那個數據庫輔助類。

       Connection conn = DB.getConn();

       String sql = "insert intouser values (null, ?, ?, ?, ?, ?)";

       PreparedStatement pstmt = DB.prepare(conn, sql);

       try {

           pstmt.setString(1, username);

           pstmt.setString(2, password);

           pstmt.setString(3, phone);

           pstmt.setString(4, addr);

 

           //注意存儲時間的稍有不同,使用的是timestamp方法。在java.util.Time當中,存儲的是日期+時間,而在java.sql.Time當中只有日期,爲了解決這個問題,所以必須用timestamp

           pstmt.setTimestamp(5,new Timestamp(rdate.getTime()));

           pstmt.executeUpdate();

       } catch (SQLException e) {

           e.printStackTrace();

       } finally {

           DB.close(pstmt);

           DB.close(conn);

       }

 

    }

 

    publicvoid update() {

       Connection conn = DB.getConn();

       String sql = "update userset phone = ?, addr = ? where id = ?";

       PreparedStatement pstmt = DB.prepare(conn, sql);

       try {

           pstmt.setString(1, phone);

           pstmt.setString(2, addr);

           pstmt.setInt(3, id);

           pstmt.executeUpdate();

       } catch (SQLException e) {

           e.printStackTrace();

       } finally {

           DB.close(pstmt);

           DB.close(conn);

       }

    }

 

2.後臺管理員,可以通過用戶瀏覽來查看用戶(userlist.jsp)。

爲了得到user的列表,需要在bean裏面添加如下代碼,得到userlist

getUsers()方法:

 

    publicstatic List<User> getUsers() {

       List<User> users = new ArrayList<User>();

       Connection conn = DB.getConn();

       String sql = "select *from user";

       Statement stmt = DB.getStatement(conn);

       ResultSet rs = DB.getResultSet(stmt, sql);

       try {

           while (rs.next()) {

              User u = new User();

              u.setId(rs.getInt("id"));

              u.setUsername(rs.getString("username"));

              u.setPassword(rs.getString("password"));

              u.setPhone(rs.getString("phone"));

              u.setAddr(rs.getString("addr"));

              u.setRdate(rs.getTimestamp("rdate"));

              users.add(u);

           }

       } catch (SQLException e) {

           e.printStackTrace();

       } finally {

           DB.close(rs);

           DB.close(stmt);

           DB.close(conn);

       }

       return users;

    }

 

 

分頁顯示用戶列表的方法:

 

    publicstaticint getUsers(List<User> users,int pageNo,int pageSize) {

 

       int totalRecords = -1;

 

       Connection conn = DB.getConn();

       String sql = "select *from user limit " + (pageNo - 1) *pageSize

              + "," + pageSize;

       Statement stmt = DB.getStatement(conn);

       ResultSet rs = DB.getResultSet(stmt, sql);

 

       Statement stmtCount = DB.getStatement(conn);

       ResultSet rsCount = DB.getResultSet(stmtCount,

              "selectcount(*) from user");

 

       try {

           rsCount.next();

           totalRecords = rsCount.getInt(1);

 

           while (rs.next()) {

              User u = new User();

              u.setId(rs.getInt("id"));

              u.setUsername(rs.getString("username"));

              u.setPassword(rs.getString("password"));

              u.setPhone(rs.getString("phone"));

              u.setAddr(rs.getString("addr"));

              u.setRdate(rs.getTimestamp("rdate"));

              users.add(u);

           }

       } catch (SQLException e) {

           e.printStackTrace();

       } finally {

           DB.close(rsCount);

           DB.close(stmtCount);

           DB.close(rs);

           DB.close(stmt);

           DB.close(conn);

       }

 

       return totalRecords;

    }

 

Usermanager類:是user的管理類。是用來管理user的,user當中只存儲model,也就是和數據打交道的信息。而把getUsersgetUser之類的方法拉出來,放到usermanager當中。

 

 

後臺session檢查:

 

<%

String action =request.getParameter("action");

if(action !=null && action.equals("login")) {

    String username = request.getParameter("username");

    String password = request.getParameter("password");

    if( !username.equals("admin") ||!password.equals("admin") ) {

       out.println("username orpassword not correct!");

       return;

    }

    session.setAttribute("admin" ,"admin");

    response.sendRedirect("AdminIndex.jsp");

}

%>

 

也可以單獨拿一個文件:

_SessionCheck.jsp

<%

String admin =(String)session.getAttribute("admin");

if(admin ==null || !admin.trim().equals("admin")) {

    response.sendRedirect("Login.jsp");

    return;

}

%>

 

並把這個頁面include到任何一個後臺頁面。

<%@includefile="_SessionCheck.jsp"%>

 

發佈了65 篇原創文章 · 獲贊 19 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章