博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
安卓、服务器(servlet)、mysql数据库实现用户注册(二)
阅读量:3950 次
发布时间:2019-05-24

本文共 7176 字,大约阅读时间需要 23 分钟。

三者,必然是有三个大标题和环节。

1. mysql数据库端

新建表user,再创建id和password,具体结构可参考如下:

在这里插入图片描述

2.服务器端

java web代码:

package vip.keshi;import java.io.IOException;import java.io.PrintWriter;import java.sql.DriverManager;import java.sql.SQLException;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 com.mysql.jdbc.Connection;import com.mysql.jdbc.PreparedStatement;import com.mysql.jdbc.ResultSet;import jdk.internal.org.objectweb.asm.tree.analysis.Value;/** * Servlet implementation class buxing */@WebServlet("/buxing")public class buxing extends HttpServlet {
private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public buxing() {
super(); // TODO Auto-generated constructor stub } public void init() throws ServletException {
// TODO Auto-generated method stub super.init(); try {
Class.forName("com.mysql.jdbc.Driver"); System.err.println("驱动加载成功"); } catch (ClassNotFoundException e) {
// TODO Auto-generated catch block e.printStackTrace(); } } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub response.setCharacterEncoding("UTF-8"); response.setContentType("text/html"); PrintWriter out = response.getWriter(); String logname = request.getParameter("logname").trim(); String password = request.getParameter("password").trim(); java.sql.Connection conn; //连接数据库 java.sql.PreparedStatement preparedStatement; try {
conn = DriverManager.getConnection("JDBC:mysql://自己数据库的项目url", "数据库名", "数据库密码");//例如"JDBC:mysql://123.12.246.197:3306/denglei", "denglei", "123456" String sql = "insert into user values(?,?)"; preparedStatement = conn.prepareStatement(sql); preparedStatement.setString(1,logname); preparedStatement.setString(2,password); int p=preparedStatement.executeUpdate(); //取得操作结果,true或false if (p>=1) {
System.out.println("注册成功!"); out.write("successReg"); }else {
System.out.println("注册失败"); out.write("falseReg"); } out.close(); System.out.println("关闭成功"); } catch (SQLException e) {
// TODO Auto-generated catch block e.printStackTrace(); } } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub doGet(request, response); }}

服务器网页HTML

test it finally

3.安卓端

  • 导入okhttp包,看build.gradle
apply plugin: 'com.android.application'android {
compileSdkVersion 30 buildToolsVersion "30.0.1" defaultConfig {
applicationId "vip.mtmy.okhope" minSdkVersion 24 targetSdkVersion 30 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes {
release {
minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } }}dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test.ext:junit:1.1.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' implementation 'com.squareup.okhttp3:okhttp:3.4.1'//就是这个① implementation 'com.squareup.okio:okio:1.9.0'//就是这个② implementation 'com.google.code.gson:gson:2.6.2'}
  • 权限中添加网路权限
  • MainActivity代码
package vip.mtmy.okhope;import androidx.annotation.NonNull;import androidx.appcompat.app.AppCompatActivity;import android.annotation.SuppressLint;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.View;import android.widget.Button;import android.widget.TextView;import android.widget.Toast;import java.io.IOException;import okhttp3.OkHttpClient;import okhttp3.Request;import okhttp3.Response;public class MainActivity extends AppCompatActivity {
public static final int REGS=3;//注册成功标识码 public static final int REGN=4;//注册失败标识码 TextView idnumber; TextView pwdnumber; Button regerest; OkHttpClient client = new OkHttpClient(); @SuppressLint("HandlerLeak") public Handler handler=new Handler(){
@Override public void handleMessage(@NonNull Message msg) {
super.handleMessage(msg); switch (msg.what){
case REGS: Toast.makeText(MainActivity.this,"注册成功",Toast.LENGTH_SHORT).show(); break; case REGN: Toast.makeText(MainActivity.this,"注册失败",Toast.LENGTH_SHORT).show(); break; } } }; @Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initall(); } private void initall() {
idnumber=findViewById(R.id.idnumber); pwdnumber=findViewById(R.id.pwdnumber); regerest=findViewById(R.id.regerest); regerest.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View view) {
getData(); } }); } public void getData(){
final String url="http://自己的域名和项目路径";//自己项目的url,也就是java web的url new Thread(){
@Override public void run() {
super.run(); try {
String path=url+"?logname="+idnumber.getText()+"&password="+pwdnumber.getText(); String result=get(path); if (result.equals("ttt")){
Message message=Message.obtain(); message.what= REGN; // message.obj=result; handler.sendMessage(message); } else {
Message message=Message.obtain(); message.what= REGS; message.obj=result; handler.sendMessage(message); } } catch (IOException e) {
e.printStackTrace(); } } }.start(); } String get(String url) throws IOException {
Request request = new Request.Builder() .url(url) .build(); try (Response response = client.newCall(request).execute()) {
return response.body().string(); } }}

下载

转载地址:http://corwi.baihongyu.com/

你可能感兴趣的文章
朴素贝叶斯python实现
查看>>
Logistic回归原理及公式推导
查看>>
并发性与并行性 并发性与并行性
查看>>
惰性求值,可组合和模块化的JavaScript
查看>>
How to Extend Django User Model 如何扩展Django用户模型
查看>>
两个行业的故事:编程语言与富裕国家和发展中国家之间的差异
查看>>
15个用于管理MySQL服务器mysqladmin命令
查看>>
服务器端I / O性能:Node,PHP,Java与Go
查看>>
多行文本编辑时,同一行编辑不同类型的字符时自动换行的问题
查看>>
如何使开机动画只播一次
查看>>
如何在平台上实现LED灯的效果?如信号灯,来短信/来电时LED动画闪烁
查看>>
restore factory属性的enable和disable
查看>>
Android LOG机制流程图
查看>>
如何在JNI中抛异常
查看>>
Android应用程序的完全退出
查看>>
Task和Activity相关的一些属性
查看>>
JAVA系统属性之user.home
查看>>
Android代码截屏
查看>>
Android中打印代码的调用层次
查看>>
成功者十三个价值连城的习惯
查看>>