歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> JavaWeb中登陸功能

JavaWeb中登陸功能

日期:2017/3/1 9:10:20   编辑:Linux編程

首先我們要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!!)

Copyright © Linux教程網 All Rights Reserved