当前位置:首页 » 《我的小黑屋》 » 正文

Java Web实现登录注册(超详细附代码)

23 人参与  2024年04月30日 15:30  分类 : 《我的小黑屋》  评论

点击全文阅读


相信刚学Javaweb的小伙伴第一个接触的个人小项目都是从项目的登录注册开始的。 下面一个小项目中的登录注册将会带大家从零开始学习怎么设计登录注册流程.

2.登录注册设计流程


image.png

3.注册的数据流程


那么我们的前端数据是怎么传向后端的? 1.首先这里我们是用 表单传递 通过form提交

image.png

2.在这里,我们输入自己的姓名和密码,点击注册按钮。此时输入的这三个数据,我们可以看做成是一个表单的数据,这些数据会提交到服务器上:

3.此时,一个叫Tomcat的东西会处理这个请求,

4.得到请求之后,Tomcat会将这个请求交由Servlet来进行处理

5.Servlet调用Dao层写的各种实现方法,与数据库进行交互(curd调用仔)

那么下面就是注册操作的主要调用流程图

register.jsp

registServlet

UserDB

第一步

在这里插入图片描述

第二步

在这里插入图片描述

第三步

在这里插入图片描述

4.登录的数据流程


登录操作的主要调用流程图

Login.jsp

LoginServlet

UserDB

在这里插入图片描述

第一步

在这里插入图片描述

第二步

在这里插入图片描述

第三步

在这里插入图片描述

第四步

在这里插入图片描述

5.部分代码的展示


5.1注册

register.jsp注册页面 通过表单实现跳转到servlet

<meta name=“viewport” content=“width=device-width”,initial->

world message board of the future

Register


${message}

复制代码

RegisterServlet.java

业务层:处理注册业务

package Sevlet;

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 javax.servlet.http.HttpSession;

import javaBean.User;

import useBean.UserDB;

@WebServlet(“/RegistServlet”)

public class RegistServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

String message =“”;

public RegistServlet() {

super();

}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

request.setCharacterEncoding(“utf-8”);

//获取隐藏域的信息

String action = request.getParameter(“action”);

String url =“register.jsp”;

if(action.equals(“regist”))

url = registerUser(request,response);

getServletContext().getRequestDispatcher(url).forward(request, response);

}

//注册函数

private String registerUser(HttpServletRequest request,HttpServletResponse response) {

String username = request.getParameter(“username”);

String password = request.getParameter(“password”);

String password2 = request.getParameter(“password2”);

String message = “”;

//得到HttpSession类型的对象

HttpSession session = request.getSession();

//将数据存储于User对象

User user = new User();

user.setusername (username);

user.setpassword(password);

String url = “/login.jsp”;

if(password.equals(password2))

{

if( !UserDB.UserExists(username) ) {

message = “Registration successful! and login in”;

session.setAttribute(“message”, message);

//将注册用户信息写入数据库

UserDB.insert(user);

return url;

}

else

{

message = “The user name already exists”;

url = “/register.jsp”;

session.setAttribute(“message”, message);

return url;

}

}

else

{

message = “The password is inconsistent”;

session.setAttribute(“message”, message);

url = “/register.jsp”;

return url;

}

}

}

复制代码

Dao层实现判断用户名是否存在和插入数据库的方法 UserDB.java

//注册时判断用户名是否存在

public static boolean UserExists(String username) {

//可以建立一个连接池保存一定数量的连接,当有对象需要数据库连接时,直接将这个连接返回给该对象,

ConnectionPool pool = ConnectionPool.getInstance();

Connection connection = pool.getConnection();

PreparedStatement ps = null;

ResultSet rs = null;

String qr = "SELECT username FROM User "+ “WHERE username = ?”;

try {

ps = connection.prepareStatement(qr);

ps.setString(1, username);

rs = ps.executeQuery();

return rs.next();

} catch (SQLException e) {

System.out.println(e);

return false;

} finally {

DBUtil.closeResultSet(rs);

DBUtil.closePreparedStatement(ps);

pool.freeConnection(connection);

}

}

//将注册用户信息保存至数据库

public static int insert(User user) {

ConnectionPool pool = ConnectionPool.getInstance();

Connection connection = pool.getConnection();

PreparedStatement ps = null;

String qr = “INSERT INTO User (username, password)”+“VALUES (?, ?)”;

try {

ps = connection.prepareStatement(qr);

ps.setString(1, user.getusername());

ps.setString(2, user.getpassword());

return ps.executeUpdate();

} catch (SQLException e) {

System.out.println(e);

return 0;

} finally {

DBUtil.closePreparedStatement(ps);

pool.freeConnection(connection);

}

}

复制代码

5.2登录

login.jsp登录界面 通过表单实现跳转到servlet

<meta name=“viewport” content=“width=device-width”,initial->

world message board of the future

login


register

**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

后记


总结一下这三次面试下来我的经验是:

一定不要死记硬背,要理解原理,否则面试官一深入就会露馅!

代码能力一定要注重,尤其是很多原理性的代码(之前两次让我写过Node中间件,Promise.all,双向绑定原理,被虐的怀疑人生)!

尽量从面试官的问题中表现自己知识的深度与广度,让面试官发现你的闪光点!

多刷面经!

我把所有遇到的面试题都做了一个整理,并且阅读了很多大牛的博客之后写了解析,免费分享给大家,算是一个感恩回馈吧,有需要的朋友【点击我】获取。祝大家早日拿到自己心怡的工作!

篇幅有限,仅展示部分内容




总结一下这三次面试下来我的经验是:

一定不要死记硬背,要理解原理,否则面试官一深入就会露馅!

代码能力一定要注重,尤其是很多原理性的代码(之前两次让我写过Node中间件,Promise.all,双向绑定原理,被虐的怀疑人生)!

尽量从面试官的问题中表现自己知识的深度与广度,让面试官发现你的闪光点!

多刷面经!

我把所有遇到的面试题都做了一个整理,并且阅读了很多大牛的博客之后写了解析,免费分享给大家,算是一个感恩回馈吧,有需要的朋友【点击我】获取。祝大家早日拿到自己心怡的工作!

篇幅有限,仅展示部分内容




点击全文阅读


本文链接:http://zhangshiyu.com/post/102466.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1