原创:
http://blog.csdn.net/iwanghang
原创: http://blog.csdn.net/iwanghang
1.先来个Androiod端口的GIF效果图
App图标大家可能没看清,这个是AndroidStudio3.0最新的默认App图标哦~~
2.不要忘记把MySQL的jar导进来
如果忘了jar怎么下载,请看这里:http://blog.csdn.net/iwanghang/article/details/78489898
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; // 请求参数中的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端控制台调试信息
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<String>() { @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<String, String> getParams() throws AuthFailureError { // 请求的内容 Map<String,String> params = new HashMap<>(); params.put("username",username); params.put("password",password); return params; } }; // 添加到请求队列 requestQueue.add(request); } }6.Android端就不贴控制台调试信息了,小伙伴们不要忘了Volley的jar包
如果忘了,看看这里也可以:http://blog.csdn.net/column/details/12824.html
原创: http://blog.csdn.net/iwanghang