一.移动客服端实现对PC端数据的操作

在PC端模拟一个数据库,实现用户的增删改查,然后在移动客服端实现对PC端数据库的操作

在PC端建立三个表

用户表(Users),员工表(Emp), 部门表(Dept),

User表对应字段,并设置对应的set/get方法,这里不一一写出

    private int uno;
    private String uname;
    private String upwd;

 

Emp表对应字段

    private int eno;
    private String ename;
    private int eage;
    private String esex;
    private Date eintime;

 

Dept表对应字段

    private int dno;
    private String dname;

 

对数据库的模拟操作:

pc端代码:

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

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.entity.Users;
import com.google.gson.Gson;

/**
 * 处理Users相关请求的控制类
 */
@WebServlet("/UserServlet")
public class UserServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    
    //定义一个集合,初始化一些用户
    private List<Users> userList;
    
    public UserServlet() {
        super();
        userList=new ArrayList<Users>();
        userList.add(new Users(1, "admins", "admins"));
        userList.add(new Users(2, "jack", "000000"));
        userList.add(new Users(3, "lucy", "000000"));
        userList.add(new Users(4, "toms", "000000"));
        userList.add(new Users(5, "join", "000000"));
    }
    
    //所有来到UserServlet的请求都将进入service中进行分发
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=utf-8");
        //获取用户要请求的方法
        String method=request.getParameter("method");
        switch(method){
            case "login":
                doLogin(request, response);
                break;
            case "register":
                doRegister(request, response);
                break;
            case "userList":
                doFindUserList(request, response);
                break;
            case "userById":
                doFindUserById(request, response);
                break;
            case "updateUser":
                doUpdateUser(request, response);
                break;
            case "deleteUser":
                doDeleteUser(request, response);
                break;
        }
    }

    //用户登录
    protected void doLogin(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //接收用户传递的参数
        String name=request.getParameter("uname");
        String pwd=request.getParameter("upwd");
        
        PrintWriter out=response.getWriter();
        for (Users users : userList) {
            if(users.getUname().equals(name)&&users.getUpwd().equals(pwd)){
                out.println("用户登录成功");
                return;
            }
        }
        out.print("用户名和密码错误");
        out.close();
    }

    //添加用户
    protected void doRegister(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("----------进入添加用户操作----------");
        //接收用户传递的参数
        String name=request.getParameter("uname");
        String pwd=request.getParameter("upwd");
        
        //将信息封装成一个Users对象
        userList.add(new Users(userList.size()+1, name, pwd));
        PrintWriter out=response.getWriter();
        out.println("用户"+name+"添加成功");
        out.close();        
    }
    
    //查询所有用户
    protected void doFindUserList(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        PrintWriter out=response.getWriter();
        //将所有用户以JSON格式响应到客户端
        out.println(new Gson().toJson(userList));
        out.close();        
    }
    
    //根据Id查询单个用户
    protected void doFindUserById(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        PrintWriter out=response.getWriter();
        //取出ID
        int id=Integer.parseInt(request.getParameter("uno"));
        for (Users users : userList) {
            if(users.getUno()==id){
                out.println(new Gson().toJson(users));
                return;
            }
        }
        out.close();
    }
    
    //修改用户
    protected void doUpdateUser(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        int id=Integer.parseInt(request.getParameter("uno"));
        String name=request.getParameter("uname");
        String pwd=request.getParameter("upwd");
        
        PrintWriter out=response.getWriter();
        for (Users users : userList) {
            if(users.getUno()==id){
                users.setUname(name);
                users.setUpwd(pwd);
                out.println(new Gson().toJson("修改用户成功"));
                return;
            }
        }
        out.println(new Gson().toJson("修改用户失败"));
        out.close();
    }
    
    //删除用户
    protected void doDeleteUser(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        int id=Integer.parseInt(request.getParameter("uno"));
        PrintWriter out=response.getWriter();
        for (Users users : userList) {
            if(users.getUno()==id){
                userList.remove(users);
                out.println(new Gson().toJson("删除用户成功"));
                return;
            }
        }
        out.println(new Gson().toJson("删除用户失败"));
        out.close();
    }

}

HTML页面 :

用户登录代码:<a href="http://localhost:8080/Web_Project/UserServlet?method=login&uname=xiaolin&upwd=000000">用户登录</a><br/><br/>,传参其他的相同

PC端对数据的操作完成。

手机客服端代码:

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

