使用JSP链接数据库进行用户注册登录
(1)User
package home;
public class User {
private String username;
private String password;
public User() {
}
public User(String username, String password) {
this.username = username;
this.password = password;
}
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 [username=" + username + ", password=" + password + "]";
}
}
(2)DBUtil
package home;
import java.io.*;
import java.sql.*;
import java.util.*;
import home.User;
public class DBUtil {
// 操作数据库的工具类
static {
try {
Class.forName("com.mysql.jdbc.Driver"); // 加载驱动
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
// 获取数据库连接对象
public static Connection getDBConnection() {
Properties pro = new Properties();
InputStream input = null;
Connection conn = null;
try {
input = DBUtil.class.getClassLoader().getResourceAsStream(
"db.properties");
pro.load(input);
conn = DriverManager.getConnection(pro.getProperty("dburl"), pro);
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
// 注册用户
public static boolean register(String username, String pwd,String regMoto) {
Connection conn = getDBConnection();
PreparedStatement ps = null;
int count = 0;
if (conn != null) {
String sql = "insert into user(username,password,moto)values(?,?,?)";
try {
ps = conn.prepareStatement(sql); // 生成PreparedStatement,并将SQL发到DBMS中进行预编译
ps.setString(1, username);
ps.setString(2, pwd);
ps.setString(3,regMoto);
count = ps.executeUpdate(); // 执行SQL,返回影响的行数
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
ps.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
return count > 0;
}
// 登录
public static User login(String username, String pwd) {
User user = null;
Connection conn = getDBConnection();
PreparedStatement ps = null;
ResultSet rs = null;
if (conn != null) {
String sql = "select username,password from user where username=? and password=?";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, username);
ps.setString(2, pwd);
rs = ps.executeQuery();
if (rs.next()) { // 如果查询到了,则返回true
String name = rs.getString("username");
String password = rs.getString("password");
user = new User(name, password);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
rs.close();
ps.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
return user;
}
}
(3)Login.java
package home;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Login extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String username = req.getParameter("username");
String pwd = req.getParameter("pwd");
User password =new User(username,pwd);
if(pwd.equals(password)){
req.setAttribute("user", "用户:"+username+",欢迎访问");
req.getRequestDispatcher("/welcome.jsp").forward(req, resp);
}
}
}
(4)Register.java
package home;
import java.io.IOException;
import home.User;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Register extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
String username = req.getParameter("username");
String pwd = req.getParameter("pwd");
String pwd2 = req.getParameter("pwd2");
if(username==""){
req.setAttribute("user", "用户名不能为空");
req.getRequestDispatcher("/register.jsp").forward(req, resp);
return;
}
if(pwd==""){
req.setAttribute("user", "密码不能为空!");
req.getRequestDispatcher("/register.jsp").forward(req, resp);
return;
}
if(!pwd.equals(pwd2)){
req.setAttribute("user", "两次输入的密码不同");
req.getRequestDispatcher("/regist.jsp").forward(req, resp);
return;
}
req.setAttribute("user", "恭喜:"+username+",注册成功");
req.getRequestDispatcher("/index.jsp").forward(req, resp);
}
}
(5)login.jsp
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>用户登录页面</title>
</head>
<body>
<form action="loginURL" method="post" id="regForm">
用户名:<input type="text" name="username" id="uname" placeholder="请输入用户名"><br/><br/>
密码:<input type="password" name="pwd" id="pwd" placeholder="请输入密码"><br/><br/>
<input type="submit" value="登录"/>
<input type="reset" value="重置"/>
<a href=register.jsp target="_blank">注册</a>
</form>
</body>
</html>
(6)register.jsp
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>注册页面</title>
<script type="text/javascript" src="jquery-3.1.1.js"></script>
<script type="text/javascript">
$(function(){
$("#regForm").bind("submit",function(event) {
var uname=$("#username").val();
var pwd=$("#pwd").val();
if (uname=="") {
alert("用户名不能为空!");
event.preventDefault();
return false;
}
if(pwd.length<6){
alert("密码长度不能小于6位!");
event.preventDefault();
return false;
}
if (form.pwd.value!=form.pwd2.value) {
alert("两次输入的密码不同!");
return false;
}
else return true;
});
});
</script>
</head>
<body>
<form action="serverURL" method="post" id="regForm">
注册用户名: <input type="text" name="username" id="username" placeholder="请输入用户名"><br/><br/>
注册密码: <input type="password" name="pwd" id="pwd" placeholder="请输入密码"><br/><br/>
确认密码: <input type="text"name="pwd2" id="pwd2" placeholder="再次输入密码"> <br/><br/>
<input type="submit" value="注册" >
<input type="reset" value="重置">
</form>
</body>
</html>
(7)fail
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>失败页面</title>
</head>
<body>
<h4>用户名或密码错误,请重新登录!</h4>
<a href="http://HelloWebDemo/homework/login.jsp">点击跳转</a>
</body>
</html>
(8)welcome
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>登录成功页面</title>
</head>
<body>
<%
String sessionAttr=(String)session.getAttribute("uname");
%>
<h4>欢迎<%=sessionAttr%>登录!</h4>
</body>
</html>
(9)Web
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>HelloWebDemo</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>firstServlet</servlet-name>
<servlet-class>home.LoginAndRegister</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>firstServlet</servlet-name>
<url-pattern>/homework/loginURL</url-pattern>
</servlet-mapping>
</web-app>