婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > JSP實現用戶登錄、注冊和退出功能

JSP實現用戶登錄、注冊和退出功能

熱門標簽:好操作的電話機器人廠家 地圖標注市場怎么樣 百度地圖添加標注圖標樣式 聊城智能電銷機器人外呼 如何用中國地圖標注數字點 南京新思維電話機器人 泰州泰興400電話 怎么申請 企業怎么在聯通申請400電話 南昌市地圖標注app

本文講述使用JSP實現用戶登錄,包括用戶登錄、注冊和退出功能等。

1.系統用例圖

2.頁面流程圖

3.數據庫設計

本例使用oracle數據庫

創建用戶表

包括id,username,password和email,共4個字段

-- Create table 
create table P_USER 
( 
 id VARCHAR2(50) not null, 
 username VARCHAR2(20), 
 password VARCHAR2(20), 
 email VARCHAR2(50) 
) 
tablespace USERS 
 pctfree 10 
 initrans 1 
 maxtrans 255 
 storage 
 ( 
 initial 64 
 minextents 1 
 maxextents unlimited 
 ); 
-- Add comments to the table 
comment on table P_USER 
 is '用戶表'; 
-- Add comments to the columns 
comment on column P_USER.id 
 is 'id'; 
comment on column P_USER.username 
 is '用戶名'; 
comment on column P_USER.password 
 is '密碼'; 
comment on column P_USER.email 
 is 'email'; 

4.頁面設計

4.1登錄頁面

login.jsp

%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 
% 
String path = request.getContextPath(); 
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 
%> 
 
!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
html> 
 head> 
 base href="%=basePath%>"> 
 
 title>登錄頁面/title> 
 
 meta http-equiv="pragma" content="no-cache"> 
 meta http-equiv="cache-control" content="no-cache"> 
 meta http-equiv="expires" content="0"> 
 meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> 
 meta http-equiv="description" content="This is my page"> 
 !-- 
 link rel="stylesheet" type="text/css" href="styles.css"> 
 --> 
 /head> 
 
 body> 
 form action="login_action.jsp" method="post"> 
 table> 
 tr> 
 td colspan="2">登錄窗口/td> 
 /tr> 
 tr> 
 td>用戶名:/td> 
 td>input type="text" name="username" /> 
 /td> 
 /tr> 
 tr> 
 td>密碼:/td> 
 td>input type="text" name="password" /> 
 /td> 
 /tr> 
 tr> 
 td colspan="2">input type="submit" value="登錄" /> a href="register.jsp">注冊/a> 
 /td> 
 /tr> 
 /table> 
 /form> 
/body> 
/html> 

頁面效果

4.2登錄邏輯處理頁面

login_action.jsp

%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> 
%@ page import="java.sql.*" %> 
% 
String path = request.getContextPath(); 
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 
%> 
 
 % 
 String username = request.getParameter("username"); 
 String password = request.getParameter("password"); 
 if(username==null||"".equals(username.trim())||password==null||"".equals(password.trim())){ 
 //out.write("用戶名或密碼不能為空!"); 
 System.out.println("用戶名或密碼不能為空!"); 
 response.sendRedirect("login.jsp"); 
 return; 
 //request.getRequestDispatcher("login.jsp").forward(request, response); 
 } 
 boolean isValid = false; 
 Connection con = null;// 創建一個數據庫連接 
 PreparedStatement pre = null;// 創建預編譯語句對象,一般都是用這個而不用Statement 
 ResultSet result = null;// 創建一個結果集對象 
 try 
 { 
 Class.forName("oracle.jdbc.driver.OracleDriver");// 加載Oracle驅動程序 
 //System.out.println("開始嘗試連接數據庫!"); 
 String url = "jdbc:oracle:" + "thin:@127.0.0.1:1521:orcl";// 127.0.0.1是本機地址,orcl是Oracle的默認數據庫名 
 String user = "scott";// 用戶名,系統默認的賬戶名 
 String pwd = "tiger";// 你安裝時選設置的密碼 
 con = DriverManager.getConnection(url, user, pwd);// 獲取連接 
 // System.out.println("連接成功!"); 
 String sql = "select * from p_user where username=? and password=?";// 預編譯語句,“?”代表參數 
 pre = con.prepareStatement(sql);// 實例化預編譯語句 
 pre.setString(1, username);// 設置參數,前面的1表示參數的索引,而不是表中列名的索引 
 pre.setString(2, password);// 設置參數,前面的1表示參數的索引,而不是表中列名的索引 
 result = pre.executeQuery();// 執行查詢,注意括號中不需要再加參數 
 if (result.next()){ 
 isValid = true; 
 } 
 } 
 catch (Exception e) 
 { 
 e.printStackTrace(); 
 } 
 finally 
 { 
 try 
 { 
 // 逐一將上面的幾個對象關閉,因為不關閉的話會影響性能、并且占用資源 
 // 注意關閉的順序,最后使用的最先關閉 
 if (result != null) 
 result.close(); 
 if (pre != null) 
 pre.close(); 
 if (con != null) 
 con.close(); 
 //System.out.println("數據庫連接已關閉!"); 
 } 
 catch (Exception e) 
 { 
 e.printStackTrace(); 
 } 
 } 
 if(isValid){ 
 System.out.println("登錄成功!"); 
 session.setAttribute("username", username); 
 response.sendRedirect("welcome.jsp"); 
 return; 
 }else{ 
 System.out.println("登錄失敗!"); 
 response.sendRedirect("login.jsp"); 
 return; 
 } 
 %> 

