用戶登錄方法1——全jsp方式
邏輯流程圖:
登錄驗證.jsp代碼:
<body>
<%
String username = request.getParameter("username");
String password = request.getParameter("password");
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection ct=DriverManager.getConnection("JDBC:ODBC:mysql","root","asdasd");
String ckUserSql="select password from user where username='"+username+"'";
Statement st=ct.createStatement();
ResultSet rs= st.executeQuery(ckUserSql);
if(rs.next()){
if(password.equals(rs.getString(1)))
response.sendRedirect("success.jsp");
else
response.sendRedirect("fail.jsp"); //password error
}else
response.sendRedirect("fail.jsp"); //user do not exist
%>
</body>
用戶登錄方法2——jsp->servlet->jsp
邏輯流程圖:
servlet代碼基本與jsp驗證代碼一致。
那麼,這兩種方式區別在那裡呢?
答:一個是jsp做邏輯判斷,一個是servlet做邏輯判斷!(廢話)
這不是廢話,我們應該考慮到這jsp和servlet的主要職責分別是什麼。jsp本來就是用來做呈現層的,是html中鑲嵌部分java代碼片段。我們回過頭看jsp的登錄驗證,整個body體中沒有一句話是用來給浏覽器顯示的,這就失去了jsp的優勢。並且jsp最終還需要web容器解析成servlet。
所以,我們應該讓每一個部分發揮他本體優勢,不用servlet做登錄界面,也別用jsp做邏輯驗證。(雖然他們都可以做到)
用戶登錄方法3——jsp->servlet->java class->servlet->jsp
邏輯流程圖:
專門設立java類進行數據驗證,函數返回驗證結果。
當然,我們還應該需要一個專門的類負責鏈接數據庫,執行sql語句。(圖中並沒有表現出來,上面的代碼也不是這麼干的,但我們確實應該使用一個類來做這些)
至於為什麼要這麼做,大家各抒己見。我就贅述了。
本文出自 “摺扇一路走來” 博客