前言

JAVA实现网页的登录与注册2.0版

一、环境的搭建

导入1.0版本的项目Java实现网页版登录注册系统-Java文档类资源-CSDN文库可参考【JAVA】网页版登录注册系统_Lx_Hy_的博客-CSDN博客

1.0版本项目目录                                                2.0版本目录

 

  1. 创建如上图框内所示的文件及文件夹并且将login.html和register.html中代码复制到相对应的jsp文件中
  2. 在js文件夹中添加(这俩文件在可在官网下载也可在资源库下载Vue.js+axios.js文件-Javascript文档类资源-CSDN文库)

二、功能完善及优化

1、登录功能

1、在UserService中添加登录功能中调用数据库查询部分的方法

    //登录功能public User login(String username, String password) {//获取SqlSessionSqlSession sqlSession = SqlSessionFactoryUtils.getSqlSessionFactory().openSession();//获取UserMapperUserMapper mapper = sqlSession.getMapper(UserMapper.class);//调用方法User user = mapper.selectByConditionSingle_Log(username, password);//释放资源sqlSession.close();return user;}

2、使用cookie-session技术优化LoginServlrt中的代码并且实现了客户端保存登录密码的功能 (可参考【JAVA】会话跟踪技术_Lx_Hy_的博客-CSDN博客)

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//获取用户名和密码String username = request.getParameter("username");String password = request.getParameter("password");//获取复选框数据String remember = request.getParameter("remember");//调用serviceUser user = service.login(username, password);//判断if(user!=null){//登录成功,跳转到查询信息//登录成功后的user对象,存储到session//判断用户是否勾选记住我if ("1".equals(remember)){//勾选//创建Cookie对象Cookie c_username=new Cookie("username",username);Cookie c_password=new Cookie("password",password);//设置Cookie存活时间c_username.setMaxAge(60*60);c_password.setMaxAge(60*60);//发送response.addCookie(c_username);response.addCookie(c_password);}HttpSession session = request.getSession();session.setAttribute("user",user);String contextPath = request.getContextPath();response.sendRedirect(contextPath+"/success.jsp");}else {//登陆失败,跳转到login.jsp//错误信息存储到requestrequest.setAttribute("login_msg","用户名或密码错误");//跳转到login.jsprequest.getRequestDispatcher("/login.jsp").forward(request,response);}

3、在login.jsp中改变用户名和密码的value可使用cookie技术保存的用户名和密码

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--页首插入这句--%>
<%@page isELIgnored="false" %>
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>login</title><link href="css/login.css" rel="stylesheet">
</head><body>
<div id="loginDiv" style="height: 350px"><form action="/WebServer2/loginServlet" id="form"><h1 id="loginMsg">LOGIN IN</h1><div id="errorMsg">${login_msg} ${register_msg}</div><p>Username:<input id="username" name="username" value="${cookie.username.value}" type="text"></p><p>Password:<input id="password" name="password" value="${cookie.password.value}" type="password"></p><p>Remember:<input id="remember" name="remember" value="1"  type="checkbox"></p><div id="subDiv"><input type="submit" class="button" value="login up"><a href="register.jsp">没有账号?</a></div></form>
</div></body>
</html>

2、注册功能

1、在UserService中添加注册功能中调用数据库查询及添加部分的方法

    //注册功能public boolean register(User user) {//获取SqlSessionSqlSession sqlSession = sqlSessionFactory.openSession();//获取UserMapperUserMapper mapper = sqlSession.getMapper(UserMapper.class);//判断用户是否存在User u = mapper.selectByUsername(user.getUsername());//调用方法if (u == null) {//用户名不存在mapper.add(user);sqlSession.commit();}sqlSession.close();return u == null;}

2、使用cookie-session技术优化RegisterServlrt中的代码(可参考【JAVA】会话跟踪技术_Lx_Hy_的博客-CSDN博客)

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//获取用户名和密码的数据String username = request.getParameter("username");boolean flag1 = service.checkUsername(username);String password = request.getParameter("password");//用户的封装User user = new User();user.setUsername(username);user.setPassword(password);//获取用户输入的验证码String checkCode = request.getParameter("checkCode");//程序输入的验证码HttpSession session = request.getSession();String checkCodeGen = (String) session.getAttribute("checkCodeGen");//比对验证码if (!checkCodeGen.equalsIgnoreCase(checkCode)) {//不允许注册request.setAttribute("register_msg", "验证码错误");request.getRequestDispatcher("/register.jsp").forward(request, response);return;}//调用service注册boolean flag = service.register(user);//判断是否注册成功if (flag) {//注册成功,跳转登陆页面request.setAttribute("register_msg", "注册成功,请登录");request.getRequestDispatcher("/login.jsp").forward(request, response);} else {//注册失败,跳转注册页面//request.setAttribute("register_msg","用户名已存在");request.getRequestDispatcher("/register.jsp").forward(request, response);}}

3、注册实时检查功能

(用户在输入完用户名之后实时查询用户名是否存在)