使用JDBC連接數據庫,如果用戶名或密碼為空時,還是跳轉到登錄頁面login.jsp
如果用戶名和密碼不為空,進行連接數據庫查詢用戶表,如果能夠查詢到記錄,表示登錄成功,將用戶信息保存到session,跳轉到歡迎頁面welcome.jsp

如果根據用戶名和密碼查詢不到記錄,表示登錄失敗,重新跳轉到登錄頁面login.jsp

4.3歡迎頁面

welcome.jsp

%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 
% 
String path = request.getContextPath(); 
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 
%> 
 
!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
html> 
 head> 
 base href="%=basePath%>"> 
 
 title>My JSP 'welcom.jsp' starting page/title> 
 
 meta http-equiv="pragma" content="no-cache"> 
 meta http-equiv="cache-control" content="no-cache"> 
 meta http-equiv="expires" content="0"> 
 meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> 
 meta http-equiv="description" content="This is my page"> 
 !-- 
 link rel="stylesheet" type="text/css" href="styles.css"> 
 --> 
 /head> 
 
 body> 
 table> 
 tr> 
 td>img src="images/logo4.png" /> 
 /td> 
 td>img src="images/logo2.png" height="90" /> 
 /td> 
 /tr> 
 tr> 
 td colspan="2">hr /> 
 /td> 
 /tr> 
 tr> 
 td> 
 table> 
 tr> 
 td>a>Main/a> 
 /td> 
 /tr> 
 tr> 
 td>a>Menu1/a> 
 /td> 
 /tr> 
 tr> 
 td>a>Menu2/a> 
 /td> 
 /tr> 
 tr> 
 td>a>Menu3/a> 
 /td> 
 /tr> 
 tr> 
 td>a>Menu4/a> 
 /td> 
 /tr> 
 tr> 
 td>a>Menu5/a> 
 /td> 
 /tr> 
 tr> 
 td>a>Menu6/a> 
 /td> 
 /tr> 
 tr> 
 td>a>Menu7/a> 
 /td> 
 /tr> 
 tr> 
 td>a>Menu8/a> 
 /td> 
 /tr> 
 /table>/td> 
 td> 
 form action="loginout.jsp" method="post"> 
 table> 
 tr> 
 td colspan="2">登錄成功!/td> 
 /tr> 
 tr> 
 td>歡迎你,/td> 
 td>${username }/td> 
 /tr> 
 tr> 
 td colspan="2">input type="submit" value="退出" />/td> 
 /tr> 
 /table> 
 /form>/td> 
 /tr> 
 /table> 
/body> 
/html> 

使用EL表達式展示用戶信息

效果

4.4歡迎頁退出邏輯處理頁面

loginout.jsp

%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 
% 
String path = request.getContextPath(); 
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 
%> 
 
!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
html> 
 head> 
 base href="%=basePath%>"> 
 
 title>My JSP 'loginout.jsp' starting page/title> 
 
 meta http-equiv="pragma" content="no-cache"> 
 meta http-equiv="cache-control" content="no-cache"> 
 meta http-equiv="expires" content="0"> 
 meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> 
 meta http-equiv="description" content="This is my page"> 
 !-- 
 link rel="stylesheet" type="text/css" href="styles.css"> 
 --> 
 
 /head> 
 
 body> 
 % 
 session.removeAttribute("username"); 
 response.sendRedirect("login.jsp"); 
 %> 
 /body> 
/html> 

將session的用戶信息移除,跳轉到登錄頁面login.jsp

4.5注冊頁面

register.jsp

%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 
% 
String path = request.getContextPath(); 
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 
%> 
 
