新手之服务端创建服务以及客户端的实现

1.首先安装MyEclipse,并且在MySQL中创建你想要用的表(包括其中的各种属性如id name等等)

2.  在MyEclipse中创建一个web工程。

 1)要导入相应的jar包: /Shop/WebRoot/WEB-INF/lib下粘贴进入
        2个jar包如下:

        gson.jar和mysql_connector_java_5.1.31_bin.jar  

        同时导入一个工具类JUtil工具类用于连接MySQL数据库在其中一定要更改你的数据库端口号和数据库名字,如果数据库用户名和密码也更改过。也要进行更改;
 
   
package com.oracle.shop.dao;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
 
/**
*
* ClassName:JUtil
* Function: 数据库连接工具
* Reason: TODO ADD REASON
*
* @author epal
* @version
* @since Ver 1.1
* @Date 2015 2015年9月21日 上午10:00:14
*
* @see
*/
public class JUtil {
private Connection conn = null;
private Statement stmt = null;
private ResultSet rslt = null;
private Connection getConn() {
try {
// Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
// conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=shop", "sa", "123");
Class.forName("com.mysql.jdbc.Driver");
//重要的地方。此处更改成你MySQL数据库的端口号和名字
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/XLF?user=root&password=123456");
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
//获取连接状态
private Statement getStmt() {
try {
stmt = getConn().createStatement();
} catch (Exception e) {
e.printStackTrace();
}
return stmt;
}
//执行sql语句,并返回 游标 ResultSet=cursor
public ResultSet query(String sql) {
try {
System.out.println(sql);
rslt = getStmt().executeQuery(sql);
} catch (Exception e) {
e.printStackTrace();
}
return rslt;
}
//更新 可以执行 删除 更新 插入方法 -1表示失败
public int update(String sql) {
try {
System.out.println(sql);
return getStmt().executeUpdate(sql);
} catch (Exception e) {
e.printStackTrace();
} finally {
close();
}
return -1;
}
//关闭
public void close() {
try {
if (rslt != null) {
rslt.close();
}
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}

 2)创建服务端需要应答的实体类:如commonbean  ,registbean,loginbean,goodsbean,goodlistbean等 等!

3创建相应的服务(不要用class继承的方法。它不会再web.xml中注册,服务开不起来 ),实现 doGet  doPost方法;

4.在 doGet  doPost中完成相应代码的处理!
   1)如doGet方法的实现:在helloworl工程中;
 
   
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 回复编码GBK 也就是GB2312 台湾用户是Big5
response.setContentType("text/html;charset=GBK");
// 设置回复的编码
response.setCharacterEncoding("utf-8");
// 回复的输出对象
request.setCharacterEncoding("utf-8");
// 获取name
String username = request.getParameter("username");
// 获取psw
String password = request.getParameter("password");
PrintWriter out = response.getWriter();
System.out.println("手机端传过来的值"+username+password);
if(username.equals("aa")&&password.equals("123")){
out.println("登陆成功");
}else{
out.println("用户名或密码不正确");
}
// 输出内容结束后刷新
out.flush();
// 关闭输出
out.close();
}
    2)doPost方法的实现:在shop工程中;
 
   
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
 
response.setContentType("text/html;charset=GBK");
// 设置回复的编码
response.setCharacterEncoding("utf-8");
request.setCharacterEncoding("utf-8");
 
PrintWriter out = response.getWriter();
// 新建JUtil 对象
JUtil jUtil = new JUtil();
// 统一应答对象
CommonBean bean = new CommonBean();
// 游标对象
ResultSet resultSet = null;
// Gson 解析类
// toJson :把实体 转换成string
// fromJsom:把 string转换成实体
Gson gson = new Gson();
try {
// 接受客户端传来的数据 key值为MSG values默认是Json型数据
String sendMSG = request.getParameter("MSG");//
if (sendMSG.equals("")) {
bean.setResultCode("1");
bean.setFailuerReason("客户端上传数据为空");
 
} else {
// 将客户端传过来的Json型String串 转换成RegistBean实体类
RegistBean regist = gson.fromJson(sendMSG, RegistBean.class);
String username = regist.getUsername();// 客户端传过来的名字
resultSet = jUtil
.query("select * from userinfo where username='"
+ username + "'");
if (resultSet.next()) {
bean.setResultCode("1");
bean.setFailuerReason("用户名已存在");
} else {
int successCode = jUtil
.update("insert into userinfo(username,password,phonenumber,email,sex) values ('"
+ regist.getUsername()
+ "','"
+ regist.getPassword()
+ "','"
+ regist.getPhonenumber()
+ "','"
+ regist.getEmail()
+ "','"
+ regist.getSex() + "')");
if (successCode == -1) {//表示insert成功
bean.setResultCode("1");
bean.setFailuerReason("服务端异常");
} else {
bean.setResultCode("0");
}
}
}
resultSet.close();
} catch (Exception e) {
e.printStackTrace();
bean.setResultCode("1");
bean.setFailuerReason("客户端上传数据为空");
}
out.println(gson.toJson(bean));// 将统一 应答数据转换成json型的串
// 输出结束刷新
out.flush();
// 恢复关闭
out.close();
}
5.开启服务。
        前提是要在你建好服务要添加Tomcat7或者其他版本的tomcat;当服务开启成功就可开始测试了;用HttpDebug工具测试服务是否好用以及相应的逻辑是否正确,可以用过本地的cmd查询你本机的IP在cmd输入“ipconfig”.

6.测试成功就可以进行客户端的编写了:打开eclipse创建一个安卓工程;创建和服务端相同的实体类,同时创建一个工具类存储你的所有接口:如下
 
   
package com.xlf.utils;
 
/**
* ClassName:PublicStatics Function: 全局的静态变量类
*
* @author 疯子
* @version
* @since Ver 1.1
* @Date 2015-12-22 上午10:11:55
*
* @see
*/
public class PublicStatics {
// 登陆的接口
public static String LogInUrl = "http://192.168.1.173:8080/Shop/servlet/LoginServlet?";
// 注册接口
public static String RegistUrl = "http://192.168.1.173:8080/Shop/servlet/RegistServlet?";
// 商品接口
public static String GoodsUrl = "http://192.168.1.173:8080/Shop/servlet/GoodsServlet?";
}
7.创建相应的布局等等,然后通过post的方式,注册提交部分数据代码如下:其中使用了一个httputils的工具类用于获            得get或者post提交的对象向服务器提交数据,封装好的方法
 
   
public class MyThread extends Thread {
 
@Override
public void run() {
// 初始化http工具类
HttpUtils httpUtils = new HttpUtils();
// Gson初始化
Gson gson = new Gson();
// 统一应答的实体类
CommonBean common = new CommonBean();
// 转换成String json型的串
String sendMSG = gson.toJson(regist);
try {
// 请求结果
System.out.println("发送的数据"+regist.getUsername()+password+phonenumber+email+sex);
String result = httpUtils.myPost(PublicStatics.RegistUrl,
sendMSG);
System.out.println("服务端返回的数据"+result);
common = gson.fromJson(result, CommonBean.class);
System.out.println("返回注册结果"+common.getResultCode());
if (common.getResultCode().equals("0")) {// 注册成功
 
handler.sendEmptyMessage(0);
 
} else{// 失败 以及失败原因
Message message = new Message();
message.obj = common.getFailuerReason();
message.what=1;
handler.sendMessage(message);
}
} catch (Exception e) {
e.printStackTrace();
}
 
}
 
}

你可能感兴趣的:(新手之服务端创建服务以及客户端的实现)