Servlet +JSP+Javabean 实现用户登录注册

本模块使用Servlet、JSP和JavaBean实现用户注册登录功能,包括前端验证和后端处理流程,支持用户登录、注册及退出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 目录结构:



代码:

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">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登录验证</title>
<script type="text/javascript">
function check(){
	var uname = document.getElementById("uname").value;
	var upassword = document.getElementById("upassword").value;
	if(uname==""){
		alert("用户名为空!");
		return false;
	}
	if(upassword==""){
		alert("密码为空!");
		return false;
	}
}
if(window.top!=window){
	 window.top.location = "Login";
}
</script>
</head>
<body>
  <center>
     <h1>用户登录</h1>
     <hr/>
     <form action="${pageContext.request.contextPath }/Login" method="post" onsubmit="return check()">
        <table border="0" width="400px">
           <tr>
             <td align="right">用户名:</td>
             <td><input type="text" id="uname" name="username" style="width: 180px"/></td>
           </tr>
           <tr>
             <td align="right">密    码:</td>
             <td><input type="password" id="upassword" name="password" style="width: 180px"/></td>
           </tr>
           <tr>
             <td align="right"><input type="submit" value="登录"/></td>
             <td><input type="reset" value="重置"/></td>
             <td><a href="${pageContext.request.contextPath }/Register.jsp">尚未注册,注册用户</a></td>
           </tr>
           <tr>
             <td></td>
             <td><font color="red">${message}</font></td>
           </tr>
        </table>
     </form>
  </center>
</body>
</html>

Register.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">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>注册用户</title>
<script type="text/javascript">
function check(){
	var uname = document.getElementById("uname").value;
	var upassword = document.getElementById("upassword").value;
	var upasswordtwo = document.getElementById("upasswordtwo").value;
	var phone = document.getElementById("phone").value;
	var email = document.getElementById("email").value;
	if(uname==""){
		alert("用户名为空!");
		return false;
	}
	if(upassword==""){
		alert("密码为空!");
		return false;
	}
	if(upasswordtwo==""){
		alert("请再次输入密码!");
		return false;
	}
	if(upassword != upasswordtwo){
		alert("两次密码不一致!");
		return false;
	}
	if(phone==""){
		alert("电话号码为空!");
		return false;
	}
	if(email==""){
		alert("电子邮箱为空!");
		return false;
	}
}
if(window.top!=window){
	 window.top.location = "Login";
}
</script>
</head>
<body>
 <center>
  <h1>用户注册</h1>
  <hr/>
  <form action="${pageContext.request.contextPath }/Register" method="post" onsubmit="return check()">
   <table border="0" width="420px">
     <tr>
       <td align="right">用户名:</td>
       <td><input type="text" id="uname" name="username" style="width: 180px"/></td>
     </tr>
     <tr>
        <td align="right">密    码:</td>
        <td><input type="password" id="upassword" name="password" style="width: 180px"/></td>
     </tr>
     <tr>
        <td align="right">确认密码:</td>
        <td><input type="password" id="upasswordtwo" name="passwordtwo" style="width: 180px"/></td>
     </tr>
     <tr>
        <td align="right">手机号码:</td>
        <td><input type="text" id="phone" name="phone" style="width: 180px"/></td>
     </tr>
     <tr>
        <td align="right">电子邮箱:</td>
        <td><input type="text" id="email" name="email" style="width: 180px"/></td>
     </tr>
     <tr>
        <td align="right"><input type="submit" value="提交注册"/></td>
        <td><input type="reset" value="重置"/></td>
        <td><a href="${pageContext.request.contextPath }/login.jsp">已经注册,直接登录</a></td>
     </tr>
     <tr>
        <td></td>
        <td><font color="red">${register}</font></td>
     </tr>
   </table>
  </form>
 </center>
</body>
</html>

Main.jsp