!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
html> 
 head> 
 base href="%=basePath%>"> 
 
 title>注冊頁面/title> 
 
 meta http-equiv="pragma" content="no-cache"> 
 meta http-equiv="cache-control" content="no-cache"> 
 meta http-equiv="expires" content="0"> 
 meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> 
 meta http-equiv="description" content="This is my page"> 
 !-- 
 link rel="stylesheet" type="text/css" href="styles.css"> 
 --> 
 /head> 
 
 body> 
 form action="register_action.jsp" method="post"> 
 table> 
 tr> 
 td colspan="2">注冊窗口/td> 
 /tr> 
 tr> 
 td>用戶名:/td> 
 td>input type="text" name="username" />/td> 
 /tr> 
 tr> 
 td>密碼:/td> 
 td>input type="text" name="password1" />/td> 
 /tr> 
 tr> 
 td>確認密碼:/td> 
 td>input type="text" name="password2" />/td> 
 /tr> 
 tr> 
 td>email:/td> 
 td>input type="text" name="email" />/td> 
 /tr> 
 tr> 
 td colspan="2">input type="submit" value="注冊" /> a href="login.jsp">返回/a>/td> 
 /tr> 
 /table> 
 /form> 
/body> 
/html> 

當在登錄頁面點擊“注冊“時打開用戶注冊頁面

效果

4.6注冊邏輯處理頁面

register_action.jsp

%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 
%@ page import="java.sql.*" %> 
% 
String path = request.getContextPath(); 
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 
%> 
 % 
 String username = request.getParameter("username"); 
 String password1 = request.getParameter("password1"); 
 String password2 = request.getParameter("password2"); 
 String email = request.getParameter("email"); 
 if(username==null||"".equals(username.trim())||password1==null||"".equals(password1.trim())||password2==null||"".equals(password2.trim())||!password1.equals(password2)){ 
 //out.write("用戶名或密碼不能為空!"); 
 System.out.println("用戶名或密碼不能為空!"); 
 response.sendRedirect("register.jsp"); 
 return; 
 //request.getRequestDispatcher("login.jsp").forward(request, response); 
 } 
 boolean isValid = false; 
 Connection con = null;// 創建一個數據庫連接 
 PreparedStatement pre = null;// 創建預編譯語句對象,一般都是用這個而不用Statement 
 ResultSet result = null;// 創建一個結果集對象 
 try 
 { 
 Class.forName("oracle.jdbc.driver.OracleDriver");// 加載Oracle驅動程序 
 //System.out.println("開始嘗試連接數據庫!"); 
 String url = "jdbc:oracle:" + "thin:@127.0.0.1:1521:orcl";// 127.0.0.1是本機地址,orcl是Oracle的默認數據庫名 
 String user = "scott";// 用戶名,系統默認的賬戶名 
 String pwd = "tiger";// 你安裝時選設置的密碼 
 con = DriverManager.getConnection(url, user, pwd);// 獲取連接 
 //System.out.println("連接成功!"); 
 String sql = "select * from p_user where username=?";// 預編譯語句,“?”代表參數 
 pre = con.prepareStatement(sql);// 實例化預編譯語句 
 pre.setString(1, username);// 設置參數,前面的1表示參數的索引,而不是表中列名的索引 
 result = pre.executeQuery();// 執行查詢,注意括號中不需要再加參數 
 if (!result.next()){ 
 sql = "insert into p_user(id,username,password,email) values(?,?,?,?)";// 預編譯語句,“?”代表參數 
 pre = con.prepareStatement(sql);// 實例化預編譯語句 
 pre.setString(1, System.currentTimeMillis()+"");// 設置參數,前面的1表示參數的索引,而不是表中列名的索引 
 pre.setString(2, username);// 設置參數,前面的1表示參數的索引,而不是表中列名的索引 
 pre.setString(3, password1);// 設置參數,前面的1表示參數的索引,而不是表中列名的索引 
 pre.setString(4, email);// 設置參數,前面的1表示參數的索引,而不是表中列名的索引 
 pre.executeUpdate();// 執行 
 isValid = true; 
 } 
 } 
 catch (Exception e) 
 { 
 e.printStackTrace(); 
 } 
 finally 
 { 
 try 
 { 
 // 逐一將上面的幾個對象關閉,因為不關閉的話會影響性能、并且占用資源 
 // 注意關閉的順序,最后使用的最先關閉 
 if (result != null) 
 result.close(); 
 if (pre != null) 
 pre.close(); 
 if (con != null) 
 con.close(); 
 //System.out.println("數據庫連接已關閉!"); 
 } 
 catch (Exception e) 
 { 
 e.printStackTrace(); 
 } 
 } 
 if(isValid){ 
 System.out.println("注冊成功,請登錄!"); 
 response.sendRedirect("login.jsp"); 
 return; 
 }else{ 
 System.out.println("用戶名已存在!"); 
 response.sendRedirect("register.jsp"); 
 return; 
 } 
 %> 

