从今天开始准备做一个音乐播放器,使用myeclipse 2017 + mysql + android studio 3.4.1进行开发。
一、创建数据库
目前只创建一个user表 包含用户名、账号、密码、年龄等字段。
二、创建java web 项目
创建一个Dynamic Web Project项目。创建完成后项目就可以来进行写了。
首先创建一个Serlvet类。
package com.lenovo.serlvet;
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 com.lenovo.mysql.connmysql;
public class Serlvet extends HttpServlet{
private connmysql mdo = new connmysql();
/**
* 重写doGet和doPost方法,掉接口的数据都会经过这两个方法,通过重写这两个方法来获取接口传的值,以便我们进行操作。
*/
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
//将接收值以及返回值都进行编码格式设置,避免乱码。
req.setCharacterEncoding("UTF-8");
//首先获取请求名,通过请求名判断具体调用哪个方法。
String methodname = req.getParameter("meth");
resp.setCharacterEncoding("UTF-8");
//设置返回值头部信息。
resp.setHeader("Content-type", "application/json; charset=UTF-8");
PrintWriter out = resp.getWriter();
String jsonstr = "";
if ("".equals(methodname) || methodname == null) {
jsonstr = "{\"code\":\"1\",\"data\":\"\",\"msg\":\"数据格式错误,请重试\"}";
} else {
//通过判断methodname去调用不同方法。
switch (methodname) {
case "login":
jsonstr = getusername(req);
break;
case "register":
jsonstr = getregister(req);
break;
case "changepwd":
jsonstr = getchapwd(req);
break;
}
}
//System.out.println(jsonstr);
//输出返回值
out.write(jsonstr);
out.flush();
out.close();
}
@Override
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doGet(req, resp);
}
private String getusername(HttpServletRequest req) {
String json = "";
try {
json = mdo.getUsername(req);
} catch (Exception e) {
json = "{\"code\":\"1\",\"data\":\"\",\"msg\":\"数据格式错误,请重试\"}";
// TODO Auto-generated catch block
e.printStackTrace();
}
return json;
}
private String getregister(HttpServletRequest req) {
String json = "";
try {
json = mdo.getRegister(req);
} catch (Exception e) {
json = "{\"code\":\"0\",\"data\":\"\",\"msg\":\"数据格式错误,请重试\"}";
// TODO Auto-generated catch block
e.printStackTrace();
}
return json;
}
private String getchapwd(HttpServletRequest req) {
String json = "";
try {
json = mdo.getChangepwd(req);
} catch (Exception e) {
json = "{\"code\":\"0\",\"data\":\"\",\"msg\":\"数据格式错误,请重试\"}";
// TODO Auto-generated catch block
e.printStackTrace();
}
return json;
}
之后在web.xml中进行配置
<display-name>Music</display-name>
<!-- 在项目中配置书写的servlet -->
<!-- 使用servlet标签来配置已经存在的servlet程序 -->
<servlet>
<!-- 使用servlet-name标签来配置已经存在的servlet程序其名称 -->
<servlet-name>Serlvet</servlet-name>
<!-- 使用servlet-class标签来配置已经存在的servlet程序对应的class文件 -->
<servlet-class>com.lenovo.serlvet.Serlvet</servlet-class>
</servlet>
<!-- 配置外部访问servlet的路径(配置映射路径) -->
<servlet-mapping>
<!-- servlet-name就是上面配置servlet的类所起的名称 -->
<servlet-name>Serlvet</servlet-name>
<!-- url-pattern配置外部访问servlet时书写的路径 -->
<url-pattern>/Music</url-pattern>
</servlet-mapping>
这样接口就可以调用了。
三、链接mysql数据库
1、导jar包
我这里使用的是mysql-connector-java-5.1.47-bin.jar包
我一般都是把包放在项目里然后直接用。
2、创建jdbc链接数据库类。
#驱动类名
driver=com.mysql.jdbc.Driver
#连接字符串
url=jdbc:mysql://localhost:3306/music?useUnicode=true&characterEncoding=utf8
#访问数据库的用户名
user=root
#访问数据库的密码
password=1234
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Properties;
public class jdbcUtils {
// 连接数据库的路径
public static String url;
// 连接数据库的用户名
public static String user;
// 连接数据库的密码
public static String pwd;
public static String driver;
// 静态块
static {
try {
// 读取配置文件
Properties prop = new Properties();
/*
* 这种写法是将来更加推荐的相对路径 写法。
*/
InputStream is = jdbcUtils.class.getClassLoader().getResourceAsStream(
"com/lenovo/mysql/jdbc.properties");
prop.load(is);
is.close();
// 获取驱动
driver = prop.getProperty("driver");
// 获取地址
url = prop.getProperty("url");
// 获取用户名
user = prop.getProperty("user");
// 获取密码
pwd = prop.getProperty("password");
// 注册驱动
Class.forName(driver);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 获取一个连接
*
* @return
* @throws Exception
*/
public static Connection getConnection() throws Exception {
try {
/*
* 通过DriverManager创建一个数据库的连接 并返回
*/
Connection conn = DriverManager.getConnection(url, user, pwd);
/*
* ThreadLocal的set方法 会将当前线程作为key,并将给定的值 作为value存入内部的map中保存。
*/
return conn;
} catch (Exception e) {
e.printStackTrace();
// 通知调用者,创建连接出错
throw e;
}
}
/**
* 关闭给定的连接
*/
public static void closeConnection(Connection conn) {
try {
if (conn != null) {
conn.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
3、创建数据库操作类
import java.sql.Connection;
import java.sql.ResultSet;
import javax.servlet.http.HttpServletRequest;
import com.mysql.jdbc.PreparedStatement;
public class connmysql {
public String insert() throws Exception {//增加操作
Connection conn=null;
ResultSet rs=null;
PreparedStatement st=null;
String jsonstr = "";
try {
//获取连接
conn=jdbcUtils.getConnection();
//编写sql
String sql="insert into user(name,password,age,phone) values(?,?,?,?)";
//获取语句执行者
st= (PreparedStatement)conn.prepareStatement(sql);
//设置参数
st.setString(1, "测试");
st.setString(2, "1234");
st.setString(3, "16");
st.setString(4, "152545515");
//执行sql
int i=st.executeUpdate();
System.out.println(i);
//处理结果
if(i==1) {
jsonstr = "执行成功";
System.out.println("执行成功");
}else {
jsonstr = "执行失败";
System.out.println("执行失败");
}
} catch (Exception e) {
jsonstr = "执行失败";
e.printStackTrace();
}finally {
jdbcUtils.closeConnection(conn);
}
return jsonstr;
}
@SuppressWarnings({ "unused", "resource" })
public String getRegister(HttpServletRequest req) throws Exception {
Connection conn=null;
ResultSet rs=null;
PreparedStatement st=null;
String jsonstr = "";
String user = req.getParameter("user");
String password= req.getParameter("password");
String name = req.getParameter("name");
String phone= req.getParameter("phone");
int code = 1;
String msg = "注册失败,请重试";
String data = "\"\"";
try {
//获取连接
conn=jdbcUtils.getConnection();
//编写sql
String sql="SELECT * FROM user where user = \"" + user + "\"";
//获取语句执行者
st= (PreparedStatement)conn.prepareStatement(sql);
ResultSet resultSet = st.executeQuery();
if(resultSet.next()){
int id = resultSet.getInt("id");
String a = id + "";
if (a != "" || a != null ) {
String sql1="insert into user(user,password,name,phone) values(\"" + user + "\",\"" + password + "\",\"" + name + "\",\"" + phone + "\")";
//获取语句执行者
st= (PreparedStatement)conn.prepareStatement(sql1);
int i=st.executeUpdate();
//处理结果
if(i==1) {
code = 0;
msg = "注册成功";
}else {
code = 1;
msg = "注册失败";
}
} else {
code = 1;
msg = "用户名已存在";
}
}else {
String sql1="insert into user(user,password,name,phone) values(\"" + user + "\",\"" + password + "\",\"" + name + "\",\"" + phone + "\")";
//获取语句执行者
st= (PreparedStatement)conn.prepareStatement(sql1);
int i=st.executeUpdate();
//处理结果
if(i==1) {
code = 0;
msg = "注册成功";
}else {
code = 1;
msg = "注册失败";
}
}
} catch (Exception e) {
code = 1;
msg = "注册失败";
e.printStackTrace();
}finally {
jdbcUtils.closeConnection(conn);
}
jsonstr = "{\"code\":\"" + code + "\",\"data\":" + data + ",\"msg\":\"" + msg + "\"}";
return jsonstr;
}
@SuppressWarnings("unused")
public String getUsername(HttpServletRequest req) throws Exception {
Connection conn=null;
ResultSet rs=null;
PreparedStatement st=null;
String jsonstr = "";
String username = req.getParameter("name");
String password= req.getParameter("password");
int code = 1;
String msg = "登录失败";
String data = "\"\"";
try {
//获取连接
conn=jdbcUtils.getConnection();
//编写sql
String sql="SELECT * FROM user where user = \"" + username + "\" and password = \"" + password + "\"";
//获取语句执行者
st= (PreparedStatement)conn.prepareStatement(sql);
ResultSet resultSet = st.executeQuery();
if(resultSet.next()){
int id = resultSet.getInt("id");
String user = resultSet.getString("user");
String password1 = resultSet.getString("password");
String name = resultSet.getString("name");
String phone = resultSet.getString("phone");
String a = id + "";
if (a != "" || a != null ) {
code = 0;
data = "{\"id\":\"" + id + "\",\"user\":\"" + user + "\",\"password\":\"" + password1 + "\",\"name\":\"" + name + "\",\"phone\":\"" + phone + "\"}";
msg = "登录成功";
} else {
code = 1;
msg = "登录失败";
}
}
} catch (Exception e) {
code = 1;
msg = "登录失败";
e.printStackTrace();
}finally {
jdbcUtils.closeConnection(conn);
}
jsonstr = "{\"code\":\"" + code + "\",\"data\":" + data + ",\"msg\":\"" + msg + "\"}";
return jsonstr;
}
@SuppressWarnings("unused")
public String getChangepwd(HttpServletRequest req) throws Exception {
Connection conn=null;
ResultSet rs=null;
PreparedStatement st=null;
String jsonstr = "";
String user = req.getParameter("user");
String password = req.getParameter("password");
int code = 1;
String msg = "密码修改失败";
String data = "\"\"";
try {
//获取连接
conn=jdbcUtils.getConnection();
//编写sql
String sql="update user set password = \"" + password + "\" where user = \"" + user + "\"";
//获取语句执行者
st= (PreparedStatement)conn.prepareStatement(sql);
int i=st.executeUpdate();
if(i==1) {
code = 0;
msg = "密码修改成功";
}else {
code = 1;
msg = "用户名不存在";
}
} catch (Exception e) {
code = 1;
msg = "密码修改失败";
e.printStackTrace();
}finally {
jdbcUtils.closeConnection(conn);
}
jsonstr = "{\"code\":\"" + code + "\",\"data\":" + data + ",\"msg\":\"" + msg + "\"}";
return jsonstr;
}
}
这样后台接口已经初步写好了,之后就可以在在手机端写登录、忘记密码、注册的页面了。
第一次写这样的博客,本人也是一个新手,如果有问题,希望各位帮忙指出,谢谢。