<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>页面头部</title>
<script type="text/javascript">
function doLogout(){
  //访问LogoutServlet注销当前登录的用户
  window.parent.location.href="${pageContext.request.contextPath}/Logout";
  //以父容器的形式跳出frameset框架
}
var timerID = null;  
var timerRunning = false;  
function showtime() {  
    var now = new Date();  
   // var now = new Date().format("yyyy-MM-dd HH:mm:ss");
   // document.clock.thetime.value = now.toString(); 
    document.clock.thetime.value = now.toLocaleString(); 
    timerID = setTimeout("showtime()", 1000);  
    timerRunning = true;  
}  
</script>
</head>
<body style="background-color: gray;" onload="showtime()">
 <center>
  <form name=clock> 
  <c:if test="${user!=null}">
                 欢迎您:${user.user_name}
     <input type="button" value="退出登陆" onclick="doLogout()" />
  </c:if>
         <input name=thetime style="font-size: 15px;color:#FF3030;border:0" size=20 />  
  </form>
 </center>
</body>
</html>

RegisterSuss.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">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>注册成功</title>
</head>
<body>
<center>
  <h1>恭喜您,注册成功!</h1>
  <hr/>
  <a href="${pageContext.request.contextPath }/login.jsp">登录账户</a>
</center>
</body>
</html>

User.java

package com.bean;

public class User {
  private int user_id;  //用户id
  private String user_name; //用户名
  private String user_password;  //用户密码
  private int user_phone;  //用户电话
  private String user_email;  //用户邮箱
public int getUser_id() {
	return user_id;
}
public void setUser_id(int user_id) {
	this.user_id = user_id;
}
public String getUser_name() {
	return user_name;
}
public void setUser_name(String user_name) {
	this.user_name = user_name;
}
public String getUser_password() {
	return user_password;
}
public void setUser_password(String user_password) {
	this.user_password = user_password;
}
public int getUser_phone() {
	return user_phone;
}
public void setUser_phone(int user_phone) {
	this.user_phone = user_phone;
}
public String getUser_email() {
	return user_email;
}
public void setUser_email(String user_email) {
	this.user_email = user_email;
}
  
}

UserDao.java(数据访问层)

package com.dao;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;

import com.bean.User;
import com.utils.DButil;

public class UserDao {
	//添加
	public void AddUser(User user){
	   try{
			QueryRunner runner = new QueryRunner(DButil.open());
			String sql = "insert into user(user_name,user_password,user_phone,user_email) values(?,?,?,?)";
			Object params[] = {user.getUser_name(),user.getUser_password(),user.getUser_phone(),user.getUser_email()};
			System.out.println("添加用户成功!");
			runner.update(sql, params);
		}catch (Exception e) {
			System.out.println("添加用户失败!");
			throw new RuntimeException(e);
		}
	}
	
	//查找是否存在用户
	public User find(String user_name){
	   try{
			QueryRunner runner = new QueryRunner(DButil.open());
			String sql = "select * from user where user_name= ?";
			System.out.println("查找成功!");
			return (User) runner.query(sql, user_name, new BeanHandler(User.class));
		}catch (Exception e) {
			System.out.println("查找失败!");
			throw new RuntimeException(e);
		}
	} 
	
	//登录验证
	public User login(String user_name, String user_password) {
		try{
			QueryRunner runner = new QueryRunner(DButil.open());
			String sql="select * from user where user_name=? and user_password=? ";
			Object params[] = {user_name,user_password};
			System.out.println("查找数据成功!");
			return (User)runner.query(sql, params, new BeanHandler(User.class));
		}catch (Exception e) {
			System.out.println("查找数据失败!");
			throw new RuntimeException(e);
		}
	}
}

EncodingFilter.java(编码过滤器)

package com.filter;

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class EncodingFilter implements Filter {

	 private String encoding;  
	 public EncodingFilter() {  
	        // TODO Auto-generated constructor stub  
	 }  
	 public void destroy() {  
	        // TODO Auto-generated method stub  
	 }  
	 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {  
	      // TODO Auto-generated method stub  
	      request.setCharacterEncoding(encoding);  
	      //fc.getServletContext().log("你的编码为UTF-8");  
	      chain.doFilter(request, response);  
	 }  
	 public void init(FilterConfig fConfig) throws ServletException {  
	     // TODO Auto-generated method stub  
	     encoding=fConfig.getInitParameter("encoding");  
	     //this.fc=fConfig;  
	 }  

}