首先判斷用戶名和密碼是否為空,以及密碼和確認密碼是否一致,如果上述條件不成立時,返回到注冊頁面register.jsp
如果上述條件成立,就根據用戶名到數據庫查詢,如果能夠查詢到記錄,說明用戶名已經存在,返回到注冊頁面register.jsp

如果查詢不到記錄,說明此用戶名可用來進行注冊,使用JDBC向用戶表 插入1條記錄;之后跳轉到登錄頁面login.jsp

5.總結

本例使用JSP實現用戶登錄,編寫過程中,主要遇到了2個小問題。

5.1查詢之后,判斷記錄是否存在,需要使用 if (!result.next()),而不是通常查詢中使用的while循環,這一點需要注意,特別是在處理注冊時。

5.2關于JSP頁面的編譯報錯問題。

當在JSP小腳本中中使用return時要慎重,很可能會出現編譯錯誤。

處理方法是,JSP主頁面只使用JSP小腳本,保證return之后沒有還需要編譯的內容即可。

以上即為使用JSP實現用戶登錄的簡單介紹,希望對大家的學習有所幫助。

您可能感興趣的文章:
  • jsp+dao+bean+servlet(MVC模式)實現簡單用戶登錄和注冊頁面
  • 使用JSP實現簡單的用戶登錄注冊頁面示例代碼解析
  • jsp實現用戶自動登錄功能
  • jsp實現簡單用戶7天內免登錄
  • servlet+jsp實現過濾器 防止用戶未登錄訪問
  • JSP Spring防止用戶重復登錄的實現方法
  • JavaWeb實現用戶登錄注冊功能實例代碼(基于Servlet+JSP+JavaBean模式)
  • jsp基于XML實現用戶登錄與注冊的實例解析(附源碼)
  • JSP實現簡單的用戶登錄并顯示出用戶信息的方法
  • 在jsp中用bean和servlet聯合實現用戶注冊、登錄
  • 關于JSP用戶登錄連接數據庫詳情

標簽:白銀 銅川 自貢 吉林 臨汾 山南 開封 烏蘭察布