import com.example.utils.CallBack;
import com.example.utils.FileUtils;
import com.example.utils.HttpUtils;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    //用户登录(自带模拟器:10.0.2.2,Genymotion:本地IP)
    public void doLogin(View view){
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
//192.168.3.183需要改成你的本地IP地址,下面的都需要改成你本地的IP地址 URL url
=new URL("http://192.168.3.183:8080/Web_Project/UserServlet?method=login&uname=xiaolin&upwd=000000"); HttpURLConnection conn=(HttpURLConnection) url.openConnection(); conn.connect(); //获取结果 InputStream input=conn.getInputStream(); final String result= FileUtils.formatStreamToString(input); runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(getApplicationContext(), result, Toast.LENGTH_SHORT).show(); } }); } catch (Exception e) { e.printStackTrace(); } } }).start(); } //添加用户 public void doRegister(View view){ new Thread(new Runnable() { @Override public void run() { try { URL url=new URL("http://192.168.3.183:8080/Web_Project/UserServlet"); HttpURLConnection conn=(HttpURLConnection) url.openConnection(); conn.setRequestMethod("POST");//以POST方式传值 conn.setDoOutput(true);//允许向服务器传递参数,默认false conn.connect(); //向服务器传递数据java.net.URLEncoder.encode("","utf-8"); String data="method=register&uname=xiaolin&upwd=123456"; OutputStream out=conn.getOutputStream(); out.write(data.getBytes()); out.close(); //获取结果 InputStream input=conn.getInputStream(); final String result= FileUtils.formatStreamToString(input); runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(getApplicationContext(), result, Toast.LENGTH_SHORT).show(); } }); } catch (Exception e) { e.printStackTrace(); } } }).start(); } //查询所有用户 public void doFindUserList(View view){ new Thread(new Runnable() { @Override public void run() { try { URL url=new URL("http://192.168.3.183:8080/Web_Project/UserServlet?method=userList"); HttpURLConnection conn=(HttpURLConnection)url.openConnection(); conn.connect(); //直接将返回的流转换为一个字符串 String result=FileUtils.formatStreamToString(conn.getInputStream()); //如何解析一个JSON字符串 final JSONArray array=new JSONArray(result); runOnUiThread(new Runnable() { @Override public void run() { for(int i=0;i<array.length();i++){ try { JSONObject obj=array.getJSONObject(i); String msg="用户名:"+obj.getString("uname")+",密码:"+obj.getString("upwd"); Toast.makeText(getApplicationContext(),msg, Toast.LENGTH_SHORT).show(); } catch (JSONException e) { e.printStackTrace(); } } } }); } catch (Exception e) { e.printStackTrace(); } } }).start(); } //查询单个用户 public void doFindUserById(View view){ new Thread(new Runnable() { @Override public void run() { try { URL url=new URL("http://192.168.3.183:8080/Web_Project/UserServlet?method=userById&uno=1"); HttpURLConnection conn=(HttpURLConnection)url.openConnection(); conn.connect(); //直接将返回的流转换为一个字符串 String result=FileUtils.formatStreamToString(conn.getInputStream()); //如何解析一个JSON字符串 final JSONObject obj=new JSONObject(result); runOnUiThread(new Runnable() { @Override public void run() { String msg= null; try { msg = "用户名:"+obj.getString("uname")+",密码:"+obj.getString("upwd"); Toast.makeText(getApplicationContext(),msg, Toast.LENGTH_SHORT).show(); } catch (JSONException e) { e.printStackTrace(); } } }); } catch (Exception e) { e.printStackTrace(); } } }).start(); } //更新用户 public void doUpdateUser(View view){ new Thread(new Runnable() { @Override public void run() { try { URL url=new URL("http://192.168.3.183:8080/Web_Project/UserServlet"); HttpURLConnection conn=(HttpURLConnection) url.openConnection(); conn.setRequestMethod("POST");//以POST方式传值 conn.setDoOutput(true);//允许向服务器传递参数,默认false conn.connect(); //向服务器传递数据java.net.URLEncoder.encode("","utf-8"); String data="method=updateUser&uno=6&uname=xiaolin&upwd=111111"; OutputStream out=conn.getOutputStream(); out.write(data.getBytes()); out.close(); //获取结果 InputStream input=conn.getInputStream(); final String result= FileUtils.formatStreamToString(input); runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(getApplicationContext(),result.toString(), Toast.LENGTH_SHORT).show(); } }); } catch (Exception e) { e.printStackTrace(); } } }).start(); } //删除用户 public void doDeleteUser(View view){ try { URL url=new URL("http://192.168.3.183:8080/Web_Project/UserServlet"); String data="method=deleteUser&uno=6"; HttpUtils.doPost(url, data, new CallBack() { @Override public void success(final String str) { runOnUI(str); } @Override public void failed(final String str) { runOnUI(str); } }); } catch (MalformedURLException e) { e.printStackTrace(); } } public void addEmp(View view){ try { URL url=new URL("http://192.168.3.183:8080/Web_Project/EmpServlet"); String data="method=addEmp&ename=小明&eage=21&esex=男&eintime=2017-7-8&dno=1"; HttpUtils.doPost(url, data, new CallBack() { @Override public void success(final String str) { runOnUI(str); } @Override public void failed(final String str) { runOnUI(str); } }); } catch (MalformedURLException e) { e.printStackTrace(); } } public void findEmpList(View view){ try { URL url=new URL("http://192.168.3.183:8080/Web_Project/EmpServlet?method=empList"); HttpUtils.doGet(url,null, new CallBack() { @Override public void success(final String str) { try { final JSONArray array=new JSONArray(str); for(int i=0;i<array.length();i++){ JSONObject obj=array.getJSONObject(i); JSONObject dept=obj.getJSONObject("dept"); String empInfo="员工姓名"+obj.getString("ename")+",部门:"+dept.getString("dname"); runOnUI(empInfo); } } catch (JSONException e) { e.printStackTrace(); } } @Override public void failed(final String str) { runOnUI("查询失败"); } }); } catch (MalformedURLException e) { e.printStackTrace(); } } private void runOnUI(final String str){ runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(getApplicationContext(),str, Toast.LENGTH_SHORT).show(); } }); } }

 

工具类:
FileUtils
public class FileUtils {

    //将一个输入流转换为一个字符串
    public static String formatStreamToString(InputStream stream){
        if(stream!=null){
            ByteArrayOutputStream out=new ByteArrayOutputStream();
            byte[] bytes=new byte[1024];
            int len=0;
            try {
                while((len=stream.read(bytes))!=-1){
                    out.write(bytes,0,len);
                }
                String str=out.toString();
                out.flush();
                out.close();
                stream.close();
                return str;
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
    }

    //执行下载文件到指定位置
    public static void downLoadFile(final String fromPath, final String savePath, final CallBack callBack){
        if(fromPath!=null&&savePath!=null){
            new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        URL url=new URL(fromPath);
                        HttpURLConnection conn=(HttpURLConnection) url.openConnection();
                        conn.setConnectTimeout(20*1000);
                        conn.connect();
                        InputStream input=conn.getInputStream();
                        File file=new File(savePath);
                        if(!file.getParentFile().exists())
                            file.getParentFile().mkdirs();
                        OutputStream out=new FileOutputStream(file);
                        byte[] bytes=new byte[1024];
                        for(int len=0;(len=input.read(bytes))!=-1;){
                            out.write(bytes,0,len);
                        }
                        out.flush();
                        out.close();
                        input.close();
                        callBack.success(null);//下载成功
                    } catch (Exception e) {
                        e.printStackTrace();
                        callBack.failed(null);//下载失败
                    }
                }
            }).start();
        }
    }

    public static boolean existsFile(String path){
        if(path!=null&&path.length()>0) {
            File file = new File(path);
            if(file.exists())
                return true;
        }
        return false;
    }
}

 


