版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lanse_l/article/details/90055625
效果如图:
写一个遵守JavaBean API规范的类
package lcb;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
//公共类
public class User {
private String uname; //私有的成员变量
private String upwd;
public User() {} //公共的无参构造函数
//getter 和 setter 成员函数
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getUpwd() {
return upwd;
}
public void setUpwd(String upwd) {
this.upwd = upwd;
}
public boolean check() {
//声明对象
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
//加载驱动
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/lcb?serverTimezone=GMT";
//获取连接
conn = DriverManager.getConnection(url,"root","lanse0305**");
//创建sql命令
String sql = "select * from Login where user=? and password=?";
//创建命令对象
ps = conn.prepareStatement(sql);
//给占位符赋值
ps.setString(1, uname);
ps.setString(2, upwd);
//获得返回对象
rs = ps.executeQuery();
if(rs.next()) {
return true;
}
}catch(Exception e) {
e.printStackTrace();
}
return false;
}
}
默认主页(登录页面和密码错误重新登录):
<%@page language="java" contentType="text/html; charset=utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Login</title>
</head>
<body>
<%
String s = (String)request.getParameter("sign");
if( "false".equals(s)){
out.print("<h1>登录失败</h1>");
out.print("用户名或密码错误!<br>");
}else{
out.print("<h1>登录页面</h1>");
}
%>
<hr>
<form action="LoginDispose.jsp" method="post">
用户名:
<%
Cookie[] cks = request.getCookies();
String uname = "";
String upwd = "";
String rem = "";
if(cks != null){
for(Cookie c : cks){
if("uname".equals(c.getName())){
uname = c.getValue();
}else if("upwd".equals(c.getName())){
upwd = c.getValue();
}else if("remember".equals(c.getName())){
rem = c.getValue();
}
}
}
out.print("<input type=\"text\" name=\"uname\" value=" + uname + "><br/>" );
out.print("密码:");
out.print("<input type=\"password\" name=\"upwd\" value=" + upwd + "><br/>" );
if("OK".equals(rem)){
out.print("<input type=\"checkbox\" name=\"remember\" value=\"OK\" checked=\"true\">");
}else{
out.print("<input type=\"checkbox\" name=\"remember\" value=\"OK\">");
}
out.print("记住密码<br/>");
%>
<input type="submit" value="登录"/>
</form>
</body>
</html>
逻辑处理
判断密码是否正确,如果密码正确并勾选了记住密码,就把正确的用户名和密码用Cooike储存,否则就删除之前的Cookie
<%@ page import="lcb.User" %>
<%@ page language="java" contentType="text/html; charset=utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>处理</title>
</head>
<body>
<jsp:useBean id="myUser" class="lcb.User" scope="request" />
<jsp:setProperty name="myUser" property="*"/>
<%
String uname = myUser.getUname();
String upwd = myUser.getUpwd();
if( myUser.check() ){
String s = request.getParameter("remember");
Cookie c = null;
Cookie c2 = null;
Cookie c3 = null;
if( "OK".equals(s) ){
c = new Cookie("uname",uname);
c2 = new Cookie("upwd",upwd);
c3 = new Cookie("remember","OK");
}else{
c = new Cookie("uname","");
c2 = new Cookie("upwd","");
c3 = new Cookie("remember","");
}
//Cookie有效期为10天
c.setMaxAge(10*24*3600);
c2.setMaxAge(10*24*3600);
c3.setMaxAge(10*24*3600);
response.addCookie(c);
response.addCookie(c2);
response.addCookie(c3);
request.getRequestDispatcher("success.jsp").forward(request, response);
}
%>
<jsp:forward page="index.jsp">
<jsp:param value="false" name="sign"/>
</jsp:forward>
</body>
</html>
登录成功页面 (显示用户名和密码)
<%@ page import="lcb.User" %>
<%@ page language="java" contentType="text/html; charset=utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>登录成功</title>
</head>
<body>
<jsp:useBean id="myUser" class="lcb.User" scope="application" />
<h1>登录成功</h1>
<hr>
用户名:<jsp:getProperty property="uname" name="myUser"/><br>
密码:<jsp:getProperty property="upwd" name="myUser"/>
<hr>
<a href="index.jsp">退出登录</a>
</body>
</html>