JavaWeb中登陸功能

来源:http://www.cnblogs.com/xwlych/archive/2016/10/24/5993104.html
-Advertisement-
Play Games

首先我們要JavaWeb登陸的基本流程:JSP頁面發送請求——>Servlet——>Servlet通過調用方法從資料庫中得到數據並將結果返回頁面 我們先建立三個jsp頁面,包括login.jsp(登陸頁面)、index.jsp(顯示登陸成功後的信息)、error.jsp(登錄失敗的頁面),其中後兩個 ...


首先我們要JavaWeb登陸的基本流程:JSP頁面發送請求——>Servlet——>Servlet通過調用方法從資料庫中得到數據並將結果返回頁面

我們先建立三個jsp頁面,包括login.jsp(登陸頁面)、index.jsp(顯示登陸成功後的信息)、error.jsp(登錄失敗的頁面),其中後兩個頁面的內容可以隨意寫,而login.jsp頁面的主要內容如下:

1  <form action="LoginServlet" method="post">
2         用戶名:<input type="text" name="userName"/>
3         密碼:<input type="password" name="password"/>
4         <input type="submit" value="提交"/>
5     </form>

在login.jsp文件的開頭我們需要將pageEncoding="ISO-8859-1"改為pageEncoding="utf-8"(同時不要忘記設置開發工具的編碼格式,不然jsp頁面會顯示亂碼)

根據用戶名和密碼兩個屬性我們建立相應的實體類,並添加get和set方法,代碼如下:

 1 public class User {
 2     private String userName;
 3     private String password;
 4     public String getUserName() {
 5         return userName;
 6     }
 7     public void setUserName(String userName) {
 8         this.userName = userName;
 9     }
10     public String getPassword() {
11         return password;
12     }
13     public void setPassword(String password) {
14         this.password = password;
15     }
16 }

而jsp頁面中的action=“LoginServlet”是指將請求發送到Servlet處理。接下來我們轉到Servlet來進行處理:

 1 import java.io.IOException;
 2 
 3 import javax.servlet.ServletException;
 4 import javax.servlet.http.HttpServlet;
 5 import javax.servlet.http.HttpServletRequest;
 6 import javax.servlet.http.HttpServletResponse;
 7 
 8 import com.test.dao.UserDao;
 9 //創建時為Servlet而不是Class,需要在web.xml中進行配置,配置的代碼Myeclipse將自動生成
10 public class LoginServlet extends HttpServlet {
11     //創建UserDao的對象,以便於查詢資料庫
12     UserDao userDao=new UserDao();
13     //以下doGet方法和doPost方法分別對應form表單中的method="get"和method="post"
14     public void doGet(HttpServletRequest request, HttpServletResponse response)
15             throws ServletException, IOException {
16     }
17     public void doPost(HttpServletRequest request, HttpServletResponse response)
18             throws ServletException, IOException {
19         //利用getParameter方法獲取到前臺文本框中輸入的值,其中括弧內的內容為<input/>標簽中的name屬性
20         String userName=request.getParameter("userName");
21         String password=request.getParameter("password");
22         //調用UserDao中的getSelect方法並獲取到返回值
23         boolean flag=userDao.getSelect(userName, password);
24         //若用戶名和密碼存在則轉發到index.jsp頁面,否則重定向到error.jsp頁面
25         if (flag) {
26             request.getRequestDispatcher("index.jsp").forward(request, response);
27         }
28         else
29             response.sendRedirect("error.jsp");
30     }
31 
32 }

註釋 中已經說的很明白了,就不再重覆了,可以看看第26行和29行,其中26行是轉發,29行是重定向,感興趣的小伙伴可以查查兩者的區別。剩下的一部分就是我們之前提到過的關於資料庫的查詢操作了,我們在23行進行了調用,下麵我們完成調用的方法:

 1 package com.test.dao;
 2 
 3 import java.sql.Connection;
 4 import java.sql.DriverManager;
 5 import java.sql.PreparedStatement;
 6 import java.sql.ResultSet;
 7 
 8 public class UserDao {
 9     //連接資料庫的代碼
10     public Connection getCon() {
11         //資料庫連接名稱
12         String username="root";
13         //資料庫連接密碼
14         String password="";
15         String driver="com.mysql.jdbc.Driver";
16         //其中test為資料庫名稱
17         String url="jdbc:mysql://localhost:3306/test";
18         Connection conn=null;
19         try{
20             Class.forName(driver);
21             conn=(Connection) DriverManager.getConnection(url,username,password);
22         }catch(Exception e){
23             e.printStackTrace();
24         }
25         return conn;
26     }
27     //進行查詢的方法,若含有滿足條件的數據則返回true
28     public boolean getSelect(String userName,String password) { 
29         boolean flag=false;
30             String sql = "select * from user where userName='"+userName+"' and password='"+password+"'"; 
31             Connection conn = getCon();
32             PreparedStatement pst = null;
33             try {
34                 pst = (PreparedStatement) conn.prepareStatement(sql);
35                 ResultSet rs = pst.executeQuery();
36                 if (rs.next()) {
37                     flag=true;
38                 }
39             } catch (Exception e) {
40             }
41             return flag;
42         }
43 }

