mysql生成app接口_Java实现app接口和Socket消息传递(10)java连接MySQL实现App登录接口...
原創(chuàng):
http://blog.csdn.net/iwanghang
1.先來個Androiod端口的GIF效果圖
App圖標大家可能沒看清,這個是AndroidStudio3.0最新的默認App圖標哦~~
2.不要忘記把MySQL的jar導進來
jar包放入的位置在這里:
D:\eclipse-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\servletDemo\WEB-INF\lib
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; // 請求參數(shù)中的username
private String password; // 請求參數(shù)中的password
private String passwordSql; // 數(shù)據(jù)庫中的password
private String islogin; //返回參數(shù)是否登錄成功
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...");
// 獲取請求參數(shù)
username = request.getParameter("username");
password = request.getParameter("password");
System.out.println("獲取請求參數(shù) username = " + username);
System.out.println("獲取請求參數(shù) password = " + password);
// 在MySQL中,用username查找對應的password
try {
Class.forName("com.mysql.jdbc.Driver");//創(chuàng)建驅動器
// 寫法1. 這樣寫會有警告,但是不影響使用
// Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql","root","123456");//這是數(shù)據(jù)庫的路徑,并且還有輸入賬號(一般默認是root),密碼之前創(chuàng)建用戶時的那個
// 寫法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中執(zhí)行的代碼
ResultSet rs=pst.executeQuery();//獲得執(zhí)行上面代碼后的結果集
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);
}
// 對比數(shù)據(jù)庫中的password,與請求參數(shù)中的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端控制臺調試信息
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";
// 創(chuàng)建請求隊列
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(); // 登錄 按鈕點擊事件監(jiān)聽
}
/**
* 登錄 按鈕點擊事件監(jiān)聽
*/
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(); // 發(fā)送網(wǎng)絡請求
}
});
}
/**
* 發(fā)送網(wǎng)絡請求 嘗試登陸
*/
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(),"網(wǎng)絡出問題",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包
原創(chuàng):
http://blog.csdn.net/iwanghang
總結
以上是生活随笔為你收集整理的mysql生成app接口_Java实现app接口和Socket消息传递(10)java连接MySQL实现App登录接口...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql innodb flush m
- 下一篇: mysql pxc测试_Mysql同步机