Web在线聊天室(完结) --- 注册用户+ip地址

注册用户

  • 注册用户
    • 接口设计
    • 前端异步回调ajax函数
    • 编写servlet实现注册业务逻辑
    • 操作数据库插入新用户
    • 实现效果
  • 项目发布地址

注册用户

接口设计

请求:
POST /register
{name: xxx,password: xxx,nickName: "蔡徐坤",signature: "我擅长唱跳rap篮球",
}
响应:
HTTP/1.1 200 OK
{ok: 1,reason: xxx
}

前端异步回调ajax函数

        register(){$.ajax({url: 'register',type: 'post',contentType: 'application/json',data: JSON.stringify({name: app.registerForm.inputUsername,password: app.registerForm.inputPassword,nickName: app.registerForm.inputNickName,signature: app.registerForm.inputSignature,}),success: function(data, status) {if (!data.ok) {alert('注册失败! ' + data.reason);return;}else {alert("恭喜你,注册成功!")}app.registerForm.showDialog = false;app.login.showLoginDialog = true;}})}

编写servlet实现注册业务逻辑

package org.example.servlet;import org.example.dao.UserDao;
import org.example.exception.AppException;
import org.example.model.User;
import org.example.util.Util;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 java.io.IOException;
import java.sql.Timestamp;/*** Created with IntelliJ IDEA.* Description:注册* User: starry* Date: 2021 -05 -31* Time: 16:09*/@WebServlet("/register")
public class RegisterServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {req.setCharacterEncoding("UTF-8");resp.setCharacterEncoding("UTF-8");resp.setContentType("application/json");User user = new User();try {//1. 解析请求数据:根据接口文档,需要使用反序列化操作User input = Util.deserialize(req.getInputStream(),User.class);//2. 业务处理:数据库验证账号密码,如果验证通过,创建session,保存用户信息if (input.getName() == null || input.getName().equals("")) {throw new AppException("用户名为空");}if (input.getPassword() == null || input.getPassword().equals("")) {throw new AppException("密码为空");}if (input.getNickName() == null || input.getNickName().equals("")) {throw new AppException("昵称为空");}int result = UserDao.insertUser(input);user = input;//构造操作成功的正常返回数据:ok-true,业务字段user.setOk(true);}catch (Exception e) {e.printStackTrace();//构造操作失败的错误信息:ok-false,reason:错误信息user.setOk(false);//自定义异常,自己抛,为中文信息,可以给用户看if (e instanceof AppException) {    //e捕获到的异常是不是自定义异常user.setReason(e.getMessage());}else { //非自定义异常,英文信息,给前端看“未知错误”user.setReason("未知的错误,请联系管理员");}}//3. 返回响应数据:从响应对象获取输出流,打印输出到响应体body中resp.getWriter().println(Util.serialize(user));}
}

操作数据库插入新用户

    /*** 插入注册用户*/public static int insertUser(User input) {Connection connection = null;PreparedStatement statement = null;try {connection = Util.getConnection();String sql = "insert user(name,password,nickName,iconPath,signature,lastLogout) values(?,?,?,?,?,?)";statement = connection.prepareStatement(sql);statement.setString(1,input.getName());statement.setString(2,input.getPassword());statement.setString(3,input.getNickName());statement.setString(4,"");statement.setString(5,input.getSignature());Timestamp time = new Timestamp(System.currentTimeMillis());statement.setTimestamp(6,time);//将注册用户返回给前端的数据修改一下input.setIconPath("");input.setLastLogout(time);return statement.executeUpdate();}catch (Exception e) {throw new AppException("插入注册用户失败",e);}finally {Util.close(connection,statement);}}

实现效果

哪一栏没写会提醒 :注册失败+原因
在这里插入图片描述
点击注册后,显示注册成功
在这里插入图片描述
接下来登录duoduo账号,可以登录
在这里插入图片描述

项目发布地址

http://82.156.229.239:8080/java_chatroom/

欢迎小伙伴们点进来看看呀🤗

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/27795.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IP获取方法二:太平洋网络IP地址查询Web接口

接口列表: (1)ip.jsp(2)ipJson.jsp(3)jsAlert.jsp(4)jsDom.jsp(5)jsFunction.jsp(6)jsLabel.jsp(7)jsWrite.jsp(8)whois/index.jsp(9)ipAreaCoord.jsp(10)ipAreaCoordJson.jsp 接口参数:param ip:可指定IP地址,不指定则取request.getRemoteAddr()的值。…

从APNIC获取中国IP地址列表

关于APNIC 全球IP地址块被IANA(Internet Assigned Numbers Authority)分配给全球三大地区性IP地址分配机构,它们分别是: ARIN (American Registry for Internet Numbers) 负责北美、南美、加勒比以及非洲撒哈啦部分的IP地址分配。同时还要给全球NSP(Netw…

使用IPIP.net识别客户端真实访问地址,具体到国家,省,市

这个IP库实测还是比较准确的,免费版的可以具体到国内城市,国外只能到国家名称,免费版的自己定期更新Ip数据库即可。 以下为C#调用代码 class Program{static void Main(string[] args){try{//传入要查询的ip 和17monipdb.datx 下载的ip库所在位置string address …

Google 以图搜图 - 相似图片搜索原理 - Java实现

前阵子在阮一峰的博客上看到了这篇《相似图片搜索原理》博客,就有一种冲动要将这些原理实现出来了。 Google "相似图片搜索":你可以用一张图片,搜索互联网上所有与它相似的图片。 打开Google图片搜索页面: 点击使用上传…

GPT-5紧急叫停?千名专家联名呼吁,AI技术的未来又该何去何从?

在半个月前强势上线的GPT-4 ,以其强大的性能再次掀起了一波关于人工智能技术的全民热潮。但GPT-4太强了,强到发指,不止群众恐慌,北京时间3月29日,全世界的 AI 大佬们纷纷出手,千名专家发表公开信&#xff0…

这次彻底搞懂 Redis,超详细总结!

作者:wugongzi 来源:https://www.cnblogs.com/wugongzi/p/16827473.html Redis 基础 如果对 Redis 还不了解的同学可以先看一下这篇 https://www.cnblogs.com/wugongzi/p/12841273.html 这里面介绍了 Redis 是什么,以及怎么用。 Redis 管道 我…

《花雕学AI》35:如何一次性和17个AI聊天机器人交流?ChatALL让你轻松实现

聊天机器人,也称为对话机器人,是一种能够通过自然语言与人类进行交流的人工智能系统。聊天机器人的应用领域非常广泛,从客服、娱乐、教育、医疗、社交等,到科研、商业、政治、军事等,几乎无所不包。随着深度学习和自然…

一个程序员的成长之路

学习笔记 java基础类型与String相关基本类型范围基本类型的转换byte计算自动转换int基本类型与包装类equals与的区别 集合比较与常用集合原理反射机制与真实使用场景动态代理与使用范例异常类加载机制与热加载实现与反编译内存模型与threadLocal与syncronizejvm的GC与调优处理J…

【Idea】人工智能编程他来了,Idea集成一款和ChatGPT一样智能的编码辅助神器

文章目录 简介官方介绍功能介绍 注册使用使用方法功能说明 结尾 简介 Bito是一款建立在OpenAI和ChatGPT之上的开发辅助神器!他可以帮我们生成代码、语法提示、生成测试用例、解释代码含义、生成注释、优化代码、检测代码安全性以及学习理论知识等!我们可…

澎湃新闻对话腾讯丁珂:从“治已病”到“治未病”,企业需快速构建“安全免疫力”

作者:澎湃新闻记者 周頔 随着数字化进程加快,企业数字化体系的边界在不断拓展,安全风险和挑战不断增加,传统被动防御的安全应对常显疲态,数字安全时代亟待建立全新的安全范式。 6月13日,腾讯安全联合IDC等…

2023年大学生就业怎么样?双一流高校就业率仅15%,到底是咋了?

2023年,大学毕业生就业状况如何,一直是社会关注的焦点。尤其是中国的双一流高校,以其优越的教学与研究背景和实力,被众多年轻人视为就业的理想选择。 然而,在最新的统计数据中,这些一流高校的就业率却惊人…

Chat GPT 的上线,网络安全问题已经显现

前言 Chat GPT已经发布了,一位不知名的作者将它的孪生兄弟“DAN”就在世界上最黑暗的暗网上线了。 这个黑化的GPT刚刚上线的一周后,就已经有组织利用“DAN”犯罪了。 他们利用虚拟电话号码注册各种交友平台的账号,然后再模仿有魅力的男女人…

媒体专访|知道创宇黑哥:视野和格局将决定网络空间测绘的未来!

日前,网安专业媒体安全牛【牛人访谈】栏目专访了知道创宇CSO黑哥(周景平)。 围绕知道创宇出版的新书《网络空间测绘技术与实践》,安全牛分析师与黑哥就网络空间测绘技术当下的应用与挑战、未来的发展与创新进行了对话与交流。 以…

《花雕学AI》比尔・盖茨:AI 和 ChatGPT 可以改善人类生活,但也要防止滥用和危害

3月21号,微软创始人比尔盖茨,发表最新AI文章《人工智能时代已经开始——人工智能与手机、互联网一样具有革命性》,文章中表示:「自1980年首次看到图形用户界面(graphical user interface)以来,O…

速下载|2023上半年网络与数据安全法规政策、国标、报告合集

随着国家数字经济建设进程加快,数据安全立法实现由点到面、由面到体加速构建,目前我国数据安全立法已基本形成以《网络安全法》《数据安全法》《个人信息保护法》《密码法》等法律为核心,行政法规、部门规章为依托,地方性法规、地…

ChatGPT进军网络安全,安全从业者将会被取代?

在ChatGPT爆火之后,微软宣布推出基于ChatGPT的“安全副驾驶”产品,宣称将“帮助防御者以机器的速度和规模进行端到端防御。” 网络安全是人工智能最大的细分市场,而ChatGPT又是引领当下人工智能技术革命的“核弹级产品”,在网络安…

C#与西门子PLC通信通过S7.NET

前言: S7.NET支持连接S7-200SMART,S7-1200,S7-1500,S7-300,S7-400PLC,只支持西门子系列PLC,而且连接方式要是profinet通信 一,引用S7.NET的dll文件 二,using S7.Net; 三,实例化PLC 如果是连接PLC SMART200,CPU.Type直…

利用NetToPLCsim将西门子PLCSIM变成一个真实PLC,实现与录波软件、HMI软件等的通讯

学习西门子PLC的朋友们对于西门子的S7-PLCSIM软件都不陌生,当我们安装了该软件后,在STEP7或者博图的面板中就多出了一个仿真的按钮,点击该按钮,就会调出仿真软件S7-PLCSIM软件,将当前的PLC项目下载进去。启动该仿真PLC…

博途仿真PLC与第三方客户端通信

NetToSimPLC使用 在缺少PLC硬件的情况下,我们可以借助PLC模拟器(西门子)PLCSim做一些简单程序测试。但是除了PLC程序本身需要测试以外,PLC之间的通讯和PLC与HMI、SCADA的连接也是需要调试的。在缺少硬件的情况下, 往往…

PLC程序实例二:ModBusTCP客户端编程实例与测试方法

一、需求描述 1、设备作为服务端时,需要给出对应的测试方法,即要求 PLC 作为客户端,设备作为服务端,因此要求编写 PLC 的ModBusTCP客户端 2、先了解一下设备作为服务端的ModBusTCP网络触发业务逻辑 (1)设…