首先我們要JavaWeb登陸的基本流程:JSP頁面發送請求——>Servlet——>Servlet通過調用方法從數據庫中得到數據并將結果返回頁面
我們先建立三個jsp頁面,包括login.jsp(登陸頁面)、index.jsp(顯示登陸成功后的信息)、error.jsp(登錄失敗的頁面),其中后兩個頁面的內容可以隨意寫,而login.jsp頁面的主要內容如下:
1
2 用戶名:
3 密碼:
4
5
在login.jsp文件的開頭我們需要將pageEncoding="ISO-8859-1"改為pageEncoding="utf-8"(同時不要忘記設置開發工具的編碼格式,不然jsp頁面會顯示亂碼)
根據用戶名和密碼兩個屬性我們建立相應的實體類,并添加get和set方法,代碼如下:
1 public classUser {2 privateString userName;3 privateString password;4 publicString getUserName() {5 returnuserName;6 }7 public voidsetUserName(String userName) {8 this.userName =userName;9 }10 publicString getPassword() {11 returnpassword;12 }13 public voidsetPassword(String password) {14 this.password =password;15 }16 }
而jsp頁面中的action=“LoginServlet”是指將請求發送到Servlet處理。接下來我們轉到Servlet來進行處理:
1 importjava.io.IOException;2
3 importjavax.servlet.ServletException;4 importjavax.servlet.http.HttpServlet;5 importjavax.servlet.http.HttpServletRequest;6 importjavax.servlet.http.HttpServletResponse;7
8 importcom.test.dao.UserDao;9 //創建時為Servlet而不是Class,需要在web.xml中進行配置,配置的代碼Myeclipse將自動生成
10 public class LoginServlet extendsHttpServlet {11 //創建UserDao的對象,以便于查詢數據庫
12 UserDao userDao=newUserDao();13 //以下doGet方法和doPost方法分別對應form表單中的method="get"和method="post"
14 public voiddoGet(HttpServletRequest request, HttpServletResponse response)15 throwsServletException, IOException {16 }17 public voiddoPost(HttpServletRequest request, HttpServletResponse response)18 throwsServletException, IOException {19 //利用getParameter方法獲取到前臺文本框中輸入的值,其中括號內的內容為標簽中的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 packagecom.test.dao;2
3 importjava.sql.Connection;4 importjava.sql.DriverManager;5 importjava.sql.PreparedStatement;6 importjava.sql.ResultSet;7
8 public classUserDao {9 //連接數據庫的代碼
10 publicConnection 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 returnconn;26 }27 //進行查詢的方法,若含有滿足條件的數據則返回true
28 public booleangetSelect(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 returnflag;42 }43 }
在這個方法中我們首先連接數據庫,然后在查詢的方法中傳入從jsp頁面獲取到的userName和password,判斷數據庫中是否存在此用戶名和密碼的用戶,如果存在則返回true,否則返回false(不要忘記導入數據庫鏈接的包)。
至于數據庫中的字段則參照實體類User建立即可,即包含userName和password兩個屬性,如果數據庫鏈接還有問題的請參照之前的關于數據庫部分的隨筆。
最后看一下web.xml中的配置:
1 <?xml version="1.0" encoding="UTF-8"?>
2
3
4 LoginServlet
5 com.test.servlet.LoginServlet
6
7
8
9 LoginServlet
10 /LoginServlet
11
12
其中中的可以隨意寫,只需要保證上下兩部分相同即可。
然后是是自己定義的Servlet的路徑(包含包名),最后是,里面的內容也可以隨意寫,但是jsp頁面中form表單的action屬性必須與此名稱相同(action中不包含"/")
最后我們需要將web項目發布到tomcat中然后在瀏覽器輸入:http://localhost:8080/項目名稱/login.jsp就可以進行訪問并登陸了。
這只是一個簡單的應用,目的是為了幫助各位小伙伴了解jsp+servlet開發的基本流程,當然我們在實際開發的過程中會進行更為精細的分割,包括接口,實現類等。
希望大家好好學習,天天向上!!(Study hard and make progress every day!!)