JSP登录与注册的⼩案例<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="/2001/XMLSchema-instance" xmlns="/xml/ns/javaee" xsi:schemaLocation="/xml/ns/javaee /xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" <servlet><servlet-name>Register</servlet-name><servlet-class>com.zr.homework.servlet.Register</servlet-class></servlet><servlet><servlet-name>LoginServlet</servlet-name><servlet-class>com.zr.homework.servlet.LoginServlet</servlet-class></servlet><servlet-mapping><servlet-name>Register</servlet-name><url-pattern>/Register</url-pattern></servlet-mapping><servlet-mapping><servlet-name>LoginServlet</servlet-name><url-pattern>/LoginServlet</url-pattern></servlet-mapping></web-app><%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><base href="<%=basePath%>"><title>My JSP 'index.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"><meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body>登陆成功<br></body></html><%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>登录页⾯</title><script type="text/javascript">function checkName(){// 获取相应标签var name = document.getElementsByName("name")[0];// 获取下⼀个兄弟节点var userTip = name.nextSibling;userTip.style.color="red";// 判断⽤户名是否为空,空提⽰错误if(name.value=="" || name.value==null){userTip.innerHTML = "⽤户名不能为空";}else{var request = new XMLHttpRequest();var method = "GET";var url = "LoginServlet?name="+name.value;request.open(method, url, true, null, null);request.send(null);request.onreadystatechange = function(){if(request.readyState==4){if(request.status==200 || request.status==304){userTip.innerHTML = request.responseText;}}};};}function checkPwd(){// 获取相应标签var name = document.getElementsByName("password")[0];// 获取下⼀个兄弟节点var userTip = name.nextSibling;userTip.style.color="red";// 判断⽤户名是否为空,空提⽰错误if(name.value=="" || name.value==null){userTip.innerHTML = "密码不能为空";}else{userTip.innerHTML = "";}}</script></head><body><h1>登录</h1><form action="LoginServlet" method="post">⽤户名:<input type="text" name="name" onblur="checkName()" value="${ }"><span></span><br><br>密码:<input type="password" name="password" onblur="checkPwd()" value="${param.password }"><span></span><br><br><input type="submit" value="登录"></form></body></html><%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>注册页⾯</title><script type="text/javascript" src="js/jqeury/jquery-3.1.0.min.js"></script><script type="text/javascript" src="js/register.js"></script></head><body><form action="Register" method="post">⽤户名:<input type="text" id="name" name="name"><span></span><br><br>密码:<input type="password" att="one" name="password" placeholder="3到15位字母和数字"><span></span><br><br>确认密码:<input type="password" att="two"><span></span><br><br>邮箱:<input type="text" class="email" name="email"><span></span><br><br>⾝份证号:<input type="text" class="IDCard" name="IDCard"><span></span><br><br>出⽣年⽉⽇:<input type="text" readonly="readonly" name="birthday"><span></span><br><br><input type="submit" value="提交" onclick="return checkRegister()"></form></body></html>$(function(){$("span").css("color","red");$("#name").blur(function(){var value = $("#name").val();//如果为空,提⽰不能为空,否则清除提⽰信息if(value==null || value==""){$("#name+span").html("⽤户名不能为空");}else{$.post("Register",{"name":value,"action":"requery"},function(data){var isRegistered = eval("("+data+")");if(isRegistered==true){$("#name+span").html("该⽤户已被注册");}else{$("#name+span").html("");}},"text");}$("input[att=one]").blur(function(){var value = $("input[att=one]").val();//如果为空,提⽰不能为空,否则清除提⽰信息if(value==null || value==""){$("input[att=one]+span").html("密码不能为空");}else{$("input[att=one]+span").html("");}});$("input[att=two]").blur(function(){var value = $("input[att=two]").val();//如果为空,提⽰不能为空,否则清除提⽰信息if(value==null || value==""){$("input[att=two]+span").html("确认密码不能为空");}else{$("input[att=two]+span").html("");}});$(".email").blur(function(){var value = $(".email").val();//如果为空,提⽰不能为空,否则清除提⽰信息if(value==null || value==""){$(".email+span").html("邮箱不能为空");}else{$(".email+span").html("");}});$(".IDCard").blur(function(){var value = $(".IDCard").val();//如果为空,提⽰不能为空,否则清除提⽰信息if(value==null || value==""){$(".IDCard+span").html("⾝份证号不能为空");}else{$(".IDCard+span").html("");}// 从⾝份证号中截取⽣⽇var str = value.substring(6,14);var year = str.substring(0,4);var month = str.substring(4,6);var day = str.substring(6,8);var birthday = year+"-"+month+"-"+day;$("input[readonly=readonly]").val(birthday);});});});function checkRegister(){//检查参数是否为空var value1 = $("#name").val();if(value1==null || value1==""){$("#name+span").html("⽤户名不能为空");return false;}var value2 = $("input[att=one]").val();if(value2==null || value2==""){$("input[att=one]+span").html("密码不能为空");return false;}var value3 = $("input[att=two]").val();if(value3==null || value3==""){$("input[att=two]+span").html("确认密码不能为空");return false;}var value4 = $(".email").val();if(value4==null || value4==""){$(".email+span").html("邮箱不能为空");return false;}var value5 = $(".IDCard").val();if(value5==null || value5==""){$(".IDCard+span").html("⾝份证号不能为空");return false;}//检查密码是否正确(暂时不处理,密码的正则表达式)var pwdIsRight = false;// 3到15位字母和数字var reg1 = /^[a-zA-Z0-9]{3,15}$/;// 包含字母var reg2 = /[a-zA-Z]/;// 包含数字var reg3 = /[0-9]/;if(reg1.test(value2)&®2.test(value2)&®3.test(value2)){$("input[att=one]+span").html("");pwdIsRight = true;}else{$("input[att=one]+span").html("密码不正确");return false;}//检查密码与确认密码是否相同var isEqual = false;if(value2==value3){isEqual = true;$("input[att=one]+span").html("");}else{$("input[att=one]+span").html("密码不匹配");return false;}// 检查邮箱是否正确var emailIsRight = false;var regEmail = /^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/;if(regEmail.test(value4)){$(".email+span").html("");emailIsRight = true;}else{$(".email+span").html("邮箱不正确");return false;}var IDIsRight = false;// 18位数字var regID = /^[0-9]{18}$/;if(regID.test(value5)){IDIsRight = true;$(".IDCard+span").html("");}else{$(".IDCard+span").html("⾝份证号不正确");return false;}//如果全都正确就返回true,否则返回falseif(pwdIsRight==true && isEqual==true && emailIsRight==true && IDIsRight==true){ return true;}return false;}<?xml version="1.0" encoding="UTF-8"?><!-- c3p0-config.xml⽂件配置 --><c3p0-config><named-config name="getconnection"><!-- 基本配置 --><property name="user">LF</property><property name="password">LF</property><property name="jdbcUrl">jdbc:oracle:thin:@192.168.10.105:1521:orcl</property> <property name="driverClass">oracle.jdbc.driver.OracleDriver</property><!-- 配置初始值 --><property name="initialPoolSize">16</property><property name="maxPoolSize">25</property><property name="minPoolSize">10</property></named-config></c3p0-config>package com.zr.homework.utils;import java.sql.Connection;import java.sql.SQLException;import javax.sql.DataSource;import boPooledDataSource;public class JdbcUtils {/*** 获取数据库连接* @return*/public static Connection getConnection() {DataSource ds = new ComboPooledDataSource("getconnection");Connection connection = null;try {connection = ds.getConnection();return connection;} catch (SQLException e) {e.printStackTrace();}return null;}}package com.zr.homework.pojo;public class Person {private String name;//⽤户名private String password;//密码private String email;//邮箱private String ID;//⾝份证private String birthday;//出⽣年⽉⽇public String getName() {return name;}public void setName(String name) { = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public String getID() {return ID;}public void setID(String iD) {ID = iD;}public String getBirthday() {return birthday;}public void setBirthday(String birthday) {this.birthday = birthday;}public Person() {super();}public Person(String name, String password, String email, String iD,String birthday) {super(); = name;this.password = password;this.email = email;ID = iD;this.birthday = birthday;}@Overridepublic String toString() {return "Person [name=" + name + ", password=" + password + ", email="+ email + ", ID=" + ID + ", birthday=" + birthday + "]";}}package com.zr.homework.servlet;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import erDaoImpl;import erServiceImpl;import com.zr.homework.pojo.Person;/**** @author lf**/public class LoginServlet extends HttpServlet {private static final long serialVersionUID = 1L;@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {/*System.out.println("LoginServlet...doGet...");*/resp.setCharacterEncoding("utf-8");String name = req.getParameter("name");UserServiceImpl impl = new UserServiceImpl();Person p = new Person(name, null, null, null, null);boolean had = impl.requeryUserService(p);System.out.println(had);if(had){resp.getWriter().print("");}else{resp.getWriter().print("该⽤户不存在");}}public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("LoginServlet...doPost...");String name = request.getParameter("name");String password = request.getParameter("password");System.out.println(name+","+password);Person p = new Person(name, password, null, null, null);UserServiceImpl impl = new UserServiceImpl();boolean success = impl.loginService(p);if (success) {response.sendRedirect(request.getContextPath()+"/index.jsp");}else {request.getRequestDispatcher("/login.jsp").forward(request, response);}}}package com.zr.homework.servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import erDaoImpl;import erService;import erServiceImpl;import com.zr.homework.pojo.Person;public class Register extends HttpServlet {private static final long serialVersionUID = 1L;@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("doGet...");}public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("Register...doPost...");UserServiceImpl impl = new UserServiceImpl();String name = request.getParameter("name");String action = request.getParameter("action");// 检查是查询还是注册if("requery".equals(action)){Person p = new Person(name, null, null, null, null);boolean isExited = impl.requeryUserService(p);response.getWriter().print(isExited);}else{System.out.println("注册⽤户");//获取相应的值String username = request.getParameter("name");String password = request.getParameter("password");String email = request.getParameter("email");String IDCard = request.getParameter("IDCard");String birthday = request.getParameter("birthday");System.out.println("birthday:"+birthday);Person person = new Person(username, password, email, IDCard, birthday); System.out.println(person);// 注册服务boolean isSuccess = impl.addUserService(person);// 如果注册成功,重定向到登录页⾯,否则重定向到错误页⾯if(isSuccess){response.sendRedirect(request.getContextPath()+"/login.jsp");}else {response.sendRedirect(request.getContextPath()+"/error.jsp");}}}}package erDao;import java.util.List;import com.zr.homework.pojo.Person;/**** @author lf**/public interface UserDao {/*** 查询* @param p ⽤户* @return*/public boolean requeryUser(Person p);/*** 添加⽤户* @param p ⽤户* @return*/public boolean addUser(Person p);/*** ⽤户登录* @param p* @return*/public boolean userLogin(Person p);}package erDao.impl;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import erDao;import com.zr.homework.pojo.Person;import com.zr.homework.utils.JdbcUtils;public class UserDaoImpl implements UserDao{@Overridepublic boolean requeryUser(Person p) {boolean isExited = false;// 如果为空,直接返回falseif (p==null) {return isExited;}//获取连接Connection connection = JdbcUtils.getConnection();//SQL语句String sql = "SELECT NAME FROM HW WHERE NAME=?";//创建预编译PreparedStatement pStatement = null;ResultSet rSet = null;try {// 执⾏SQL语句pStatement = connection.prepareStatement(sql);// 设置相应的参数pStatement.setString(1, p.getName());//查询结果集,有就返回ture,否则返回falserSet = pStatement.executeQuery();if (rSet.next()) {isExited = true;}} catch (SQLException e) {e.printStackTrace();}finally{//关闭相应对象try {if (rSet!=null) {rSet.close();}if (pStatement!=null) {pStatement.close();}if (connection!=null) {connection.close();}} catch (Exception e) {e.printStackTrace();}}return isExited;}@Overridepublic boolean addUser(Person p) {boolean isSuccess=false;// 如果为空,直接返回falseif (p==null) {return false;}//获取连接Connection connection = JdbcUtils.getConnection();//SQL语句String sql = "INSERT INTO HW VALUES(?,?,?,?,?)";//创建预编译PreparedStatement pStatement = null;int successAmount = -1;try {// 执⾏SQL语句pStatement = connection.prepareStatement(sql);// 设置相应的参数pStatement.setString(1, p.getName());pStatement.setString(2, p.getPassword());pStatement.setString(3, p.getEmail());pStatement.setString(4, p.getID());pStatement.setString(5, p.getBirthday());//操作成功数⼤于零,就返回ture,否则返回falsesuccessAmount = pStatement.executeUpdate();if (successAmount>0) {isSuccess = true;}} catch (SQLException e) {e.printStackTrace();}finally{//关闭相应对象try {if (pStatement!=null) {pStatement.close();}if (connection!=null) {connection.close();}} catch (Exception e) {e.printStackTrace();}}return isSuccess;}@Overridepublic boolean userLogin(Person p) {boolean isExited = false;// 如果为空,直接返回falseif (p==null) {return isExited;}//获取连接Connection connection = JdbcUtils.getConnection();//SQL语句String sql = "SELECT NAME FROM HW WHERE NAME=? AND PASSWORD=?";//创建预编译PreparedStatement pStatement = null;ResultSet rSet = null;try {// 执⾏SQL语句pStatement = connection.prepareStatement(sql);// 设置相应的参数pStatement.setString(1, p.getName());pStatement.setString(2, p.getPassword());//查询结果集,有就返回ture,否则返回falserSet = pStatement.executeQuery();if (rSet.next()) {isExited = true;}} catch (SQLException e) {e.printStackTrace();}finally{//关闭相应对象try {if (rSet!=null) {rSet.close();}if (pStatement!=null) {pStatement.close();}if (connection!=null) {connection.close();}} catch (Exception e) {e.printStackTrace();}}return isExited;}}package erService;import com.zr.homework.pojo.Person;/**** @author lf**/public interface UserService {/*** ⽤户查询服务* @param p* @return*/public boolean requeryUserService(Person p);/*** 注册服务* @param p* @return*/public boolean addUserService(Person p);/*** 登陆服务* @param p* @return*/public boolean loginService(Person p);}package erServiceImpl;import erDaoImpl; import erService; import com.zr.homework.pojo.Person;public class UserServiceImpl implements UserService{ /*** ⽤户查询*/@Overridepublic boolean requeryUserService(Person p) {UserDaoImpl impl = new UserDaoImpl();return impl.requeryUser(p);}/*** 注册服务*/@Overridepublic boolean addUserService(Person p) {UserDaoImpl impl = new UserDaoImpl();return impl.addUser(p);}@Overridepublic boolean loginService(Person p) {UserDaoImpl impl = new UserDaoImpl();return erLogin(p);}}。