mysql生成app接口_Java实现app接口和Socket消息传递(10)java连接MySQL实现App登录接口...

原创:

http://blog.csdn.net/iwanghang

1.先来个Androiod端口的GIF效果图

App图标大家可能没看清,这个是AndroidStudio3.0最新的默认App图标哦~~

0818b9ca8b590ca3270a3433284dd417.png

2.不要忘记把MySQL的jar导进来

jar包放入的位置在这里:

D:\eclipse-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\servletDemo\WEB-INF\lib

0818b9ca8b590ca3270a3433284dd417.png

3.Server端代码

package com.iwanghang.servletDemo;

import java.io.IOException;

import java.io.PrintWriter;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.logging.Level;

import java.util.logging.Logger;

import javax.servlet.Servlet;

import javax.servlet.ServletConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

public class Test01 implements Servlet{

private String username; // 请求参数中的username

private String password; // 请求参数中的password

private String passwordSql; // 数据库中的password

private String islogin; //返回参数是否登录成功

public Test01() {

System.out.println("HelloServlet...");

}

@Override

public void destroy() {

System.out.println("destroy...");

}

@Override

public ServletConfig getServletConfig() {

System.out.println("getServletConfig...");

return null;

}

@Override

public String getServletInfo() {

System.out.println("getServletInfo...");

return null;

}

@Override

public void init(ServletConfig arg0) throws ServletException {

System.out.println("init...");

}

@Override

public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {

System.out.println("service...");

// 获取请求参数

username = request.getParameter("username");

password = request.getParameter("password");

System.out.println("获取请求参数 username = " + username);

System.out.println("获取请求参数 password = " + password);

// 在MySQL中,用username查找对应的password

try {

Class.forName("com.mysql.jdbc.Driver");//创建驱动器

// 写法1. 这样写会有警告,但是不影响使用

// Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql","root","123456");//这是数据库的路径,并且还有输入账号(一般默认是root),密码之前创建用户时的那个

// 写法2. 看起来比较复杂,但是没有警告

Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/demo1113?useUnicode=true&characterEncoding=utf-8&useSSL=false","root", "123456");

PreparedStatement pst=con.prepareCall("select * from aaa_user where username = '" + username + "'");//输入的是要在MySQL中执行的代码

ResultSet rs=pst.executeQuery();//获得执行上面代码后的结果集

while(rs.next()){

passwordSql = rs.getString("password");

} // 最后还有关闭连接

}

catch (ClassNotFoundException ex) {

Logger.getLogger(Test01.class.getName()).log(Level.SEVERE, null, ex);

} catch (SQLException ex) {

Logger.getLogger(Test01.class.getName()).log(Level.SEVERE, null, ex);

}

// 对比数据库中的password,与请求参数中的password,是否一致

if (passwordSql.equals(password)){ // 如果相同

islogin = "yes";

}else{// 如果不同

islogin = "no";

};

System.out.println("islogin = " + islogin);

response.setCharacterEncoding("UTF-8");

response.setContentType("application/json; charset=utf-8");

//String jsonStr = "{\"username\":\"王航\""

//+ ",\"password\":\"987654\""

//+ ",\"status\":\"1\"}";

String jsonStr = "{\"islogin\":\""+islogin+"\"}";

PrintWriter out = null;

try {

out = response.getWriter();

out.write(jsonStr);

} catch (IOException e) {

e.printStackTrace();

} finally {

if (out != null) {

out.close();

}

}

}

}4.Server端控制台调试信息

0818b9ca8b590ca3270a3433284dd417.png

5.Android端代码

package com.iwanghang.demo1113;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.util.Log;

import android.view.View;

import android.widget.Button;

import android.widget.EditText;

import android.widget.Toast;

import com.android.volley.AuthFailureError;

import com.android.volley.Request;

import com.android.volley.RequestQueue;

import com.android.volley.Response;

import com.android.volley.VolleyError;

import com.android.volley.toolbox.StringRequest;

import com.android.volley.toolbox.Volley;

import org.json.JSONException;

import org.json.JSONObject;

import java.util.HashMap;

import java.util.Map;

import static com.iwanghang.demo1113.Constant.LOGINCHECK;

public class MainActivity extends AppCompatActivity {

private String TAG = "MainActivity";

// 创建请求队列

RequestQueue requestQueue = null;

private EditText et_username;

private EditText et_password;

private Button bt_login;

private String username;

private String password;

private String status;

private String islogin;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

requestQueue = Volley.newRequestQueue(this);

et_username = findViewById(R.id.et_username);

et_password = findViewById(R.id.et_password);

bt_login = findViewById(R.id.bt_login);

initLogin(); // 登录 按钮点击事件监听

}

/**

* 登录 按钮点击事件监听

*/

