Android Studio+Servlet+MySql實現登錄註冊
一、Android 項目當中設置明文傳輸
1、設置明文傳輸的xml
<?xml version="1.0" encoding="UTF-8"?> <network-security-config> <base-config cleartextTrafficPermitted="true"/> </network-security-config>
2、引入上述創建的xml
android:networkSecurityConfig="@xml/network_security_config"
二、在MyEclipse當中創建Web項目
1、創建項目
引入MySQL的驅動包
2、創建實體類User
package entity; public class User { private int id; private String name; private String username; private String password; private int age; private String phone; public User() { } public User(int id, String name, String username, String password, int age, String phone) { this.id = id; this.name = name; this.username = username; this.password = password; this.age = age; this.phone = phone; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } }
3、創建JDBCUtils工具類
package dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class JDBCUtils { static { try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } } public static Connection getConn() { Connection conn = null; try { conn=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test","root","root"); }catch (Exception exception){ exception.printStackTrace(); } return conn; } public static void close(Connection conn){ try { conn.close(); } catch (SQLException throwables) { throwables.printStackTrace(); } } }
4、創建UserDao類
package dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import entity.User; public class UserDao { public boolean login(String name,String password){ String sql = "select * from users where name = ? and password = ?"; Connection con = JDBCUtils.getConn(); try { PreparedStatement pst=con.prepareStatement(sql); pst.setString(1,name); pst.setString(2,password); if(pst.executeQuery().next()){ return true; } } catch (SQLException throwables) { throwables.printStackTrace(); }finally { JDBCUtils.close(con); } return false; } public boolean register(User user){ String sql = "insert into users(name,username,password,age,phone) values (?,?,?,?,?)"; Connection con = JDBCUtils.getConn(); try { PreparedStatement pst=con.prepareStatement(sql); pst.setString(1,user.getName()); pst.setString(2,user.getUsername()); pst.setString(3,user.getPassword()); pst.setInt(4,user.getAge()); pst.setString(5,user.getPhone()); int value = pst.executeUpdate(); if(value>0){ return true; } } catch (SQLException throwables) { throwables.printStackTrace(); }finally { JDBCUtils.close(con); } return false; } public User findUser(String name){ String sql = "select * from users where name = ?"; Connection con = JDBCUtils.getConn(); User user = null; try { PreparedStatement pst=con.prepareStatement(sql); pst.setString(1,name); ResultSet rs = pst.executeQuery(); while (rs.next()){ int id = rs.getInt(1); String namedb = rs.getString(2); String username = rs.getString(3); String passworddb = rs.getString(4); int age = rs.getInt(5); String phone = rs.getString(6); user = new User(id,namedb,username,passworddb,age,phone); } } catch (SQLException throwables) { throwables.printStackTrace(); }finally { JDBCUtils.close(con); } return user; } }
5、創建對應的LoginServlet
package servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import dao.UserDao; public class LoginServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String name = request.getParameter("name"); String password = request.getParameter("password"); response.setCharacterEncoding("UTF-8"); UserDao dao = new UserDao(); boolean login = dao.login(name, password); String msg = ""; if(login){ msg = "成功"; }else{ msg = "失敗"; } PrintWriter out = response.getWriter(); out.println(msg); out.flush(); out.close(); } }
三、在Android Studio當中調用Servlet
(一)實現登錄功能
1、創建連接Servlet的工具類(PostUtil)
package com.example.application01.utils; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; //訪問servlet public class PostUtil { //訪問的serlver不一樣 //傳遞的參數不一樣 public static String Post(String url,String data) { String msg = ""; try{ //http://ms-yffprtappszi:8080/AndroidWeb/LoginServlet HttpURLConnection conn = (HttpURLConnection) new URL("http://10.0.2.2:8080/AndroidWeb/"+url).openConnection(); //設置請求方式,請求超時信息 conn.setRequestMethod("POST"); conn.setReadTimeout(5000); conn.setConnectTimeout(5000); //設置運行輸入,輸出: conn.setDoOutput(true); conn.setDoInput(true); //Post方式不能緩存,需手動設置為false conn.setUseCaches(false); //我們請求的數據: //獲取輸出流 OutputStream out = conn.getOutputStream(); out.write(data.getBytes()); out.flush(); if (conn.getResponseCode() == 200) { // 獲取響應的輸入流對象 InputStream is = conn.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(is)); StringBuffer response = new StringBuffer(); String line=null; while ((line = reader.readLine()) != null) { response.append(line); } msg=response.toString(); } }catch(Exception e) { e.printStackTrace(); } return msg; } }
2、在MainActivity調用這個類
package com.example.application01; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.View; import android.widget.EditText; import android.widget.Toast; import com.example.application01.dao.UserDao; import com.example.application01.utils.PostUtil; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void reg(View view){ startActivity(new Intent(getApplicationContext(),RegisterActivity.class)); } public void login(View view){ EditText EditTextname = (EditText)findViewById(R.id.name); EditText EditTextpassword = (EditText)findViewById(R.id.password); new Thread(){ @Override public void run() { String data=""; try { data = "name="+ URLEncoder.encode(EditTextname.getText().toString(), "UTF-8")+ "&password="+ URLEncoder.encode(EditTextpassword.getText().toString(), "UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } String request = PostUtil.Post("LoginServlet",data); int msg = 0; if(request.equals("成功")){ msg = 1; } hand1.sendEmptyMessage(msg); } }.start(); } final Handler hand1 = new Handler() { @Override public void handleMessage(Message msg) { if(msg.what == 1) { Toast.makeText(getApplicationContext(),"登錄成功",Toast.LENGTH_LONG).show(); } else { Toast.makeText(getApplicationContext(),"登錄失敗",Toast.LENGTH_LONG).show(); } } }; }
在開啟web項目的情況下運行Android項目
(二)實現註冊功能
1、在web工程當中創建RegisterServlet
package servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import dao.UserDao; import entity.User; public class RegisterServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("-----------------"); response.setCharacterEncoding("UTF-8"); String name = request.getParameter("name"); String username = request.getParameter("username"); String password = request.getParameter("password"); String phone = request.getParameter("phone"); int age = Integer.parseInt(request.getParameter("age")); User user = new User(); user.setName(name); user.setUsername(username); user.setPassword(password); user.setAge(age); user.setPhone(phone); String msg = ""; UserDao userDao = null; User uu = null; userDao = new UserDao(); uu = userDao.findUser(user.getName()); boolean flag = false; if(uu == null){ flag = userDao.register(user); } if(flag){ msg = "成功"; }else{ msg = "失敗"; } if(uu != null) { msg = "已存在"; } PrintWriter out = response.getWriter(); out.println(msg); out.flush(); out.close(); } }
2、在Android當中的RegisterActivity訪問Servlet
package com.example.application01; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.View; import android.widget.EditText; import android.widget.Toast; import com.example.application01.dao.UserDao; import com.example.application01.entity.User; import com.example.application01.utils.PostUtil; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; public class RegisterActivity extends AppCompatActivity { EditText name = null; EditText username = null; EditText password = null; EditText phone = null; EditText age = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_register); name = findViewById(R.id.name); username = findViewById(R.id.username); password = findViewById(R.id.password); phone = findViewById(R.id.phone); age = findViewById(R.id.age); } public void register(View view){ String cname = name.getText().toString(); String cusername = username.getText().toString(); String cpassword = password.getText().toString(); System.out.println(phone.getText().toString()); String cphone = phone.getText().toString(); int cgae = Integer.parseInt(age.getText().toString()); if(cname.length() < 2 || cusername.length() < 2 || cpassword.length() < 2 ){ Toast.makeText(getApplicationContext(),"輸入信息不符合要求請重新輸入",Toast.LENGTH_LONG).show(); return; } User user = new User(); user.setName(cname); user.setUsername(cusername); user.setPassword(cpassword); user.setAge(cgae); user.setPhone(cphone); new Thread(){ @Override public void run() { String data=""; try { data = "&name="+ URLEncoder.encode(user.getName(), "UTF-8")+ "&username="+ URLEncoder.encode(user.getUsername(), "UTF-8")+ "&password="+ URLEncoder.encode(user.getPassword(), "UTF-8")+ "&age="+ URLEncoder.encode(user.getAge()+"", "UTF-8")+ "&phone="+ URLEncoder.encode(user.getPhone(), "UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } String request = PostUtil.Post("RegisterServlet",data); int msg = 0; if(request.equals("成功")){ msg = 2; } //已存在 if(request.equals("已存在")){ msg = 1; } hand.sendEmptyMessage(msg); } }.start(); } final Handler hand = new Handler() { @Override public void handleMessage(Message msg) { if(msg.what == 0) { Toast.makeText(getApplicationContext(),"註冊失敗",Toast.LENGTH_LONG).show(); } if(msg.what == 1) { Toast.makeText(getApplicationContext(),"該賬號已經存在,請換一個賬號",Toast.LENGTH_LONG).show(); } if(msg.what == 2) { //startActivity(new Intent(getApplication(),MainActivity.class)); Intent intent = new Intent(); //將想要傳遞的數據用putExtra封裝在intent中 intent.putExtra("a","註冊"); setResult(RESULT_CANCELED,intent); finish(); } } }; }
到此這篇關於Android Studio+Servlet+MySql實現登錄註冊 的文章就介紹到這瞭,更多相關Android Studio 登錄註冊 內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- AJAX實現註冊驗證用戶名
- JavaWeb Servlet實現網頁登錄功能
- JavaWeb實現簡單的自動登錄功能
- Android Studio連接MySql實現登錄註冊(附源代碼)
- idea搭建可運行Servlet的Web項目