Servlet 實現使用者登入驗證以及連線mysql資料庫
阿新 • • 發佈:2018-12-30
一、首先準備好eclipse開發工具以及mysql,及其jar包,jar含mysql-jdbc,logging等
二、搭建專案
三、建立資料庫以及表
3.1、建立資料庫
3.2、建立user表
四、編寫Java程式碼CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(20) COLLATE utf8_bin NOT NULL, `password` varchar(20) COLLATE utf8_bin DEFAULT NULL, PRIMARY KEY (`id`,`username`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_bin四
4.1、建立User.java類
package com.yd.entity; /** * 使用者的實體類 * @author john * @Date 2018年2月2日 * @company yd */ public class User{ private int id; private String username; private String password; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "User [id=" + id + ", username=" + username + ", password=" + password + "]"; } }
4.2、建立LoginServlet.java類
package com.yd.servlet; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import com.yd.entity.User; import com.yd.utils.UserDao;
/**
* login驗證servlet類
* @author 2017
* @Date 2018年2月2日
* @company yd
*/
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;@SuppressWarnings("unused")protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doPost(request, response);}protected
void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {/* * 這是不連資料庫,判斷賬號的存在登入進行簡單的登陸/計算 * String username = request.getParameter("username"); String password = * request.getParameter("password"); String s1
= "admin"; String s2 = * "123"; * * if(username.equals(s1) && password.equals(s2)){ Cookie cookie = new * Cookie("remeberName", username); cookie.setMaxAge(60*60*24); * response.addCookie(cookie); * * HttpSession session = request.getSession(); * session.setAttribute("username",username);
* //response.sendRedirect("/MyWeb_04/successful.jsp"); * request.getRequestDispatcher("/successful.jsp").forward(request, * response); * * }else{ request.setAttribute("error", "您的賬號和密碼不匹配,請重新輸入"); * request.getRequestDispatcher("/login.jsp").forward(request,
* response); } *///通過連線資料庫的賬戶,判斷賬號的存在登入進行簡單的登陸/計算String username = request.getParameter("username");String password = request.getParameter("password");//System.out.println(username + password);// 建立物件UserDao userdao = new UserDao();User user = UserDao.login(username,
password);if (user != null) {HttpSession session = request.getSession();session.setAttribute("username", username);// response.sendRedirect("/MyWeb_04/successful.jsp");request.getRequestDispatcher("/successful.jsp").forward(request, response);} else {request.setAttribute("error",
"您的賬號和密碼不匹配,請重新輸入");request.getRequestDispatcher("/login.jsp").forward(request, response);}}}
4.3、建立CalcServlet.java類
package com.yd.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 計算calc的servlet類
* @author 2017
* @Date 2018年2月2日
* @company yd
*/
@WebServlet("/CalcServlet")
public class CalcServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String num1 = request.getParameter("num1");
String num2 = request.getParameter("num2");
int n1 = Integer.parseInt(num1);
int n2 = Integer.parseInt(num2);
int sum = n1*n2;
request.setAttribute("sum", sum);
request.getRequestDispatcher("/result.jsp").forward(request, response);
// response.sendRedirect("/MyWeb_04/result.jsp");
}
}
4.4、建立UserDao.java工具類
package com.yd.utils;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.yd.entity.User;
/**
* 連線資料類
* @author 2017
* @Date 2018年2月2日
* @company yd
*/
public class UserDao {
private static User user =null;
private static Connection conn =null;
public static User login(String username, String password) {
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(//
"jdbc:mysql://127.0.0.1:3306/users", "root", "123");
String sql =" select * from user where username = ? and password = ? ";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, username);
ps.setString(2, password);
ResultSet rs = ps.executeQuery();
while(rs.next()){
user = new User();
user.setUsername(rs.getString("username"));
user.setPassword(rs.getString("password"));
}
conn.close();
ps.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return user;
}
/*public static void main(String[] args) {
User login = login("admin","123");
System.out.println(login);
}*/
}
五、建立jsp頁面
5.1、建立login.jsp頁面<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登入頁面</title>
<style type="text/css">
#span{
color:red;
font-wight:bold;
}
</style>
</head>
<body>
<%
String message = "";
String error = (String) request.getAttribute("error");
if(message != null){
message = error;
}
%>
<span id="msg"><%=message %></span>
<%-- <%
/*
客戶端下一次再訪問login.jsp的時候就會帶著這個Cookie,我們可以在login.jsp中獲取這個Cookie
* 如果這個Cookie中存在我們防止的Cookie,那麼就設定到使用者名稱的輸入框
*/
String rememberName = "";
Cookie[] cookies = request.getCookies();
if(cookies != null){
for(Cookie c : cookies){
if("remeberName".equals(c.getName())){
rememberName = c.getValue();
}
}
}
%> --%>
<form action="/MyWeb_04/LoginServlet" method="post">
用 戶:<input type="text" name="username" /><br/>
密 碼:<input type="password" name="password" /><br/>
<input type="submit" value="登入" />
</form>
</body>
</html>
5.2、建立success.jsp頁面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登入成功頁面</title>
</head>
<body>
<%
String username =(String)session.getAttribute("username");
if(username == null){
request.setAttribute("error", "您還未登入,登入後再來吧!");
request.getRequestDispatcher("/login.jsp").forward(request, response);
return;
}
%>
歡迎使用者<%=username %>到來
<form action="/MyWeb_04/CalcServlet" method="post">
請輸入數值:<input type="text" name="num1" /><br/>
請輸入數值:<input type="text" name="num2" /><br/>
<input type="submit" value="計算" />
</form>
</body>
</html>
5.3、建立result.jsp頁面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>計算結果頁面</title>
</head>
<body>
<%
String username =(String)session.getAttribute("username");
if(username == null){
request.setAttribute("error", "您還未登入,登入後再來吧!");
request.getRequestDispatcher("/login.jsp").forward(request, response);
return;
}
%>
歡迎使用者<%=username %>到來<br/>
<%
Integer sum = (Integer)request.getAttribute("sum");
%>
計算的結果為:<%=sum %>
</body>
</html>
六、執行的結果圖。
總結:
servlet實現使用者登入功能,以及一個計算功能,及連線mysql資料庫
僅供參考,有問題可以提出。