首先,前面我們已經實現與數據庫的連接和用戶的注冊功能,接下來就是用戶通過已經注冊的信息進行登錄功能的實現
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的理解應該也差不多了,試着寫寫前端和框架吧