1、在UserService中添加注册功能中调用数据库查询部分的方法

    //注册检查功能public boolean checkUsername(String username){//获取SqlSessionSqlSession sqlSession = sqlSessionFactory.openSession();//获取UserMapperUserMapper mapper = sqlSession.getMapper(UserMapper.class);//判断用户是否存在User u = mapper.selectByUsername(username);//判断if(u==null){return false;}return true;}

2、使用Request&Response技术实现SelectUserServlet中的代码(可参考【JAVA】Request&Response_Lx_Hy_的博客-CSDN博客)

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String username = request.getParameter("username");boolean flag1 = service.checkUsername(username);if (flag1) {request.setAttribute("register_msg", "用户名已存在");}response.getWriter().write("" + flag1);}

3、在register.jsp使用axios技术在用户名输入框失去焦点事件时就进行用户名的重复判断(可参考【JAVA】AJAX&JSON_Lx_Hy_的博客-CSDN博客)

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--页首插入这句--%>
<%@page isELIgnored="false" %>
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>欢迎注册</title><link href="css/register.css" rel="stylesheet">
</head>
<body><div class="form-div"><div class="reg-content"><h1>欢迎注册</h1><span>已有帐号?</span> <a href="login.html">登录</a></div><form id="reg-form" action="/WebServer2/selectUserServlet" method="post"><table><tr><td>用户名</td><td class="inputs"><input name="username" type="text" id="username"><br><span id="username_err" class="err_msg" style="display: none">用户名已存在</span></td></tr><tr><td>密码</td><td class="inputs"><input name="password" type="password" id="password"><br><span id="password_err" class="err_msg" style="display: none">密码格式有误</span></td></tr><tr><td>验证码</td><td class="inputs"><input name="checkCode" type="text" id="checkCode"><img id="checkCodeImg" src="/WebServer2/checkCodeServlet"><a href="#" id="changeImg">看不清?</a></td></tr></table><div class="buttons"><input value="注 册" type="submit" id="reg_btn"></div><br class="clear"></form>
</div>
<script src="js/axios-0.18.0.js"></script>
<script>//给用户名输入框绑定 失去焦点事件document.getElementById("username").onblur = function () {//发送ajax请求let username = this.value;axios({method: "get",url: "http://localhost:8080/WebServer2/selectUserServlet?username="+ username,}).then(function (resp) {if(resp.data===true){//用户名存在,显示提示信息document.getElementById("username_err").style.display = '';} else {//用户名不存在,清除提示信息document.getElementById("username_err").style.display = 'none';}})}
</script>
<script>//点击看不清按钮document.getElementById("changeImg").onclick = function () {document.getElementById("checkCodeImg").src = "/WebServer2/checkCodeServlet?" + new Date().getMilliseconds();}
</script>
</body>
</html>

4、验证码功能

1、利用CheckCodeUtil工具生成验证码(完整的工具包在资源中)

    /*** 生成随机验证码文件,并返回验证码值 (生成图片形式,用的较少)** @param width 图片宽度* @param height 图片高度* @param os 输出流* @param verifySize 数据长度* @return 验证码数据* @throws IOException*/public static String outputVerifyImage(int width, int height, File os, int verifySize) throws IOException {String verifyCode = generateVerifyCode(verifySize);outputImage(width, height, os, verifyCode);return verifyCode;}

2、在CheckCodeServlet中利用response和session生成并将验证码存入session

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//生成验证码ServletOutputStream os = response.getOutputStream();String checkCode = CheckCodeUtil.outputVerifyImage(100, 50, os, 4);//存入SessionHttpSession session=request.getSession();session.setAttribute("checkCodeGen",checkCode);}

【效果】

5、登录拦截功能

(在未登录注册之前,不能对系统进行任何操作)