private void initLogin() {

bt_login.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

// 获取输入账号密码

username = et_username.getText().toString();

password = et_password.getText().toString();

Log.v(TAG, " username = " + username);

netLogin(); // 发送网络请求

}

});

}

/**

* 发送网络请求 尝试登陆

*/

private void netLogin() {

// 请求地址

//String url = "hhttp://192.168.1.129:8080/servletDemo/test01";

StringRequest request = new StringRequest(Request.Method.POST, LOGINCHECK, new Response.Listener() {

@Override

public void onResponse(String response) {

Log.v(TAG,"response = " + response);// 返回结果

try {

if (response.equals("no")){

Toast.makeText(MainActivity.this, "登录失败,请检查ID是否正确", Toast.LENGTH_SHORT).show();

}else {

JSONObject object1 = new JSONObject(response);

islogin = object1.getString("islogin"); // islogin

Log.e("TAG", "islogin = " + islogin);

Toast.makeText(MainActivity.this, "islogin = " + islogin, Toast.LENGTH_SHORT).show();

}

} catch (JSONException e) {

e.printStackTrace();

}

}

}, new Response.ErrorListener() {

@Override

public void onErrorResponse(VolleyError error) {

Log.v(TAG,"error = " + error); // 错误结果

Toast.makeText(getApplication(),"网络出问题",Toast.LENGTH_SHORT).show();

}

}){

@Override

protected Map getParams() throws AuthFailureError {

// 请求的内容

Map params = new HashMap<>();

params.put("username",username);

params.put("password",password);

return params;

}

};

// 添加到请求队列

requestQueue.add(request);

}

}6.Android端就不贴控制台调试信息了,小伙伴们不要忘了Volley的jar包

原创:

http://blog.csdn.net/iwanghang

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

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

相关文章

centos yum安装nginx 提示 No package nginx available问题解决方法

问题原因&#xff1a; nginx位于第三方的yum源里面&#xff0c;而不在centos官方yum源里面 解决方法&#xff1a; 安装epel(Extra Packages for Enterprise Linux) a、去epel网站 http://fedoraproject.org/wiki/EPEL下载 b、我的系统是centos5.7&#xff0c;cpu是x86_64&#…

链接生成二维码图片

https://packagist.org/packages/houdunwang/qrcode转载于:https://www.cnblogs.com/pansidong/p/10247663.html

mysql pxc测试_Mysql同步机制 - PXC 压力测试 tpcc安装及使用

tpcc是针对mysql单机制定的测试标准&#xff0c;这个标准对于pxc集群来说要求太高&#xff0c;所有后面即使有些项目没有通过也不必太过在意&#xff0c;主要是压一下事务处理能力。Mysql单机虽然写入速度快&#xff0c;但相比于Mysql集群&#xff0c;单机能承受的并发能力远比…

RHEL(Red Hat Enterprise Linux)配置YUM源

前言 YUM&#xff08;全称为 Yellow dog Updater, Modified&#xff09;是一个在Fedora中的Shell前端软件包管理器。基于RPM包管理&#xff0c;能够从指定的服务器自动下载RPM包并且安装&#xff0c;可以自动处理依赖性关系&#xff0c;并且一次安装所有依赖的软体包&#xff…

java中集合判空_Java中的类型安全的空集合

java中集合判空我以前曾在Java Collections类的实用程序上进行过博客撰写&#xff0c;并且特别地在使用Usings Collections Methods上的博客emptyList&#xff08;&#xff09;&#xff0c;emptyMap&#xff08;&#xff09;和emptySet&#xff08;&#xff09;上进行了博客撰写…

cnn验证码识别代码_中文项目:快速识别验证码,CNN也能为爬虫保驾护航

原标题&#xff1a;中文项目&#xff1a;快速识别验证码&#xff0c;CNN也能为爬虫保驾护航机器之心专栏作者&#xff1a;Nick Li随着卷积网络的推广&#xff0c;现在有各种各样的快捷应用&#xff0c;例如识别验证码和数学公式等。本文介绍了一个便捷的验证码识别项目&#xf…

CentOS yum 源的配置与使用

一、yum 简介 yum&#xff0c;是Yellow dog Updater, Modified 的简称&#xff0c;是杜克大学为了提高RPM 软件包安装性而开发的一种软件包管理器。起初是由yellow dog 这一发行版的开发者Terra Soft 研发&#xff0c;用python 写成&#xff0c;那时还叫做yup(yellow dog updat…

使用ActiveMQ Artemis在两个WildFly服务器之间构建水平JMS桥

有时有必要将不同的Message Broker连接在一起。 在企业消息传递中&#xff0c;此方案称为桥接。 可以使用JMS和其他协议&#xff08;例如AMQP&#xff0c;ActiveMQ Artemis核心协议&#xff09;来完成。 该博客文章重点介绍在WildFly中运行的JMS与两个Apache ActiveMQ Artemis …

mysql 逻辑备份 物理备份_数据库的逻辑备份和物理备份--非RMAN

数据库的逻辑备份和物理备份--非RMAN,不用借助其他工具&#xff0c;只要归档日志和物理备份就可以实现的备份数据库的备份和恢复常规而且重要&#xff0c;恢复得到理想状态逻辑备份利用EXP备份&#xff0c;从数据库提取写入操作系统文件1.可以导出一个完整的数据库2.也可以导出…

如何在myeclipse中导入jar包?

右键项目名--->Build Path—>Configure Build Path... 会弹出来一个框 在那四个选项选择 Libraries 然后再选择 右边 第二个选项Add External Jars... 然后就是你JAR的路径。一般将导入的外部包放在lib目录下。

python入门if语句练习_python入门视频:09 if语句_练习.mp4

本视频课程目录如下&#xff1a;python6天学习基础课程 ├─01天│ python入门视频&#xff1a;01 计算机组成-硬件设备.mp4│ python入门视频&#xff1a;02 计算机组成-软件设备.mp4│ python入门视频&#xff1a;03 程序的执行流程和小结_.mp4│ pyt…

spring依赖日志_Spring:设置日志记录依赖项

spring依赖日志这篇文章描述了如何在Spring中设置日志依赖。 它基于Dave Syer的帖子中提供的信息 。 这里提供有关Java日志记录框架的提醒。 该代码示例可在GitHub的Spring-Logging-Dependencies目录中找到。 Spring使用Jakarta Commons Logging API&#xff08;JCL&#xff0…

网页UTF8转换GBK后出现问号?的原因

网页UTF8转换GBK后出现问号"?"的原因 网页编码转换是进行网页解析和处理的第一步。 互联网上越来越多的网页采用UTF-8编码&#xff0c;UTF-8用1到6个字节编码UNICODE字符&#xff0c;收录了超过10万个字符&#xff0c;BMP部分也有六万多个字符 而在进行编码转换时&…

关于 Number() parsint() abs() 的区别

1. parseInt(‘’) parseInt() 函数可解析一个字符串&#xff0c;并返回一个整数。 如果第一个字符不是数字或者负号&#xff0c;parseInt() 就会返回NaN 2.Number() 函数把对象的值转换为数字 3. Math.abs(x) 取得正数和负数的绝对值 转载于:https://www.cnblogs.com/…

python怎么安装pymysql_Python 安装pyMySQL过程记录

如果你的系统不支持 pip 命令&#xff0c;可以使用以下方式安装&#xff1a;1、使用 git 命令下载安装包安装(你也可以手动下载)&#xff1a;$ git clone https://github.com/PyMySQL/PyMySQL$ cd PyMySQL/$ python3 setup.py install2、如果需要制定版本号&#xff0c;可以使用…

C++中的单例模式

单例模式也称为单件模式、单子模式&#xff0c;可能是使用最广泛的设计模式。其意图是保证一个类仅有一个实例&#xff0c;并提供一个访问它的全局访问点&#xff0c;该实例被所有程序模块共享。有很多地方需要这样的功能模块&#xff0c;如系统的日志输出&#xff0c;GUI应用必…

Spring Boot 学习笔记(三)Spring boot 中的SSM

Spring boot 下的 Spring mvc Controller&#xff1a;即为Spring mvc的注解&#xff0c;处理http请求&#xff1b; RestController&#xff1a;Spring4后新增注解&#xff0c;是Controller与ResponseBody的组合注解&#xff0c;用于返回字符串或json数据&#xff1b; package c…

c mysql日期时间格式_mysql日期和时间类型

TIME 类型TIME 类型用于只需要时间信息的值&#xff0c;在存储时需要 3 个字节。格式为 HH:MM:SS。HH 表示小时&#xff0c;MM 表示分钟&#xff0c;SS 表示秒。TIME 类型的取值范围为 -838&#xff1a;59&#xff1a;59&#xff5e;838&#xff1a;59&#xff1a;59&#xff0…

MySQL问题汇总

1.#include <mysql.h>编译出错 在阅读TrinityCore时&#xff0c;发现了解决方法和解释&#xff1a; #ifdef _WIN32 // hack for broken mysql.h not including the correct winsock header for SOCKET definition, fixed in 5.7 #include <winsock2.h> #endif #inc…

c++中union的使用,看高手们如何解释的

union主要是共享内存&#xff0c;分配内存以其最大的结构或对象为大小&#xff0c;即sizeof最大的。在C/C程序的编写中&#xff0c;当多个基本数据类型或复合数据结构要占用同一片内存时&#xff0c;我们要使用联合体&#xff1b;当多种类型&#xff0c;多个对象&#xff0c;多…