巨人網絡通訊聲明:本文標題《JSP實現用戶登錄、注冊和退出功能》,本文關鍵詞  JSP,實現,用戶,登錄,注冊,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《JSP實現用戶登錄、注冊和退出功能》相關的同類信息!
  • 本頁收集關于JSP實現用戶登錄、注冊和退出功能的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    欧美中文一区二区三区| 高清beeg欧美| 亚洲综合免费观看高清完整版| 久久久久国产免费免费| 久久亚洲一区二区三区四区| 精品福利二区三区| 国产午夜精品一区二区三区四区| 欧美成人精精品一区二区频| 精品国产一二三| 久久久.com| 日韩一区欧美小说| 亚洲国产精品一区二区久久| 亚洲成人一二三| 日本中文在线一区| 国产麻豆91精品| 国产精品一区在线观看你懂的| 国内成人自拍视频| 成人av片在线观看| 欧美日韩亚洲综合| 欧美mv日韩mv亚洲| 国产精品成人一区二区三区夜夜夜| 国产精品久久久久桃色tv| 一区二区三区四区精品在线视频| 亚洲福利一区二区| 日韩精品久久理论片| 精品一区二区av| 91色porny蝌蚪| 91精品国产综合久久福利| 久久色.com| 亚洲国产精品久久不卡毛片| 国产在线日韩欧美| 在线观看亚洲一区| 日韩美女视频一区二区在线观看| 欧美国产精品一区二区| 午夜视频在线观看一区| 国产乱码字幕精品高清av | www.在线欧美| 3751色影院一区二区三区| 久久久久久99精品| 亚洲成av人在线观看| 国产成人a级片| 91精品国产综合久久精品app| 国产亚洲婷婷免费| 免费久久99精品国产| 成人不卡免费av| 日韩三级在线免费观看| 亚洲情趣在线观看| 成人小视频在线| 欧美电影免费观看高清完整版| **网站欧美大片在线观看| 久久99这里只有精品| 欧美在线观看一区二区| 日本一区二区电影| 国产麻豆视频精品| 日韩一区二区免费在线电影| 亚洲免费观看高清在线观看| 国产成人小视频| 久久众筹精品私拍模特| 天堂资源在线中文精品| 欧美丝袜自拍制服另类| 一区二区三区免费网站| 99re亚洲国产精品| 国产精品久久久久久久岛一牛影视| 免费成人美女在线观看| 日韩一卡二卡三卡| 日本不卡在线视频| 91精品在线免费观看| 午夜激情综合网| 欧美福利电影网| 偷窥国产亚洲免费视频| 日本韩国欧美国产| 亚洲高清免费在线| 欧美三片在线视频观看| 午夜影视日本亚洲欧洲精品| 欧美日韩国产片| 日日骚欧美日韩| 欧美群妇大交群中文字幕| 婷婷中文字幕一区三区| 欧美夫妻性生活| 日韩二区在线观看| 精品国产制服丝袜高跟| 国产一区二区精品久久99| 中文字幕精品综合| 色综合久久中文字幕综合网| 一区二区三区欧美视频| 欧美亚洲丝袜传媒另类| 日韩av一区二区在线影视| 日韩欧美激情在线| 国产精品一区专区| 一区二区三区中文免费| 欧美日本在线看| 韩国午夜理伦三级不卡影院| 久久久国产精品麻豆| 91丨九色丨蝌蚪丨老版| 天堂影院一区二区| 久久女同互慰一区二区三区| 成人动漫精品一区二区| 日韩黄色片在线观看| 久久综合久久99| 在线观看国产日韩| 国产中文一区二区三区| 亚洲欧美福利一区二区| 欧美一区二区三区在线电影| 粉嫩蜜臀av国产精品网站| 一区二区三区产品免费精品久久75| 777色狠狠一区二区三区| 国产91富婆露脸刺激对白| 一区二区三区四区乱视频| 欧美精品一区二区蜜臀亚洲| 成人综合婷婷国产精品久久| 午夜不卡在线视频| 中文字幕在线一区二区三区| 欧美一区日韩一区| 一本到不卡免费一区二区| 久久国产精品第一页| 亚洲一区二区欧美| 亚洲国产成人在线| 日韩欧美一区中文| 色婷婷综合中文久久一本| 久久精品72免费观看| 午夜精品福利视频网站| 亚洲欧洲日本在线| 久久久国产精华| 日韩欧美国产一区在线观看| 色综合 综合色| 不卡一区二区三区四区| 精品一区二区三区在线观看 | 国产欧美日韩一区二区三区在线观看| 欧美亚洲综合在线| www.66久久| 成人激情视频网站| 国产精品一级黄| 国内一区二区在线| 免费看黄色91| 久久99精品国产91久久来源| 亚洲高清免费观看| 亚洲成a天堂v人片| 五月婷婷久久丁香| 亚洲www啪成人一区二区麻豆| 亚洲精品自拍动漫在线| 国产精品成人免费| 国产欧美精品一区二区三区四区| 91精品国产色综合久久久蜜香臀| 欧美色图天堂网| 91亚洲精品一区二区乱码| 国产成人高清视频| 成人黄动漫网站免费app| 岛国av在线一区| 9i在线看片成人免费| 99久久99久久精品国产片果冻| 国产不卡一区视频| 春色校园综合激情亚洲| jlzzjlzz亚洲女人18| 91在线视频在线| 91精彩视频在线观看| 一本大道久久a久久综合婷婷| 在线一区二区观看| 这里只有精品免费| 欧美成人艳星乳罩| 亚洲国产激情av| 一区二区三区四区不卡在线| 亚洲妇女屁股眼交7| 久久不见久久见免费视频1| 激情五月婷婷综合网| 国产超碰在线一区| 在线观看91视频| 日韩一区二区三区高清免费看看| 日韩美女在线视频 | 91视频在线观看免费| 欧美在线观看视频一区二区| 777奇米四色成人影色区| 久久综合国产精品| 亚洲激情图片一区| 久久97超碰国产精品超碰| 国产传媒欧美日韩成人| 日本高清免费不卡视频| 91精品国产高清一区二区三区蜜臀 | 色综合久久久久久久久| 日韩欧美中文字幕制服| 欧美国产一区二区在线观看| 亚洲丝袜精品丝袜在线| 捆绑调教一区二区三区| 91片在线免费观看| 精品国产一区二区三区忘忧草| 国产精品视频麻豆| 日本不卡1234视频| 色综合一区二区| 久久精品欧美日韩| 亚洲高清免费一级二级三级| 精品一区二区三区视频| 欧美视频中文一区二区三区在线观看| 欧美成人一区二区三区| 亚洲一区二区三区三| 懂色av中文字幕一区二区三区| 欧美精选在线播放| 亚洲欧美成人一区二区三区| 国产一区二区三区综合| 欧美一区二区三区免费观看视频| 中文字幕一区三区| 国产福利一区二区三区视频在线|