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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现实时聊天应用程序,您需要使用以下技术: 1. Spring Boot:用于构建应用程序后端,它提供了一组开箱即用的库和工具,使构建Web应用程序变得容易。 2. MySQL:用于存储应用程序的数据,例如用户信息,聊天记录等。 3. Android Studio:用于构建移动应用程序的开发环境。 4. Socket.IO:用于实现实时通信的JavaScript库。 下面是实现步骤: 1. 首先,您需要创建一个Spring Boot应用程序,并将MySQL作为数据库。您可以使用Spring Initializr来创建应用程序。 2. 创建一个名为“chat”的数据库,并添加“users”和“messages”表。用户表将存储用户信息,例如用户名和密码。消息表将存储聊天记录。 3. 创建一个REST API,用于处理用户注册,登录消息发送请求。您可以使用Spring MVC来创建API。 4. 在Android Studio中创建一个新的Android应用程序,并添加Socket.IO库。这将允许您通过WebSocket通信协议实现实时通信。 5. 实现用户注册和登录功能。当用户注册时,将其用户名和密码保存到MySQL数据库中。当用户登录时,验证其凭据并返回一个JSON Web Token(JWT)。 6. 实现消息发送和接收功能。在Android应用程序中,您可以使用Socket.IO库将消息发送到后端,然后将其保存到MySQL数据库中。在后端,您可以使用Socket.IO库将消息推送给其他连接到应用程序的客户端。 7. 实现聊天界面。在Android应用程序中,您可以使用RecyclerView和Adapter来显示聊天记录。当新消息到达时,将其添加到RecyclerView中。 8. 最后,测试您的应用程序。确保您可以注册,登录,发送消息并收到实时通知。 希望这可以帮助您实现实时聊天应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值