Servlet實現用戶的登錄功能


首先,前面我們已經實現與數據庫的連接和用戶的注冊功能,接下來就是用戶通過已經注冊的信息進行登錄功能的實現

1.接前兩篇博客,首先先編寫一個簡單的登錄頁面,代碼如下:

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>用戶登錄頁面</title>
 8 </head>
 9 <body>
10      <h2>${remind}</h2>
11      <h1>登錄頁面</h1>
12      
13      <form action="login" method="post">
14            登錄名:<input type="text" name="name"><br/>
15              密碼為:<input type="password" name="password"><br/>
16            <input type="submit" value="登錄">
17      </form>
18      
19      <h5>還未注冊,快來注冊</h5>
20      <a href="register">注冊</a>
21 </body>
22 </html>

2.編寫實現用戶登錄的Servlet,在此處新建一個Servlet,命名為LoginServlet.java  ,同時在web.xml配置文件中實現對該Servlet的配置,在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" version="3.0">
 3   <display-name>Test1</display-name>
 4   <welcome-file-list>
 5     <welcome-file>index.html</welcome-file>
 6     <welcome-file>index.htm</welcome-file>
 7     <welcome-file>index.jsp</welcome-file>
 8     <welcome-file>default.html</welcome-file>
 9     <welcome-file>default.htm</welcome-file>
10     <welcome-file>default.jsp</welcome-file>
11   </welcome-file-list>
12   <servlet>
13     <servlet-name>RegisterServlet</servlet-name>
14     <servlet-class>lin.Servlet.RegisterServlet</servlet-class>
15   </servlet>
16   <servlet-mapping>
17     <servlet-name>RegisterServlet</servlet-name>
18     <url-pattern>/register</url-pattern>
19   </servlet-mapping>
20   <servlet>
21      <servlet-name>LoginServlet</servlet-name>
22      <servlet-class>lin.Servlet.LoginServlet</servlet-class>
23   </servlet>
24   <servlet-mapping>
25      <servlet-name>LoginServlet</servlet-name>
26      <url-pattern>/login</url-pattern>
27   </servlet-mapping>
28 </web-app>

3.編寫LoginServlet.java的代碼,代碼如下:

 1 package lin.Servlet;
 2 
 3 import java.io.IOException;
 4 import java.sql.Connection;
 5 import java.sql.PreparedStatement;
 6 import java.sql.ResultSet;
 7 import java.sql.SQLException;
 8 
 9 import javax.servlet.ServletException;
10 import javax.servlet.annotation.WebServlet;
11 import javax.servlet.http.HttpServlet;
12 import javax.servlet.http.HttpServletRequest;
13 import javax.servlet.http.HttpServletResponse;
14 
15 import lin.db.DBServlet;
16 import lin.entity.User;
17 
18 /**
19  * Servlet implementation class LoginServlet
20  */
21 /*@WebServlet("/LoginServlet")*/
22 public class LoginServlet extends HttpServlet {
23     private static final long serialVersionUID = 1L;
24        
25     /**
26      * @see HttpServlet#HttpServlet()
27      */
28     public LoginServlet() {
29         super();
30         // TODO Auto-generated constructor stub
31     }
32 
33     /**
34      * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
35      */
36     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
37         // TODO Auto-generated method stub
38         request.getRequestDispatcher("/WEB-INF/page/login.jsp").forward(request, response);
39     }
40 
41     /**
42      * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
43      */
44     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
45         // TODO Auto-generated method stub
46         //設置utf-8,防止出現亂碼情況
47         request.setCharacterEncoding("UTF-8");
48         response.setCharacterEncoding("text/html;charset=UTF-8");
49         
50         
51         //獲取實體User中的變量,將變量插入到數據庫中,完成注冊
52          User user=new User();
53          //獲取注冊的用戶名,"name"要與jsp頁面中的變量名一致
54          String name=request.getParameter("name");
55          //獲取注冊的密碼
56          String password=request.getParameter("password");
57         
58          
59          try {
60          //sql 語句用於查詢name和password是否與數據庫中存儲的一致
61          String sql="select * from t_users where name=? and password=?;";
62          DBServlet db=new DBServlet();
63          //與數據庫獲得連接
64          Connection conn=db.getConn();
65          
66          //SQL語句被預編譯並存儲在PreparedStatement對象中
67         PreparedStatement statement=conn.prepareStatement(sql);
68         //將sql語句的問號值添加進去
69         statement.setString(1, name);
70         statement.setString(2, password);
71         
72         //執行sql語句
73         ResultSet rs=statement.executeQuery();
74         if(rs.next())
75         {
76             System.out.println("登錄成功,歡迎你:"+name);
77             request.setAttribute("remind", "登錄成功");
78             request.getRequestDispatcher("/WEB-INF/page/login.jsp").forward(request, response);
79         }else
80         {
81             System.out.println("登錄失敗,密碼或用戶名錯誤");
82             request.setAttribute("remind", "登錄成功");
83             request.getRequestDispatcher("/WEB-INF/page/login.jsp").forward(request, response);
84         }
85         
86         //關閉數據庫
87         rs.close();
88         statement.close();
89         conn.close();
90         
91         } catch (SQLException e) {
92             // TODO Auto-generated catch block
93             System.out.println("數據庫連接失敗");
94             e.printStackTrace();
95         }
96     
97     }
98 
99 }

4.測試:先注冊一個用戶,例如,用戶名:易烊千璽1   密碼:123456

 

 點擊登錄,之后

 

 控制台輸出如下所示:

 

 

這里對用戶的登錄功能的實現已經成功,拜拜了,,,,,,

還不知道接下來要寫什么,好好學習了,對於servlet的理解應該也差不多了,試着寫寫前端和框架吧

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM