homeWork
博客专区 > bangchao 的博客 > 博客详情
homeWork
bangchao 发表于4年前
homeWork
  • 发表于 4年前
  • 阅读 82
  • 收藏 0
  • 点赞 0
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

摘要: homeWork

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">
<%
	try {
		Cookie[] cookies = request.getCookies();
		if (cookies != null) {
			for (int i = 0; i < cookies.length; i++) {
				Cookie newCookie = cookies[i];

				if ("user".equals(newCookie.getName())) {
					String name = newCookie.getValue().split("-")[0];
					String passward = newCookie.getValue().split("-")[1];
					request.setAttribute("username", name);
					request.setAttribute("password", passward);
				}
			}
		}
	} catch (Exception e) {
		e.printStackTrace();
	}
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>用户登录</title>
<script language="javascript" type="text/javascript">
	function test1()
	{
		if (document.user.password.value.length < 6)
		{
			window.alert("密码要大于6位!");
			return false;
		}
	}

	function test2()
	{
		var reg = /^[^<>'" ]*$/;
		if (reg.test(document.user.password.value))
		{
			window.alert("用户名不能有特殊字符!");
			return false;
		}
	}
</script>
</head>
<body>
	<center>
		<form action="${pageContext.request.contextPath}/login" method="post"
			name="user">
			<table>
				<tr>
					<td>用户名:</td>
					<td><input type="text" name="username"
						value="${requestScope.username }" onclick="test2()"></td>
					<td><span style="color: red">${errors.username }</span></td>
				</tr>
				<tr>
					<td>密 码:</td>
					<td><input type="password" name="password"
						value="${requestScope.password }" onclick="test1()"></td>
					<td><span style="color: red">${errors.password } </span></td>
				</tr>
				<tr>
					<td>记住密码:</td>
					<td><select name="flag">
							<option value="2">否</option>
							<option value="1">是</option>
					</select></td>
				</tr>
			</table>
			<input type="submit" value="提交"> <input type="reset"
				value="重置">
		</form>
	</center>
</body>
</html>

login.java

package servlet;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import modle.User;
import dao.Impl.userDaoImpl;

@WebServlet("/login")
public class login extends HttpServlet
{
	private static final long serialVersionUID = 1L;
	private User user = new User();
	private userDaoImpl userDao = new userDaoImpl();

	public login()
	{
		super();
	}

	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException
	{
		this.process(request, response);
	}

	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException
	{
		this.process(request, response);
	}

	protected void process(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException
	{
		String username = request.getParameter("username");
		String password = request.getParameter("password");
		String flag = request.getParameter("flag");

		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");

		Map<String, String> errors = new HashMap<String, String>();

		if (null == username && "".equals(username))
		{
			errors.put("username", "用户名不能为空!");
		}
		else if (null != username
				&& username
						.matches("^(?!_)(?!.*?_$)[a-zA-Z0-9_\u4e00-\u9fa5]+$"))
		{
			errors.put("username", "用户名至少一个汉字、数字、字母、下划线!");
		}

		if (null == password && "".equals(password))
		{
			errors.put("password", "密码不能为空");
		}
		else if (null != password && (password.length() < 6))
		{
			errors.put("password", "密码应该大于6位!");
		}

		if (!errors.isEmpty())
		{
			request.setAttribute("errors", errors);
			request.getRequestDispatcher("/login.jsp").forward(request,
					response);
			return;
		}

		if (flag != null && flag.equals("1"))
		{

			Cookie cookie = new Cookie("user", username + "-" + password);
			cookie.setMaxAge(60 * 60 * 24 * 30); // cookie 保存30天
			response.addCookie(cookie);

		}
		else
		{

			Cookie deleteNewCookie = new Cookie("user", null);
			deleteNewCookie.setMaxAge(0); // 删除该Cookie
			response.addCookie(deleteNewCookie);
		}

		user.setUsername(username);
		user.setPassword(password);

		// 判断用户是否存在
		if (userDao.Login(user))
		{
			request.setAttribute("username", username);
			request.setAttribute("password", password);
			request.getRequestDispatcher("/success.jsp").forward(request,
					response);
		}
	}
}

User.jsp

package modle;

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;
	}

}

OptUtil.java

package JDBC;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class OptUtil
{
	/*
	 * 数据库操作工具类
	 * 
	 */
	
	// 返回boolean类型的查找
	public boolean backBoolean(String sql, Object... args)
	{
		Connection conn = null;
		ResultSet rs = null;
		PreparedStatement psmt = null;
		boolean backFlag = false;

		try
		{
			// 链接数据库
			conn = DBConnection.getConnection();
			// 执行
			rs = DBConnection.executeSQL(sql, args);

			if (rs.next())
			{
				backFlag = true;
			}
		}
		catch (SQLException e)
		{
			e.printStackTrace();
		}
		finally
		{
			DBConnection.free(rs, psmt, conn);// 关闭数据库
		}
		return backFlag;
	}
}

DBConnection.java

package JDBC;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class DBConnection
{
	public static PreparedStatement psmt = null;
	public static Connection conn = null;
	public static ResultSet rs = null;

	public DBConnection()
	{
	}

	// 连接数据库
	public static Connection getConnection()
	{
		try
		{
			Class.forName("com.mysql.jdbc.Driver");
			conn = DriverManager.getConnection(
					"jdbc:mysql://localhost:3306/mysql", "username", "password");
		}
		catch (ClassNotFoundException | SQLException e)
		{
			e.printStackTrace();
		}
		return conn;
	}

	// 执行sql语句
	public static ResultSet executeSQL(String sql, Object... args)
			throws SQLException
	{
		psmt = conn.prepareStatement(sql);
		for (int i = 0; i < args.length; i++)
		{
			psmt.setObject(1 + i, args[i]);
		}

		return psmt.executeQuery();
	}

	// 关闭数据库
	public static void free(ResultSet rs, PreparedStatement psmt,
			Connection conn)
	{
		try
		{
			if (rs != null)
				rs.close();
		}
		catch (SQLException e)
		{
			e.printStackTrace();
		}
		finally
		{
			try
			{
				if (psmt != null)
					psmt.close();
			}
			catch (SQLException e)
			{
				e.printStackTrace();
			}
			finally
			{
				if (conn != null)
					try
					{
						conn.close();
					}
					catch (Exception e)
					{
						e.printStackTrace();
					}
			}
		}
	}
}

userDao.java

package dao;

import modle.User;

public interface userDao
{
	public boolean Login(User user); // 用户登录
}

userDaoImpl

package dao.Impl;

import modle.User;
import JDBC.OptUtil;
import dao.userDao;

public class userDaoImpl implements userDao
{

	@Override
	public boolean Login(User user)
	{

		String sql = "select *from tbl_user where tbl_name = ? and tbl_pwd = ?";
		Object[] args = { user.getUsername(), user.getPassword() };
		return new OptUtil().backBoolean(sql, args);
	}
}


  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 0
博文 1
码字总数 822
×
bangchao
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: