电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

android 仿微信demo——注冊(cè)功能實(shí)現(xiàn)(服務(wù)端)

瀏覽:175日期:2022-06-03 18:43:55
目錄服務(wù)端注冊(cè)功能實(shí)現(xiàn)創(chuàng)建項(xiàng)目創(chuàng)建web層和客戶端完成數(shù)據(jù)交互創(chuàng)建service層處理業(yè)務(wù)邏輯功能創(chuàng)建dao層操作數(shù)據(jù)庫通過JDBC工具類訪問數(shù)據(jù)庫mysql中創(chuàng)建數(shù)據(jù)庫和表測試總結(jié)服務(wù)端注冊(cè)功能實(shí)現(xiàn)

通過web層完成客戶端和服務(wù)端的數(shù)據(jù)交互(接受數(shù)據(jù),發(fā)送數(shù)據(jù)),service層完成業(yè)務(wù)邏輯(注冊(cè),登錄),dao層操作數(shù)據(jù)庫(要借助工具類)

創(chuàng)建項(xiàng)目

idea創(chuàng)建服務(wù)端項(xiàng)目

android 仿微信demo——注冊(cè)功能實(shí)現(xiàn)(服務(wù)端)

android 仿微信demo——注冊(cè)功能實(shí)現(xiàn)(服務(wù)端)

android 仿微信demo——注冊(cè)功能實(shí)現(xiàn)(服務(wù)端)

配置tomcat服務(wù)器

android 仿微信demo——注冊(cè)功能實(shí)現(xiàn)(服務(wù)端)

android 仿微信demo——注冊(cè)功能實(shí)現(xiàn)(服務(wù)端)

啟動(dòng)項(xiàng)目測試服務(wù)器

android 仿微信demo——注冊(cè)功能實(shí)現(xiàn)(服務(wù)端)

android 仿微信demo——注冊(cè)功能實(shí)現(xiàn)(服務(wù)端)

android 仿微信demo——注冊(cè)功能實(shí)現(xiàn)(服務(wù)端)

創(chuàng)建web層和客戶端完成數(shù)據(jù)交互

創(chuàng)建Servlet Reigister.java

android 仿微信demo——注冊(cè)功能實(shí)現(xiàn)(服務(wù)端)

android 仿微信demo——注冊(cè)功能實(shí)現(xiàn)(服務(wù)端)

Reigister.java

package com.example.controller;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONObject;import com.example.pojo.User;import com.example.service.UserService;import com.example.service.UserServiceImpl;import javax.servlet.*;import javax.servlet.http.*;import javax.servlet.annotation.*;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.URLDecoder;@WebServlet(name = 'Reiister', value = '/Reigister')public class Reigister extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {/* 設(shè)置中文字符編碼,防止亂碼*/request.setCharacterEncoding('utf-8');response.setCharacterEncoding('UTF-8');//以json數(shù)據(jù)完成操作response.setContentType('application/json;charset=UTF-8');System.out.println(request.getContentType());// 得到客戶端發(fā)送過來內(nèi)容的類型,application/json;charset=UTF-8System.out.println(request.getRemoteAddr());// 得到客戶端的ip地址,BufferedReader br = new BufferedReader(new InputStreamReader(// 使用字符流讀取客戶端發(fā)過來的數(shù)據(jù)request.getInputStream()));String line = null;StringBuffer s = new StringBuffer();//StringBuffer String的區(qū)別,如果要對(duì)數(shù)據(jù)作頻繁的修改,?t用StringBuffer// 以一行的形式讀取數(shù)據(jù)while ((line = br.readLine()) != null) { s.append(line);}// 關(guān)閉io流br.close();System.out.println(s.toString());//JSON:這是json解析包,idea是沒有的,要我們自己導(dǎo)入U(xiǎn)ser user = JSON.parseObject(s.toString(), User.class);//是用了發(fā)射機(jī)制?磽瓿啥韻蟮姆獗//以u(píng)tf-8解碼操作String number = URLDecoder.decode(user.getNumber(), 'utf-8');String name = URLDecoder.decode(user.getName(), 'utf-8');String phone = URLDecoder.decode(user.getPhone(), 'utf-8');String password = URLDecoder.decode(user.getPassword(), 'utf-8');System.out.println('用戶名是:' + name + ', 密碼;' + password);System.out.println(user);// 去數(shù)據(jù)庫完成用戶注冊(cè)功能UserService us = new UserServiceImpl();//調(diào)用注冊(cè)的方法int i = us.reigisterUser(number, name, phone, password);boolean rs = false;//判斷是否注冊(cè)成功if (i > 0) { System.out.println('注冊(cè)成功'); rs = true;}//將結(jié)果返回給客戶端,?⒔峁?菇ǔ?son數(shù)據(jù)返回?客?舳JSONObject rjson = new JSONObject();rjson.put('json', rs);response.getOutputStream().write(rjson.toString().getBytes('UTF-8'));// 向客戶端發(fā)送一個(gè)帶有json對(duì)象內(nèi)容的響應(yīng) }}

上面代碼用到用戶實(shí)體類User和json(對(duì)數(shù)據(jù)進(jìn)行封裝),后面我們會(huì)介紹如何創(chuàng)建和使用,其他的就不闡述了,代碼都有注釋

在創(chuàng)建實(shí)體類之前,先創(chuàng)建一個(gè)包單獨(dú)存放實(shí)體類,因?yàn)楹竺嫖覀冊(cè)谕晟乒δ艿倪^程中會(huì)創(chuàng)建很多實(shí)體類,方便管理

android 仿微信demo——注冊(cè)功能實(shí)現(xiàn)(服務(wù)端)

android 仿微信demo——注冊(cè)功能實(shí)現(xiàn)(服務(wù)端)

User.java

package com.example.pojo;public class User { private int id; private String number; private String name; private String password; private String phone; private String remark; public int getId() {return id; } public void setId(int id) {this.id = id; } public String getNumber() {return number; } public void setNumber(String number) {this.number = number; } public String getName() {return name; } public void setName(String name) {this.name = name; } public String getPassword() {return password; } public void setPassword(String password) {this.password = password; } public String getPhone() {return phone; } public void setPhone(String phone) {this.phone = phone; } public String getRemark() {return remark; } public void setRemark(String remark) {this.remark = remark; } @Override public String toString() {return 'User{' +'id=' + id +', number=’' + number + ’’’ +', name=’' + name + ’’’ +', password=’' + password + ’’’ +', phone=’' + phone + ’’’ +', remark=’' + remark + ’’’ +’}’; }}

在WEB-INF目錄下創(chuàng)建lib資源庫,把下載好的JSON包復(fù)制到lib目錄下,并把jar包添加到類庫

android 仿微信demo——注冊(cè)功能實(shí)現(xiàn)(服務(wù)端)

android 仿微信demo——注冊(cè)功能實(shí)現(xiàn)(服務(wù)端)

android 仿微信demo——注冊(cè)功能實(shí)現(xiàn)(服務(wù)端)

android 仿微信demo——注冊(cè)功能實(shí)現(xiàn)(服務(wù)端)

創(chuàng)建service層處理業(yè)務(wù)邏輯功能

微信的除了注冊(cè)業(yè)務(wù)邏輯處理功能,還有后面的要完善的登錄,以及微信消息,通訊錄,聊天信息等等,所以我們要用到一種編程思想,面向接口編程思想。創(chuàng)建一個(gè)接口,然后可以在里面添加我們需要業(yè)務(wù)處理的抽象方法(目前只有登錄),之后在接口的實(shí)現(xiàn)類重寫接口方法執(zhí)行具體的操作即可

在上面創(chuàng)建Servlet Reigister.java文件中報(bào)紅的地方按alt+enter鍵創(chuàng)建接口,并放到單獨(dú)的包里

android 仿微信demo——注冊(cè)功能實(shí)現(xiàn)(服務(wù)端)

android 仿微信demo——注冊(cè)功能實(shí)現(xiàn)(服務(wù)端)

創(chuàng)建接口的實(shí)現(xiàn)類

android 仿微信demo——注冊(cè)功能實(shí)現(xiàn)(服務(wù)端)

android 仿微信demo——注冊(cè)功能實(shí)現(xiàn)(服務(wù)端)

在接口里寫個(gè)注冊(cè)的抽象方法

android 仿微信demo——注冊(cè)功能實(shí)現(xiàn)(服務(wù)端)

在實(shí)現(xiàn)類中重寫接口方法

android 仿微信demo——注冊(cè)功能實(shí)現(xiàn)(服務(wù)端)

android 仿微信demo——注冊(cè)功能實(shí)現(xiàn)(服務(wù)端)

在實(shí)現(xiàn)類UserServiceImpl.java中修改代碼

UserServiceImpl.java

package com.example.service;public class UserServiceImpl implements UserService { UserDao ud = new UserDaoImpl(); @Override public int reigisterUser(String number, String name, String phone, String password) {int i = ud.insertUser(number, name, phone, password);return i; }}創(chuàng)建dao層操作數(shù)據(jù)庫

方法和創(chuàng)建service層一樣,文字就不敘述了,直接上圖

android 仿微信demo——注冊(cè)功能實(shí)現(xiàn)(服務(wù)端)

android 仿微信demo——注冊(cè)功能實(shí)現(xiàn)(服務(wù)端)

android 仿微信demo——注冊(cè)功能實(shí)現(xiàn)(服務(wù)端)

android 仿微信demo——注冊(cè)功能實(shí)現(xiàn)(服務(wù)端)

android 仿微信demo——注冊(cè)功能實(shí)現(xiàn)(服務(wù)端)

android 仿微信demo——注冊(cè)功能實(shí)現(xiàn)(服務(wù)端)

android 仿微信demo——注冊(cè)功能實(shí)現(xiàn)(服務(wù)端)

在實(shí)現(xiàn)類UserDaoImpl.java中修改代碼

UserDaoImpl.java

package com.example.dao;public class UserDaoImpl implements UserDao { @Override public int insertUser(String number, String name, String phone, String password) {String sql = 'insert into user (number, name, phone, password, remark) values(?,?,?,?,?);';//i如果操作成功,就是操作成功的條數(shù)int i = JDBCUtil.executeUpdate(sql, number, name, phone, password, '1');System.out.println('數(shù)據(jù)庫的條數(shù):');return i; }}通過JDBC工具類訪問數(shù)據(jù)庫

先創(chuàng)建包單獨(dú)存放工具類,后再創(chuàng)建工具類JDBCUtil.java

android 仿微信demo——注冊(cè)功能實(shí)現(xiàn)(服務(wù)端)

JDBCUtil.java

package com.example.util;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;public class JDBCUtil { private static final String DRIVER = 'com.mysql.jdbc.Driver'; private static final String URL = 'jdbc:mysql://127.0.0.1:3306/androiddb1?useUnicode=true&characterEncoding=utf-8'; private static final String USER = 'root'; private static final String PASSWORD = 'jin1687062650'; private static Connection ct; private static PreparedStatement ps; private static ResultSet rs; static {// 1.加載驅(qū)動(dòng),只需要加載一次,所以放到靜態(tài)代碼塊中try { Class.forName(DRIVER);} catch (ClassNotFoundException e) { e.printStackTrace();} } /** * 描述:封裝一個(gè)方法可以獲得連接,目的可以在其他地方之接調(diào)用 */ public static Connection getConnection() {try { ct = DriverManager.getConnection(URL, USER, PASSWORD);} catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace();}return ct; } /** * 描述:封裝一個(gè)方法可以完成查詢操作 * * @param sql 要查詢的sql語句 * @param obj 占位符的具體內(nèi)容 * @return ResultSet 將查詢到的結(jié)果返回 */ public static ResultSet executeQuery(String sql, Object... obj) {// 1.得到連接ct = getConnection();// 2.創(chuàng)鍵發(fā)送對(duì)象try { ps = ct.prepareStatement(sql); // 處理占位符問題 if (obj != null) {for (int i = 0; i < obj.length; i++) { ps.setObject(i + 1, obj[i]);} } rs = ps.executeQuery();} catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace();}return rs; } /** * 描述:封裝一個(gè)方法可以完成DDL,DML操作 * * @param sql 要操作的sql語句 * @param obj 占位符 * @return */ public static int executeUpdate(String sql, Object... obj) {// 1.得到連接ct = getConnection();// 2.創(chuàng)鍵發(fā)送對(duì)象try { ps = ct.prepareStatement(sql); // 處理占位符問題 if (obj != null) {for (int i = 0; i < obj.length; i++) { ps.setObject(i + 1, obj[i]);} } int in = ps.executeUpdate(); close(ct, ps, null); return in;} catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace();}return 0; } /** * 描述:封裝一個(gè)關(guān)閉資源的方法 * * @param ct 連接對(duì)象 * @param ps 發(fā)送sql語句對(duì)象 * @param rs 返回值對(duì)象 */ public static void close(Connection ct, PreparedStatement ps, ResultSet rs) {if (rs != null) { try {rs.close(); } catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace(); }}if (ps != null) { try {ps.close(); } catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace(); }}if (ct != null) { try {ct.close(); } catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace(); }} } // 給外部一個(gè)訪問ct,和ps的方法 public static Connection getCt() {return ct; } public static PreparedStatement getPs() {return ps; }}

上面代碼會(huì)用到mysql驅(qū)動(dòng)包,下面給出使用方法

在上面下載的jar包中有mysql的驅(qū)動(dòng)包,把它復(fù)制到lib下,然后添加到類庫即可,方法和json包的添加一樣

android 仿微信demo——注冊(cè)功能實(shí)現(xiàn)(服務(wù)端)

mysql中創(chuàng)建數(shù)據(jù)庫和表

可以通過navicat可視化工具創(chuàng)建數(shù)據(jù)庫和表(可以用自己的方法),下面給出我數(shù)據(jù)庫結(jié)構(gòu)

android 仿微信demo——注冊(cè)功能實(shí)現(xiàn)(服務(wù)端)

android 仿微信demo——注冊(cè)功能實(shí)現(xiàn)(服務(wù)端)

測試

在服務(wù)端JDBCUtil.java工具類修改數(shù)據(jù)庫名和數(shù)據(jù)庫密碼為自己的

android 仿微信demo——注冊(cè)功能實(shí)現(xiàn)(服務(wù)端)

在客戶端中把注冊(cè)activity的請(qǐng)求服務(wù)器的方法里面的URL的ip地址修改成自己的ip地址

android 仿微信demo——注冊(cè)功能實(shí)現(xiàn)(服務(wù)端)

查看ip地址的方法

win+R,輸入cmd進(jìn)入命令行,然后輸入ipconfig

android 仿微信demo——注冊(cè)功能實(shí)現(xiàn)(服務(wù)端)

android 仿微信demo——注冊(cè)功能實(shí)現(xiàn)(服務(wù)端)

啟動(dòng)服務(wù)端和客戶端項(xiàng)目測試

android 仿微信demo——注冊(cè)功能實(shí)現(xiàn)(服務(wù)端)

android 仿微信demo——注冊(cè)功能實(shí)現(xiàn)(服務(wù)端)

android 仿微信demo——注冊(cè)功能實(shí)現(xiàn)(服務(wù)端)

此時(shí)mysql已成功寫入數(shù)據(jù)

android 仿微信demo——注冊(cè)功能實(shí)現(xiàn)(服務(wù)端)

總結(jié)

這篇關(guān)于微信demo的文章就到這里了,希望大家可以多多關(guān)注好吧啦網(wǎng)的更多精彩內(nèi)容!

標(biāo)簽: 微信
相關(guān)文章:
主站蜘蛛池模板: 一礼通 (www.yilitong.com)-企业礼品解决方案一站式服务平台 | 北京办公室装修,办公室设计,写字楼装修-北京金视觉装饰工程公司 北京成考网-北京成人高考网 | 上海佳武自动化科技有限公司| 深圳公司注册-工商注册代理-注册公司流程和费用_护航财税 | 广州食堂承包_广州团餐配送_广州堂食餐饮服务公司 - 旺记餐饮 | 天津市能谱科技有限公司-专业的红外光谱仪_红外测油仪_紫外测油仪_红外制样附件_傅里叶红外光谱技术生产服务厂商 | 防伪溯源|防窜货|微信二维码营销|兆信_行业内领先的防伪防窜货数字化营销解决方案供应商 | 二手色谱仪器,十万分之一分析天平,蒸发光检测器,电位滴定仪-湖北捷岛科学仪器有限公司 | 泥沙分离_泥沙分离设备_泥砂分离机_洛阳隆中重工机械有限公司 | 盐水蒸发器,水洗盐设备,冷凝结晶切片机,转鼓切片机,絮凝剂加药系统-无锡瑞司恩机械有限公司 | 爱德华真空泵油/罗茨泵维修,爱发科-比其尔产品供应东莞/杭州/上海等全国各地 | 医院专用门厂家报价-医用病房门尺寸大全-抗菌木门品牌推荐 | 环球电气之家-中国专业电气电子产品行业服务网站! | 烟气换热器_GGH烟气换热器_空气预热器_高温气气换热器-青岛康景辉 | 英国雷迪地下管线探测仪-雷迪RD8100管线仪-多功能数字听漏仪-北京迪瑞进创科技有限公司 | 冷水机,风冷冷水机,水冷冷水机,螺杆冷水机专业制造商-上海祝松机械有限公司 | 篷房[仓储-婚庆-展览-活动]生产厂家-江苏正德装配式帐篷有限公司 | 专业深孔加工_东莞深孔钻加工_东莞深孔钻_东莞深孔加工_模具深孔钻加工厂-东莞市超耀实业有限公司 | 浩方智通 - 防关联浏览器 - 跨境电商浏览器 - 云雀浏览器 | 欧洲MV日韩MV国产_人妻无码一区二区三区免费_少妇被 到高潮喷出白浆av_精品少妇自慰到喷水AV网站 | 恒温恒湿试验箱厂家-高低温试验箱维修价格_东莞环仪仪器_东莞环仪仪器 | 湖南成人高考报名-湖南成考网 | 耐火浇注料-喷涂料-浇注料生产厂家_郑州市元领耐火材料有限公司 耐力板-PC阳光板-PC板-PC耐力板 - 嘉兴赢创实业有限公司 | 匀胶机旋涂仪-声扫显微镜-工业水浸超声-安赛斯(北京)科技有限公司 | 安徽免检低氮锅炉_合肥燃油锅炉_安徽蒸汽发生器_合肥燃气锅炉-合肥扬诺锅炉有限公司 | 周口风机|周风风机|河南省周口通用风机厂 | 杭州公司变更法人-代理记账收费价格-公司注销代办_杭州福道财务管理咨询有限公司 | atcc网站,sigma试剂价格,肿瘤细胞现货,人结肠癌细胞株购买-南京科佰生物 | 经济师考试_2025中级经济师报名时间_报名入口_考试时间_华课网校经济师培训网站 | SDI车窗夹力测试仪-KEMKRAFT方向盘测试仪-上海爱泽工业设备有限公司 | 高低温试验箱-模拟高低温试验箱订制-北京普桑达仪器科技有限公司【官网】 | 化妆品加工厂-化妆品加工-化妆品代加工-面膜加工-广东欧泉生化科技有限公司 | 闪电优家-卫生间防水补漏_酒店漏水渗水维修_防水堵漏公司 | 并离网逆变器_高频UPS电源定制_户用储能光伏逆变器厂家-深圳市索克新能源 | 天一线缆邯郸有限公司_煤矿用电缆厂家_矿用光缆厂家_矿用控制电缆_矿用通信电缆-天一线缆邯郸有限公司 | 电销卡_稳定企业大语音卡-归属地可选-世纪通信 | 固诺家居-全屋定制十大品牌_整体衣柜木门橱柜招商加盟 | 杭州厂房降温,车间降温设备,车间通风降温,厂房降温方案,杭州嘉友实业爽风品牌 | 贴片电容-贴片电阻-二三极管-国巨|三星|风华贴片电容代理商-深圳伟哲电子 | 防爆电机生产厂家,YBK3电动机,YBX3系列防爆电机,YBX4节防爆电机--河南省南洋防爆电机有限公司 | 液氨泵,液化气泵-淄博「亚泰」燃气设备制造有限公司 |