Login.java

package com.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.bean.User;
import com.dao.UserDao;

@WebServlet("/Login")
public class Login extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    public Login() {
        super();
        // TODO Auto-generated constructor stub
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doPost(request, response); 
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		//设置编码  
        request.setCharacterEncoding("utf-8");  
        response.setCharacterEncoding("utf-8");  
        response.setHeader("Content-Type","text/html; charset=utf-8"); 
        
        String user_name = request.getParameter("username");
        String user_password = request.getParameter("password");
        
        UserDao dao = new UserDao();
        User user = dao.login(user_name, user_password);
        if(user != null){
        	System.out.println("登录成功!");
        	request.getSession().setAttribute("user", user); //用session保存用户信息
        	request.getRequestDispatcher("JSP/Main.jsp").forward(request, response);
        }
        else{
        	request.getSession().setAttribute("message", "用户名或密码错误!");
			//response.getWriter().write("<script language='javascript'>alert('用户名或密码不正确!')</script>");
			//request.getRequestDispatcher("/login.jsp").forward(request, response);
			response.sendRedirect(request.getContextPath()+"/login.jsp");
        }
	}

}

Logout.java

package com.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/Logout")
public class Logout extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    public Logout() {
        super();
        // TODO Auto-generated constructor stub
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doPost(request, response); 
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		//移除存储在session中的user对象,实现注销功能
		request.getSession().removeAttribute("user");
	    request.getSession().removeAttribute("message");
		response.sendRedirect(request.getContextPath()+"/login.jsp");
	}

}

Register.java

package com.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.bean.User;
import com.dao.UserDao;

@WebServlet("/Register")
public class Register extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    public Register() {
        super();
        // TODO Auto-generated constructor stub
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doPost(request, response); 
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		//设置编码  
        request.setCharacterEncoding("utf-8");  
        response.setCharacterEncoding("utf-8");  
        response.setHeader("Content-Type","text/html; charset=utf-8"); 
        
        String user_name = request.getParameter("username");
        String user_password = request.getParameter("password");
        String user_phone = request.getParameter("phone");
        int phone = Integer.parseInt(user_phone);
        String email = request.getParameter("email");
        
        User user = new User();
        user.setUser_name(user_name);
        user.setUser_password(user_password);
        user.setUser_phone(phone);
        user.setUser_email(email);
        
        UserDao dao = new UserDao();
        User us = dao.find(user_name);
      //  System.out.println("您的用户名:"+us.getUser_name());
        if(us!=null){
          request.setAttribute("register", "该用户已经存在!");
		  request.getRequestDispatcher("Register.jsp").forward(request, response);
        }
        else{
        	dao.AddUser(user);
            request.getRequestDispatcher("JSP/RegisterSuss.jsp").forward(request, response);
            request.getSession().removeAttribute("register");
        }
	}

}

Time.java(系统时钟)

package com.utils;

import java.text.SimpleDateFormat;
import java.util.Date;

public class Time {

	public static void main(String[] args) { 
		// TODO Auto-generated method stub
       time();
	}
	
	public static String time(){
		 Date date = new Date(System.currentTimeMillis());
		   for (int i = 0; i < 100000000; i++ ) {
		        try {
					Thread.sleep(1000);
					date.setTime(System.currentTimeMillis());
					String time = new SimpleDateFormat("yyyy年  MM月 dd日   HH时 mm分 ss秒").format(date);
			        System.out.println("当前时间: " + time.toString());
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
		    }
		 }
		   return time();
	}
} 

截图:















 Project说明:本模块是采用Servlet+JSP+JavaBean设计的用户注册登录模块,数据库采用C3P0数据库连接池,数据库连接配置文件在src目录下的c3p0-config.xml文件中。注册登录的验证结果皆在客户端显示。在经过前端页面处理提交的用户注册失败主要是该用户名称已存在,登录失败是因为用户名或密码错误,当用户要退出登录时,点击"退出登录"按钮即可。


评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

潇潇雨歇_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值