创建属于自己的音乐播放器(一)

从今天开始准备做一个音乐播放器,使用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;
	}
}

这样后台接口已经初步写好了,之后就可以在在手机端写登录、忘记密码、注册的页面了。

第一次写这样的博客,本人也是一个新手,如果有问题,希望各位帮忙指出,谢谢。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《嘟嘟音乐》是我自己写的Android,若有不足之处请大家谅解 1.首页实现读取本地Music本地文件夹中的MP3文件然后放进listview里面 2.实现了用户的用户的登录注册页面,登录过后用户可以进行自己的信息修改,实现了服务器的数据交互问题 3.实现了管理员登录,使用的是与Tomcat服务器进行数据交互验证信息的正确性,我使用的是myeclipse进行布置的服务器信息,此时使用的是SQLserver 2008 数据库存储的管理员的信息,读取完以后然后返回到管理界面 4.在嘟嘟音乐的管理界面,我实现了策划菜单以及卡片式布局来管理普通用户信息,以及用户信息的增删改查。查询使用的是以UserId或者昵称迷糊查询的方式进行查询的。 5.我使用的SQL server2008 的数据库文件我已经全部导出了,大家可以自行进行导入 6.我使用的myeclipse的项目是Servlet进行的验证app管理员信息的邓丽,项目我已经全部导出。放在压缩包里面 7.我使用的是Android Studio,我把文件布局截图放在压缩包里面,还有几个需要注意的地方,特别的坑,尤其是大家需要注意build.gridle(app)这里面大家需要注册导包,你并且配置好自己的SDK。大家还需要注意就是Android的注册文件里面也需要注意,关于一些权限的问题 8.哈哈,大概的的就写到这里了,写的不好的地方大家多见谅,我也是在学习阶段,把自己的写的东西给大家贡献出来以供大家参考学习使用。我还在压缩包里面放置了视频演示的链接信息,大家可以看看。如果感觉写的不错的话,请好评哦。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值