实现用户注册和登录

实现用户注册和登录本文主要介绍一下实现用户登录和注册功能最近一段学习了 javaweb 当中的一些知识 利用所学知识 实现了用户注册和登录功能 为了以后学习 写在这保存一下 方便以后用 也方便大家学习交流 1 数据库设计首先根据需要 因为本次编程实现用户注册界面 本次需要访问数据库 建立 shopping 数据库 在数据库里面创建表 users 代码如下 DROPTABLEIFE user

本文主要介绍一下实现用户登录和注册功能

最近一段学习了java web当中的一些知识,利用所学知识,实现了用户注册和登录功能,为了以后学习,写在这保存一下,方便以后用,也方便大家学习交流。

1.数据库设计

首先 根据需要,因为本次编程实现用户注册界面,本次需要访问数据库,建立shopping数据库,在数据库里面创建表users,代码如下:

 DROP TABLE IF EXISTS `users`; CREATE TABLE `users` ( `id` int(11) NOT NULL auto_increment, `userName` varchar(50) default NULL, `password` varchar(50) default NULL, `sex` varchar(20) default NULL, `email` varchar(11) default NULL, `favorite` varchar(20) default Null, `introduce` varchar(500) default NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8; 

2.连接数据库

利用jdbc实现对数据库的连接,创建DBHelper.java来实现连接数据库功能的类

 df package util; import java.sql.*;//导入sql类 //完成数据库的连接 public class DBHelper { private static final String driver="com.mysql.jdbc.Driver"; private static final String url="jdbc:mysql://localhost:3306/shopping?useUnicode=true&characterEncoding=UTF-8"; private static final String userName="root"; private static final String password=""; private static Connection conn=null; //加载驱动 static{ try{ Class.forName(driver); }catch(Exception e){ e.printStackTrace(); } } public static Connection getConnection() throws Exception { //之前未连接,则进行连接 if(conn==null){ conn=DriverManager.getConnection(url,userName,password); return conn; } //已经连接,则直接返回 return conn; } } 

3.创建User实体类

按照创建Users表的各个属性,创建User实体类,代码如下:

 package entity; import java.util.*; public class Users { private int id; private String userName; private String password; private String email; private String sex; private Date birthday; private String [] favorite; private String introduce; 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; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String[] getFavorite() { return favorite; } public void setFavorite(String[] favorite) { this.favorite = favorite; } public String getIntroduce() { return introduce; } public void setIntroduce(String introduce) { this.introduce = introduce; } } 

4.数据库操作

创建UserDao类,实现查询数据库的数据(用户登录的时候会用到)和向数据库里面插入新数据(注册账号时会用到)

 package dao; import java.io.PrintWriter; import java.sql.*; import java.util.ArrayList; import javax.xml.ws.Response; import com.sun.beans.editors.IntegerEditor; import entity.Users; import jdk.nashorn.internal.ir.RuntimeNode.Request; import util.DBHelper; public class UsersDao { public Users getInfo(int id) throws SQLException{ Connection connection=null; PreparedStatement statement=null; ResultSet resultSet=null; try { connection=DBHelper.getConnection(); String sql="select * from users where id=?"; statement=connection.prepareStatement(sql); statement.setInt(1, id); resultSet=(ResultSet)statement.executeQuery(); String [] str; if(resultSet.next()){ Users it=new Users(); it.setId(resultSet.getInt("id")); it.setUserName(resultSet.getString("userName")); it.setPassword(resultSet.getString("password")); it.setEmail(resultSet.getString("email")); it.setSex(resultSet.getString("sex")); it.setIntroduce(resultSet.getString("introduce")); str=resultSet.getString("favorite").split("\\^"); if(str.length>0){ it.setFavorite(str); } return it; }else{ return null; } } catch (Exception e) { // TODO: handle exception e.printStackTrace(); return null; }finally{ if(resultSet!=null){ resultSet.close(); resultSet=null; } if(statement!=null){ statement.close(); statement=null; } } } public boolean setUserInfo(Users users) throws SQLException{ Connection connection=null; PreparedStatement statement=null; String str=""; try { connection=DBHelper.getConnection(); String sql="insert into users(id,userName,password,sex,email,introduce,favorite) values(?,?,?,?,?,?,?)"; statement=connection.prepareStatement(sql); statement.setInt(1, users.getId()); statement.setString(2, users.getUserName()); statement.setString(3, users.getPassword()); statement.setString(4, users.getSex()); statement.setString(5, users.getEmail()); statement.setString(6, users.getIntroduce()); String [] s=users.getFavorite(); if(s!=null&&s.length>0){ for(int i=0;i 
  

}

5.创建登录界面和注册界面

5.1 登录界面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>


   
    
    
  
  
  
  
  
   
    
     
      
      
     Insert title here 
     

登录界面


标识:
密码:

注册

对应的创建servlet Login.java,来实现对提交的表单进行处理(通过查询数据库实现验证用户的密码和账户是否正确一致):

  package servlet;

import java.io.IOException;
import java.io.PrintWriter;

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 dao.UsersDao;
import entity.Users;

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

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

	/
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		  request.setCharacterEncoding("utf-8");
          response.setContentType("text/html;charset=utf-8");
		  int id;
	      String passwd;
		try {
			 UsersDao usersDao=new UsersDao();
			 id=Integer.parseInt(request.getParameter("id2"));  //捕获输入的id
             passwd=request.getParameter("passwd");	  //捕获输入的密码
             Users users=usersDao.getInfo(id);
             if(users==null){  //打印用户不存在信息
            	 PrintWriter ps=response.getWriter();
            	 ps.println("该用户不存在!!!"); }else{ if(passwd.equals(users.getPassword())){ request.getRequestDispatcher("../page1.jsp").forward(request, response); }else{ PrintWriter ps1=response.getWriter(); ps1.println("id和密码输入不正确!!!"); } } } catch (Exception e) { // TODO: handle exception } } } 

4.2注册界面

   <%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>


   
    
    
  
  
  
  
  
   
    
     
     
    Insert title here 
    

注册

简介:
需要搜索的用户

创建servlet HelloServlet.java实现对注册界面提交的表单进行处理

package servlet;

import java.io.IOException;
import java.text.*;
import java.io.PrintWriter;
import java.nio.charset.Charset;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.websocket.Session;
import javax.xml.ws.Response;

import org.apache.catalina.User;
import org.omg.PortableServer.REQUEST_PROCESSING_POLICY_ID;

import dao.UsersDao;
import entity.Users;

public class HelloServlet extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// TODO Auto-generated method stub
		
		doPost(req, resp);
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// TODO Auto-generated method stub
     
		req.setCharacterEncoding("utf-8");
		resp.setContentType("text/html;charset=utf-8");
		Users users=new Users();
		   int id;
		   String userName;
		   String password;
		   String  email;
		   String sex;
		   Date birthday;
		   String [] favorite;
		   String introduce;
		   
		try {
			//SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
			id=Integer.parseInt(req.getParameter("id1"));
			userName=req.getParameter("userName");
			password=req.getParameter("password");
			email=req.getParameter("email");
			sex=req.getParameter("sex");
			introduce=req.getParameter("introduce");
			favorite=req.getParameterValues("favorite");
			users.setId(id);
			users.setUserName(userName);
			users.setPassword(password);
			users.setEmail(email);
			users.setSex(sex);
			users.setIntroduce(introduce);
			users.setFavorite(favorite);
		
			UsersDao usersDao=new UsersDao();
			Users users2=usersDao.getInfo(users.getId());
			if(users2==null){
				
			boolean u=usersDao.setUserInfo(users);
			//users.setFavorite(favorite);
			//users.setBirthday(birthday);
			if(u){
				req.getSession().setAttribute("regUsers", users);
			req.getRequestDispatcher("../userInfo.jsp").forward(req, resp);
			
			}else{
		     PrintWriter out=resp.getWriter();
		     resp.setContentType("text/html;charset=utf-8");
		     out.println("fail");
			}
			}else{
				PrintWriter out2=resp.getWriter();
				resp.setContentType("text/html;charset=utf-8");
				out2.println(" 
   
该用户id已经存在,请重新输入
"); } } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } }

结尾

以上就实现了用户登陆和注册界面,下面展示一下

在这里插入图片描述

注册成功

在这里插入图片描述

登录界面

在这里插入图片描述

登录成功

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/205564.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午5:43
下一篇 2026年3月19日 下午5:44


相关推荐

  • windows文件读取 xxe_XXE漏洞「建议收藏」

    windows文件读取 xxe_XXE漏洞「建议收藏」0x00什么是XML1.定义XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素。2.文档结构XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素。]]]>DaveTom3.DTDXML文档结构包括XML声明、DTD文档类型定义(可选)…

    2022年5月10日
    47
  • C语言学习——指针精华(3)工程项目复习

    C语言学习——指针精华(3)工程项目复习编程题一、定义一个数组,从键盘输入10个整数,将10个数字中的最大值和最小值进行位置交换 (使用指针的方式)。代码如下:#include”pch.h”#include<stdio.h>void SWAP(int*p1, int*p2);int main(){ int a[10]; for (int i = 0; i < 10; i++) { scanf_…

    2022年8月18日
    7
  • Linux下的压缩解压缩命令详解

    Linux下的压缩解压缩命令详解

    2021年8月28日
    64
  • vs单步调试及断点调试基本介绍(入门版详细图文介绍)

    vs单步调试及断点调试基本介绍(入门版详细图文介绍)简述:本文面向小萌新简单描述visualstudio2019下的基本调试技巧1:打断点,在侧栏点击一下,即可生成断点功能:在调试时可以运行到这一步之后停止如图2:进而可以单步调试,快捷键f11//注,电脑快捷键分软件和系统层快捷键//本人戴尔G3是通过Ese+fn键切换,不同电脑可能不一样注意窗口i的值,进入第一次for循环,i赋值为0之后,进入printf,然后返回f…

    2022年5月22日
    184
  • 我的python之路6(基础练习)

    我的python之路6(基础练习)恢复内容开始1、执行Python脚本的两种方式打开Windows命令提示符二、使用其它集成开发工具进行PYTHON程序的开发,如Eclips\Pycharm等,使用这种集成开发工具开发时,那都

    2022年7月5日
    19
  • MAC 安装 Redis 客户端

    MAC 安装 Redis 客户端参考链接 https stackoverflo com questions macos x is there a way to install only redis cli

    2026年3月17日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号