JSP + javaBean 练习登录页面

版权声明:本文为博主原创文章,未经博主允许不得转载。 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>

猜你喜欢

转载自blog.csdn.net/lanse_l/article/details/90055625
今日推荐