|
第一次純用jsp來(lái)實(shí)現(xiàn)用戶登錄的功能,剛開(kāi)始想使用存儲(chǔ)過(guò)程來(lái)傳遞頁(yè)面參數(shù)到數(shù)據(jù)庫(kù)來(lái)驗(yàn)證,但最終不熟悉jsp的參數(shù)傳遞使用,因此放棄。
在此用的jsp連sql2000來(lái)實(shí)現(xiàn)數(shù)據(jù)庫(kù)驗(yàn)證前臺(tái)輸入的用戶名密碼是否正確。
1、開(kāi)發(fā)準(zhǔn)備
下載Microsoft SQL Server 2000 Driver for JDBC 的jar包,在環(huán)境變量中加入path即可,同時(shí)下載的三個(gè)jar包放到工程的lib下
這里用sql2000自帶的Northwind數(shù)據(jù)庫(kù)中Customers表為示例,本例子把CustomerID 作為用戶名,把CompanyName作為密碼來(lái)驗(yàn)證。
2、開(kāi)發(fā)說(shuō)明
本例子使用用了三個(gè)jsp頁(yè)面來(lái)實(shí)現(xiàn)用戶登錄的功能
login.jsp 用戶輸入界面
logincheck.jsp 具體驗(yàn)證邏輯頁(yè)面
ok.jsp 登錄成功結(jié)果頁(yè)面
3、login.jsp
該頁(yè)面主要是通過(guò)表單把輸入框的值提交到tomcat后臺(tái),然后后臺(tái)把值傳給logincheck.jsp來(lái)驗(yàn)證數(shù)據(jù)庫(kù)中是否存在這樣的記錄
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>login.html</title> <script language="javaScript" >
//首先判斷輸入的是否是空值,不是則提交 function checkstr() { if(document.getElementById("CustomerID").value==""){ alert("用戶名不能為空!"); return false; } if(document.getElementById("CompanyName").value==""){ alert("密碼不能為空!"); return false; } form.submit(); } </script> </head> <body> <table width="1000" border="0" cellspacing="0" cellpadding="0"> <tr> <td ><form name="form" method="post" action="logincheck.jsp"> <table width="563" height="100" border="0" bordercolor="#FF9900"> <tr> <td width="148" align="center"> </td> <td width="121" height="35" align="center"> 用戶名:</td> <td width="280" align="left" > <input name="CustomerID" type="text" maxlength="13" ></td> </tr> <tr> <td align="center"> </td> <td align="center">密 碼:</td> <td align="left"> <input name="CompanyName" type="password" size="60" maxlength="60" ></td> </tr> <tr align="center" valign="bottom"> <td height="32" colspan="3"><input name="login" type="button" value="登陸" onClick="checkstr()"> </td> </tr> </table> </form></td> </tr> </table> </body> </html>
4.logincheck.jsp
本頁(yè)面負(fù)責(zé)處理后臺(tái)傳來(lái)的值,做驗(yàn)證
<%@ page contentType="text/html; charset=gb2312" language="java" %> <html> <head> <title>logincheck.jsp</title> </head> <%@ page import="java.sql.*"%>
<body> <%
//獲取表單中變量的值
String CustomerID=(String)request.getParameter("CustomerID"); String CompanyName=(String)request.getParameter("CompanyName");
//可以打印一下看看后臺(tái)是否傳過(guò)來(lái)了
System.out.println("CustomerID:"+CustomerID); System.out.println("CompanyName:"+CompanyName); try{
//首先定義連接數(shù)據(jù)的用戶名和密碼 String dbname="sa"; String dbpass="sa"; //定義jdbc的連接驅(qū)動(dòng) String url="jdbc:microsoft:sqlserver://127.0.0.1;DatabaseName=Northwind"; Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); Connection conn = DriverManager.getConnection(url, dbname, dbpass); //定義查詢語(yǔ)句 String sqls="select * from Customers where CustomerID='"+CustomerID+"' and CompanyName='"+CompanyName+"'"; //執(zhí)行查詢語(yǔ)句 Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sqls); if(null == rs){
//測(cè)試查詢?yōu)榭?br> System.out.println("null!!!!!!!!!!!!!!!"); }
//k為查詢到的記錄數(shù) int k=0; if(rs.next()){ k=k+1; } //如果查詢記錄數(shù)大于0則跳轉(zhuǎn)到ok.jsp,否則重新回到輸入頁(yè)面 if(k>0) { response.sendRedirect("ok.jsp"); } else{ response.sendRedirect("login.jsp"); } conn.close(); }catch(Exception e){ out.println(e.toString()); } %> </body> </html>
5.ok.jsp
測(cè)試驗(yàn)證是否成功
<%@ page contentType="text/html; charset=gb2312" %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>ok</title> </head> <body> <p>成功登陸!</p> </body> </html>
6.啟動(dòng)tomcat測(cè)試一下程序結(jié)果。
|