HttpUtils
public class HttpUtils {

    public static void doPost(final URL url, final String data, final CallBack callBack){
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    HttpURLConnection conn=(HttpURLConnection)url.openConnection();
                    conn.setRequestMethod("POST");
                    conn.setConnectTimeout(10*1000);
                    conn.setDoOutput(true);
                    conn.setUseCaches(false);
                    conn.setInstanceFollowRedirects(true);
                    conn.connect();
                    if(data!=null&&data.length()>0){
                        OutputStream out=conn.getOutputStream();
                        out.write(data.getBytes());
                        out.close();
                    }
                    callBack.success(FileUtils.formatStreamToString(conn.getInputStream()));
                } catch (IOException e) {
                    e.printStackTrace();
                    callBack.failed("操作出错");
                }

            }
        }).start();
    }

    public static void doGet(final URL url,final String data,final CallBack callBack){
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    HttpURLConnection conn=(HttpURLConnection)url.openConnection();
                    conn.setRequestMethod("GET");
                    conn.setConnectTimeout(10*1000);
                    conn.setDoOutput(true);
                    conn.setInstanceFollowRedirects(true);
                    conn.connect();
                    if(data!=null&&data.length()>0){
                        OutputStream out=conn.getOutputStream();
                        out.write(data.getBytes());
                        out.close();
                    }
                    callBack.success(FileUtils.formatStreamToString(conn.getInputStream()));
                } catch (IOException e) {
                    e.printStackTrace();
                    callBack.failed("操作出错");
                }

            }
        }).start();
    }
}

 

CallBack
public interface CallBack {

    public void success(String str);
    public void failed(String str);
}
界面:

手机客服端代码完成。