摘要:今天实现了安卓端使用http将用户注册信息存入云服务器mysql数据库。
遇到问题:安卓端注册请求http成功返回200,但是刷新数据库发现里面并没有数据。
原因:云服务器数据库相对于云服务器是本地,url地址应为URL="jdbc:mysql://localhost:3306,而我写入了服务器地址号(低级错误找了半天)
解决方法:URL="jdbc:mysql://localhost:3306
代码部分:
package Entity; public class Users { public Users() { // TODO Auto-generated constructor stub } public String getUserid() { return userid; } public void setUserid(String userid) { this.userid = userid; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } public String getDate() { return date; } public void setDate(String date) { this.date = date; } private String userid; private String username; private String pwd; private String date; }
package Servlet; import java.io.IOException; import java.io.UnsupportedEncodingException; 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 DBUtil.DBUtil; import Entity.Users; /** * Servlet implementation class login_servlet */ @WebServlet("/login_servlet") public class login_servlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public login_servlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response) */ protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=UTF-8"); String method=request.getParameter("method"); System.out.println("执行service"); if(method.equals("register")) registerUser(request, response); else if(method.equals("login")) checkLogin(request, response); } private void registerUser(HttpServletRequest request, HttpServletResponse response) throws IOException { //用户注册 Users users=new Users(); users.setUsername(request.getParameter("name")); users.setPwd(request.getParameter("pwd")); DBUtil.registerUser(users); } private void checkLogin(HttpServletRequest request, HttpServletResponse response) throws IOException { //用户登录 String name=request.getParameter("name"); String pwd=request.getParameter("pwd"); response.getWriter().write(DBUtil.checklogin(name, pwd)); } }
public class DBUtil { private static String model="0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM"; private static String URL="jdbc:mysql://localhost:3306/stdeverything?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC"; private static String username="root"; private static String password="password"; public static Connection getConnection() { Connection connection=null; try { Class.forName("com.mysql.cj.jdbc.Driver"); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { connection=DriverManager.getConnection(URL, username, password); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return connection; } public DBUtil() { // TODO Auto-generated constructor stub } private static void closeDB(Connection connection,Statement statement,ResultSet resultSet) { //关闭连接 if(connection!=null) try { connection.close(); } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } if(statement!=null) try { statement.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } if(resultSet!=null) try { resultSet.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static String getDateString(boolean type) { //获取当前时间 Date date=new Date(); SimpleDateFormat sdf1=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat sdf2=new SimpleDateFormat("yyyyMMddHHmmssSSS"); return type?sdf1.format(date):sdf2.format(date); } public static String getIdentifier() { //生成编码 String str=""; for(int i=0;i<10;i++) str+=model.charAt((int)(Math.random()*100)%62); return str+getDateString(false); } public static void registerUser(Users users) { //用户注册 String sql="insert into user values('"+getIdentifier()+"','"+users.getUsername()+"','"+users.getPwd()+"','"+getDateString(true)+"','')"; Connection connection=getConnection(); try { Statement statement=connection.createStatement(); statement.executeUpdate(sql); closeDB(connection, statement, null); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); System.out.println("用户注册出错"); } } public static String checklogin(String name,String pwd) { //检查登录 JSONObject jsonObject=new JSONObject(); jsonObject.put("status", "0"); String sql="select * from user where name='"+name+"'"; String sql_id=null,sql_pwd=null; Connection connection=getConnection(); ResultSet rs=null; try { Statement statement=connection.createStatement(); rs=statement.executeQuery(sql); if(rs.next()) { sql_id=rs.getString("id"); sql_pwd=rs.getString("pwd"); jsonObject.put("id", sql_id); jsonObject.put("name", "yes"); }else { jsonObject.put("id", ""); jsonObject.put("name", "no"); jsonObject.put("msg", "用户名不存在"); } closeDB(connection, statement, rs); if(jsonObject.get("name").equals("yes")) { if(pwd.equals(sql_pwd)) { jsonObject.put("msg", "登陆成功"); jsonObject.put("status", "1"); }else { jsonObject.put("msg", "密码不正确"); } } return jsonObject.toString(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); System.out.println("登陆时出错"); } return null; }
打包放入服务器然后再android端请求服务器就ok了!
数据库:
明天尝试添加第三方登录(首先考虑腾讯)