1、使用过滤器Filter对可访问页面进行过滤(可参考【JAVA】Filter&Listener_Lx_Hy_的博客-CSDN博客),只保留与登录注册相关的文件可以访问

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {HttpServletRequest req = (HttpServletRequest) request;//判断访问的资源是否和登陆注册相关String[] urls = {"/login.jsp", "/imgs/", "/css/", "/loginServlet", "/register.jsp", "/registerServlet", "/checkCodeServlet","/selectUserServlet"};//获取当前访问的资源路径String url = req.getRequestURL().toString();//循环判断for (String u : urls) {if(url.contains(u)){//找到了//放行chain.doFilter(request, response);//没找到return;}}//判断session中是否有userHttpSession session = req.getSession();Object user = session.getAttribute("user");//判断user是否为nullif (user != null) {//登陆过了//放行chain.doFilter(request, response);} else {//没有登录//req.setAttribute("login_msg", "您尚未登录");req.getRequestDispatcher("/login.jsp").forward(request, response);}}

总结

以上就是JAVA实现网页的登录与注册的全部内容,如有问题,可以私信讨论,感谢阅读!

全部源码放在Java实现网页版登录注册系统2.0-Java文档类资源-CSDN文库

【JAVA】网页版登录注册系统2.0相关推荐

  1. 【JAVA】网页版登录注册系统

    目录 前言 一.环境的搭建 二.功能实现 1.登录功能 2.注册功能 [注意] 总结 前言 JAVA实现网页的登录与注册 一.环境的搭建 1.创建Maven Web工程,参考[JAVA]Web服务器- ...

  2. PHP:如何让自己的网页拥有登录注册系统

    先写一套不含样式的html注册界面: <html> <head> <meta charset="utf-8"> <title>注册& ...

  3. java注册登录客户端_GitHub - a-voyager/LoginSystem_Client: 登录注册系统(桌面客户端)——Java课程实践...

    基于HTTP协议和MySQL的多平台登录注册系统 摘要 基于HTTP协议和MySQL的多平台登录注册系统主要用于模拟演示互联网中常见的BS/CS模式登录注册系统.目前网络互访一般基于两种协议HTTP协 ...

  4. Java 登录注册系统 【java基础案例教程 案例2-6】

    案例要求 编写程序实现简单的登录注册系统.程序包括以下4个功能. 1)登录功能,用户输入正确的账号密码可成功登录 2)注册功能,输入用户名和密码进行注册 3)查看功能,查看所有的用户名和密码 4)退出 ...

  5. JavaWeb登录注册系统/界面(邮箱验证码,数据库连接,详细注释,可作结课作业,可用于学习,可接入其他主系统)

    目录 1.前言 2.系统实机演示 3.系统分析与设计 (1)主要软件与工具 (2)系统分析 (3)系统规划 4.系统设计与构建 (1)JavaWeb创建 (2)JavaWeb运行 (3)先期依赖准备: ...

  6. java web聊天室论文_基于Java网页版聊天室的设计与实现毕业论文含开题报告及文献综述(样例3)...

    <基于Java网页版聊天室的设计与实现毕业论文含开题报告及文献综述.doc>由会员分享,可免费在线阅读全文,更多与<基于Java网页版聊天室的设计与实现毕业论文含开题报告及文献综述& ...

  7. Android+Blockly大作业(含登录注册系统、碎片式浏览、Blockly设计)

    此次大作业实现功能包括: 1.数据库的搭建 2.登录注册界面及主界面界面的设计 3.碎片的应用 4.webBlockly的嵌套 我曾在不同活动调用数据库的bug.数据库的检索和碎片的实现上花了很多时间 ...

  8. 大象网页版登录(大象网页版app)

    为什么网页版登录不上?为什么网页版登录不上去 为了给网友提供一个安全的微博环境,确保微博的稳定性,若系统检测到您的帐号出现频繁操作或批量操作,如大批量取消关注等,系统会进行阻止.若您并没有恶意操作,建 ...

  9. python 搭建登陆系统,用Python连接操作MySQL数据库,做一个简单的用户登录注册系统...

    我们可以很容易地用Python实现一个用户登录系统,相信这即使是对编程新手来说也是小菜一碟. 作为Python的小萌新,今天我想记录下来的是如何实现一个连接了MySQL数据库的用户登录注册系统,它的效 ...

最新文章

  1. 新星计划·第三季【博文流量密码公开课】
  2. yum mysql 版本低_mysql小版本升级(yum方式)
  3. ElasticSearch基于REST风格APi的常用操作
  4. 程序员是否应该创造面向 IDE 而非人类的编程语言?
  5. 谷歌开源Allstar 项目,保护GitHub 仓库安全
  6. PERC5/6 RAID配置中文手册
  7. 设计模式之建造者(builder)模式
  8. secureCRT下载地址,亲测有效
  9. android 表情变小了,别羡慕了!安卓微信表情包上限也变成999了!
  10. ERP标准物料编码规则及方法
  11. dell进入u盘启动模式_戴尔Dell笔记本电脑的BIOS怎么设置从U盘启动
  12. logparser的使用
  13. 如何在电脑上用Win11便签备忘录提醒重要工作
  14. 用java写修改器_一些修改器1
  15. mysql不等于null和等于null的写法
  16. 解决No module named numpy问题
  17. 手机: 1581 0812 176
  18. CultureInfo中linux下AllCultures中无zh-CN的问题
  19. HFSS天线设计仿真步骤
  20. 东城python培训

热门文章

  1. pwc普华永道 信息技术(上海)面试
  2. 如何让PDF转换成Excel
  3. FairyGUI个人使用手册 只有重点(1)
  4. 生物信息学(4)——多序列比对之CLUSTAL算法详解及C++实现
  5. Android优雅的ui倒计时,Hurry - 一款颜值超高的日历+倒计时 APP - Android 应用 - 生活 - 【最美应用】...
  6. 楼道扶手智能清洁装置的制作分享
  7. Nginx模块开发系列1--预备知识
  8. 达芬奇调色DaVinci Resolve Studio18v18.1.4 2023中文版更新发布,支持intel/M1/M2芯片
  9. spacedesk-把ipad变成显示器-真香经验全面分享
  10. 名帖84 米芾 小楷《九歌》