目录结构和数据库同上一篇文章

login.jsp(修复bug)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.sql.*,java.util.*"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登录</title>
</head>
<%!public static final String dbDriver = "com.mysql.cj.jdbc.Driver";
public static final String dbUrl = "jdbc:mysql://localhost:3306/demo0401?useSSL=false&serverTimezone=UTC";
public static final String dbUser = "root";
public static final String dbPass = "";%>
<%!public String getValueByCookieName(HttpServletRequest request, String cookieName) {
Cookie info[] = request.getCookies();
String cookieValue = "";
if(info == null){
return cookieValue;
}
for (int i = 0; i < info.length; i++) {
if (cookieName.equals(info[i].getName())) {
cookieValue = info[i].getValue();
}
}
return cookieValue;
}%>
<%!public Boolean valiCookieAndValue(HttpServletRequest request, String cookieName, String cookieValue) {
Cookie info[] = request.getCookies();
boolean flag = false;
if(info == null){
return flag;
}
for (int i = 0; i < info.length; i++) {
if (cookieName.equals(info[i].getName()) && cookieValue.equals(info[i].getValue())) {
flag = true;
}
}
return flag;
}%>
<%
//获取数据库连接
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
Class.forName(dbDriver); // 加载驱动程序
conn = DriverManager.getConnection(dbUrl, dbUser, dbPass); //连接
%>
<%
String r_username = "";
String r_password = "";
//判断是否有Cookie信息
if (!("".equals(getValueByCookieName(request, "username")))) {
//判断是否自动登录
if ("on".equals(getValueByCookieName(request, "autoLogin"))) {
out.print("<h1>已有登录信息 3s后自动跳转</h1>");
response.setHeader("refresh", "3;url=success.jsp"); //客户端跳转 会将页面中程序执行完后再执行跳转
}
//判断是否记住密码
if (valiCookieAndValue(request, "rememberMe", "on")) {
r_username = getValueByCookieName(request, "username");
r_password = getValueByCookieName(request, "password");
}
}
%>
<%
//接收表单数据 并存储Cookie信息
String username = request.getParameter("username");
String password = request.getParameter("password");
String rememberMe = request.getParameter("rememberMe");
String autoLogin = request.getParameter("autoLogin");
if (!(username == null || "".equals(username) || password == null || "".equals(password))) {
String sql = "select * from user where username=? and password=?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, username);
pstmt.setString(2, password);
rs = pstmt.executeQuery();
if (rs.next()) {
//开始将用户名 密码 是否自动登录 是否记住密码的信息记录到cookie
Cookie c_username = new Cookie("username", username);
Cookie c_password = new Cookie("password", password);
Cookie c_rememberMe = new Cookie("rememberMe", rememberMe);
Cookie c_autoLogin = new Cookie("autoLogin", autoLogin);
c_username.setMaxAge(60);
c_password.setMaxAge(60);
c_rememberMe.setMaxAge(60);
c_autoLogin.setMaxAge(60);
response.addCookie(c_username);
response.addCookie(c_password);
response.addCookie(c_rememberMe);
response.addCookie(c_autoLogin);
pstmt.close();
conn.close();
response.setHeader("refresh", "0;url=success.jsp"); //此处使用<jsp:forward page="success.jsp" />使用服务器端跳转的方式到成功页面 第一次获取不到cookie信息
%>
<%
}
}
%>
<body>
<form action="login.jsp" method="post">
用户名: <input type="text" name="username" value="<%=r_username%>"><br /> 密码:<input
type="password" name="password" value="<%=r_password%>"><br /> <br /> 记住密码<input
type="checkbox" name="rememberMe" id="rememberMe"> 自动登录<input
type="checkbox" name="autoLogin" id="autoLogin"><br /> <br />
<input type="submit" value="登录"> <input type="reset"
value="重置"><br />
</form>
</body>
</html>
success.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>成功页面</title>
</head>
<%!public String getValueByCookieName(HttpServletRequest request, String cookieName) {
Cookie info[] = request.getCookies();
String cookieValue = "";
if(info == null){
return cookieValue;
}
for (int i = 0; i < info.length; i++) {
if (info[i].getName().equals(cookieName)) {
cookieValue = info[i].getValue();
}
}
return cookieValue;
}%>
<body>
登录成功
<br /> 你好,<%=getValueByCookieName(request, "username")%>
<a href="logout.jsp">回到登录页面</a>
</body>
</html>
logout.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>注销</title>
</head>
<body>
<%
session.invalidate();
response.setHeader("refresh", "0;url=login.jsp");
%>
</body>
</html>
原创文章,作者:witersen,如若转载,请注明出处:https://www.witersen.com
评论列表(1条)
可棒!