title: Android+tomcat+MySQL实现简单的登录注册
准备工作
事先准备好开发环境:
编译器:myeclipse+Android studio;
数据库:MySQL
服务器:Tomcat
服务器端环境新建一个Java Web Project;
把必要的包先加入到lib然后在add to build path(因为需要用到数据库和json格式数据传输所以需要用到这两个jar包点击下载)(fastjson-1.2.22.jar、mysql-connector-java-5.1.45-bin.jar,不能下载的自己去找包也是一样的)
建立数据库,可以采用Navicat可视化的操作数据库,也可以采用命令行指令操作数据库。
这样服务器端的环境就准备好了,可以开始准备编写代码:
链接数据库package Util;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import com.mysql.jdbc.Connection;import com.mysql.jdbc.Statement;public class DatabaseUtil {public static final String TABLE_ACCOUNT = "userInforma";//用户信息表// connect to MySql database public static Connection getConnect() {
String url = "jdbc:mysql://localhost:3306/demo?autoReconnect=true&useUnicode=true&characterEncoding=gbk&mysqlEncoding=utf8";Connection connecter = null; try {
Class.forName("com.mysql.jdbc.Driver"); // java反射,固定写法 connecter = (Connection) DriverManager.getConnection(url, "root", "*******");//******是自己的密码 LogUtil.log("创建数据库连接"); } catch (ClassNotFoundException e) {
e.printStackTrace(); } catch (SQLException e) {
System.out.println("SQLException: " + e.getMessage());
System.out.println("SQLState: " + e.getSQLState());
System.out.println("VendorError: " + e.getErrorCode()); } return connecter; } public static ResultSet query(String querySql) throws SQLException {
Statement stateMent = (Statement) getConnect().createStatement();return stateMent.executeQuery(querySql);}}
用来专门连接数据库的类。、自己编写的日志打印类:package Util;//自定义的日志打印工具类public class LogUtil {public static void log(String message){
System.out.println(message);}}
用户类package Servlet;public class User {private int id;//序号private String account;//手机号码private String name;//昵称private String password;//密码private String sex;//性别private String birth;//生日public User(){}public String Setuser(){return "id:"+id+",账户:"+account+",昵称:"+name+",密码:"+password+",性别:"+sex+",生日:"+birth;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getAccount() {return account;}public void setAccount(String account) {this.account = account;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public String getBirth() {return birth;}public void setBirth(String birth) {this.birth = birth;}}
为每一个用户新建一个用户对象的用户类
注册package Servlet;import java.io.IOException;import java.io.PrintWriter;import java.sql.ResultSet;import java.sql.SQLException;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.alibaba.fastjson.JSON;import com.mysql.jdbc.Connection;import com.mysql.jdbc.Statement;import Util.DatabaseUtil;import Util.LogUtil;/**
* Servlet implementation class RegisterServlet
*/@WebServlet("/RegisterServlet")public class RegisterServlet extends HttpServlet {private static final long serialVersionUID = 1L; /**
* @see HttpServlet#HttpServlet()
*/public RegisterServlet() {super();// TODO Auto-generated constructor stub}/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//设置一个用来返回的状态码int code=0;//接受传进来的参数String account = request.getParameter("userAccount");
String password = request.getParameter("userPassword");String name=request.getParameter("userName");//打印接受的参数LogUtil.log("userAccount:"+account + ";userPassword:" + password+";userName:"+name);
//创建链接Connection connect = DatabaseUtil.getConnect(); try {
Statement statement = (Statement) connect.createStatement();
//创建指令String sql = "select userAccount from " + DatabaseUtil.TABLE_ACCOUNT + " where userAccount='" + account + "'";
LogUtil.log(sql); //访问数据库ResultSet result = statement.executeQuery(sql); if (result.next()) { // 能查到该账号,说明已经注册过了 code = 300;
//"该账号已存在"; } else {
//插入数据指令String sqlInsert = "insert into " + DatabaseUtil.TABLE_ACCOUNT + "(userAccount, userPassword, userName) values('" + account + "', '" + password + "', '"+name+"')";
LogUtil.log(sqlInsert); if (statement.executeUpdate(sqlInsert) > 0) { // 否则进行注册逻辑,插入新账号密码到数据库 code = 400; //"注册成功"; } else {
code =500; //"注册失败"; } } } catch (SQLException e) {
e.printStackTrace(); }
response.setContentType("text/html;charset=utf-8"); // 设置响应报文的编码格式
PrintWriter out = response.getWriter();//把数据转换成JSON格式的字符串传递到APPString json=JSON.toJSONString(code);
out.println(json);
out.flush();
out.close();}/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}}
会得到状态码:400
现在数据库就会得到一条新的数据。
登录package Servlet;import java.io.IOException;import java.io.PrintWriter;import java.sql.ResultSet;import java.sql.SQLException;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.alibaba.fastjson.JSON;import com.mysql.jdbc.Connection;import com.mysql.jdbc.Statement;import Util.DatabaseUtil;import Util.LogUtil;/**
* Servlet implementation class LoginServlet
*/@WebServlet("/LoginServlet")public class LoginServlet extends HttpServlet {private static final long serialVersionUID = 1L; /**
* @see HttpServlet#HttpServlet()
*/public LoginServlet() {super();// TODO Auto-generated constructor stub}/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {int code = 0;
String account = request.getParameter("userAccount");
String password = request.getParameter("userPassword");
LogUtil.log("userAccount:"+account + ";userPassword:" + password);
Connection connect = DatabaseUtil.getConnect(); try {
Statement statement = (Statement) connect.createStatement();
String sql = "select userAccount from " + DatabaseUtil.TABLE_ACCOUNT +" where userAccount='" + account + "' and userPassword='" + password + "'";
LogUtil.log(sql);
ResultSet result = statement.executeQuery(sql); if (result.next()) {
// 能查到该账号,说明已经注册过了 code = 200;
//"登陆成功"; } else {
code = 100;
//"登录失败,密码不匹配或账号未注册"; } } catch (SQLException e) {
e.printStackTrace(); }
response.setContentType("text/html;charset=utf-8"); // 设置响应报文的编码格式
PrintWriter out = response.getWriter();String json=JSON.toJSONString(code);
out.println(json);
out.flush(