在這個方法中我們首先連接資料庫,然後在查詢的方法中傳入從jsp頁面獲取到的userName和password,判斷資料庫中是否存在此用戶名和密碼的用戶,如果存在則返回true,否則返回false(不要忘記導入資料庫鏈接的包)。

至於資料庫中的欄位則參照實體類User建立即可,即包含userName和password兩個屬性,如果資料庫鏈接還有問題的請參照之前的關於資料庫部分的隨筆。

最後看一下web.xml中的配置:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
 3   <servlet>
 4     <servlet-name>LoginServlet</servlet-name>
 5     <servlet-class>com.test.servlet.LoginServlet</servlet-class>
 6   </servlet>
 7 
 8   <servlet-mapping>
 9     <servlet-name>LoginServlet</servlet-name>
10     <url-pattern>/LoginServlet</url-pattern>
11   </servlet-mapping>
12 </web-app>

其中<servlet>中的<servlet-name>可以隨意寫,只需要保證上下兩部分相同即可。

然後是<servlet-class>是自己定義的Servlet的路徑(包含包名),最後是<url-pattern>,裡面的內容也可以隨意寫,但是jsp頁面中form表單的action屬性必須與此名稱相同(action中不包含"/")

最後我們需要將web項目發佈到tomcat中然後在瀏覽器輸入:http://localhost:8080/項目名稱/login.jsp就可以進行訪問並登陸了。

這隻是一個簡單的應用,目的是為了幫助各位小伙伴瞭解jsp+servlet開發的基本流程,當然我們在實際開發的過程中會進行更為精細的分割,包括介面,實現類等。

希望大家好好學習,天天向上!!(Study hard and make progress every day!!)


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ASP.NET Aries JSAPI 文檔說明:AR.Utility ...
  • 最近新學的,C#中得三層架構 ————2016-10-23 表示層 業務邏輯層(BLL) 數據訪問層(DAL) 關聯:產生依賴關係 描述:三層體繫結構就是在客戶端和資料庫之間加一個中間層,通常情況下客戶端不能直接和資料庫進行交互,而是通過中間層和數據層進行交互的。 【表示層】 主要負責完成用戶和系統 ...
  • 在C#中,用於存儲的結構較多,如:DataTable,DataSet,List,Dictionary,Stack等結構,各種結構採用的存儲的方式存在差異,效率也必然各有優缺點。現在介紹一種後進先出的數據結構。 談到存儲結構,我們在項目中使用的較多。對於Task存儲結構,棧與隊列是類似的結構,在使用的 ...
  • C#學習中的一些演算法排序,不完整, @^_^@ 2016-10-23 ****************************************************************************************** 1.冒泡排序 是將對數組相鄰的元素進行比較,將最 ...
  • 文檔目錄 本節內容: 簡介 關於ISettingStore 定義設置 setting scope(設置範圍) 重寫設置定義 獲取設置值 服務端 客戶端 修改設置 關於緩存 關於ISettingStore setting scope(設置範圍) 重寫設置定義 服務端 客戶端 簡介 每個應用必需存儲一些 ...
  • 在Common中新建一個CookieHelper,全局調用 ...
  • 隨著項目深入,需要移植到安卓上,問題來了,QML安卓適配! 幸好PC端程式和手機屏幕長寬比例相似。雖然單位像素,尺寸不同,通過比例縮放,可以實現組件PC和安卓通用代碼。 第一步:定義全局的轉換函數(300,500是你的PC端設計尺寸) 第二步:將所有相關尺寸的都通過上面的轉換函數計算新值 第三步:對 ...
  • php採集神器CURL使用方法詳解 php採集神器CURL使用方法詳解 作者:佚名 更新時間:2016-10-21 作者:佚名 更新時間:2016-10-21 作者:佚名 更新時間:2016-10-21 對於做過數據採集的人來說,cURL一定不會陌生。雖然在PHP中有file_get_content ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...