您的位置:首页 > 理论基础 > 计算机网络

Android网络编程之一个Android下菜单系统模块的实现(开桌功能))(Android客户端+服务器端Servlet+Mysql)

2014-11-26 20:42 836 查看
为了实现顾客下单的功能,需要在MySQL数据库的中设置一张表:ordertbl



 

然后在服务器端的Wireless项目下的com.moka.entity包中新建一个此表的对象类Order,就像登录部分的User一样:



/**
*    用于封装OrderTbl表的实体类
*/
public class Order {
// 此订单编号
private int id;
// 下单时间
private String orderTime;
// 操作用户id
private int userId;
// 开桌台号
private int tableId;
// 此桌人数
private int personNum;
// 结算否
private int isPay;
// 备注
private String remark;

// getters & setters .. 省略


 

同样,在对应包中建立对于ordertbl表的数据访问对象OrderDao与OrderDaoImpl,他们封装了所有对ordertbl的数据操作:

public interface OrderDao {
// 保存开桌信息
public int saveOrder(Order order);

// 保存菜表信息
public void saveOrderDetail(OrderDetail orderDetail);

// 更新桌号状态, 有人
public void updateTableStatus(int tableId);

// 更新桌号状态, 空位
public void updateTableStatus2(int orderId);
}




public class OrderDaoImpl implements OrderDao {

@Override
public int saveOrder(Order order) {
// jdbc连接数据库准备工作
DBUtil util = new DBUtil();
Connection conn = util.openConnection();

// 插入数据库操作用
String saveOrderSql = "insert into ordertbl (orderTime, userId, tableId, personNum) values (?, ?, ?, ?)";
PreparedStatement ps = null;

// 读取最新订单号操作用
Statement statement = null;
ResultSet orderIdSet = null;
try {
ps = conn.prepareStatement(saveOrderSql);
ps.setString(1, order.getOrderTime());
ps.setInt(2, order.getUserId());
ps.setInt(3, order.getTableId());
ps.setInt(4, order.getPersonNum());
ps.executeUpdate();

// 返回此订单编号,因为id为自增主键,所以取其最大即为最新订单号
String returnOrderIdSql = "select max(id) as id from ordertbl";
statement = conn.createStatement();
orderIdSet = statement.executeQuery(returnOrderIdSql);
if (orderIdSet.next()) {
// 获得订单号
int id = orderIdSet.getInt(1);
return id;
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (orderIdSet != null) {
orderIdSet.close();
orderIdSet = null;
}
if (statement != null) {
statement.close();
statement = null;
}
if (ps != null) {
ps.close();
ps = null;
}
if (conn != null) {
conn.close();
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return 0;
}

@Override
public void updateTableStatus(int tableId) {
// jdbc连接数据库准备工作
DBUtil util = new DBUtil();
Connection conn = util.openConnection();

// 更新此桌状态操作用
String updateSql = "update tabletbl set flag = 1 where id = ?";
PreparedStatement ps = null;
try {
// 此桌已订出, table表中flag置位
ps = conn.prepareStatement(updateSql);
ps.setInt(1, tableId);
ps.executeUpdate();

} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (ps != null) {
ps.close();
ps = null;
}
if (conn != null) {
conn.close();
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}

@Override
public void updateTableStatusEx(int orderId) {
// 此处暂时不做操作
}

}


 

然后写StartTableServlet处理请求与响应:



public class StartTableServlet extends HttpServlet {

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setContentType("text/html");
// 获取输出打印流
PrintWriter pw = new PrintWriter(resp.getOutputStream());

// 读取请求中的order数据
String orderTime = req.getParameter("orderTime");
String userId = req.getParameter("userId");
String tableId = req.getParameter("tableId");
String personNum = req.getParameter("personNum");

// 将他们放入实例化的Order对象封装起来
Order order = new Order();
order.setOrderTime(orderTime);
order.setUserId(Integer.parseInt(userId));
order.setTableId(Integer.parseInt(tableId));
order.setPersonNum(Integer.parseInt(personNum));

// 定单数据存入MySQL端,更新对应桌号是否有人的状态,并获得返回的订单号传回客户端
OrderDao orderDao = new OrderDaoImpl();
int orderId = orderDao.saveOrder(order);
orderDao.updateTableStatus(Integer.parseInt(tableId));
pw.print(orderId);
pw.flush();
pw.close();
}

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doGet(req, resp);
}

}


 

最后注册新的servlet:

<servlet>
<servlet-name>StartTableServlet</servlet-name>
<servlet-class>com.moka.servlet.StartTableServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>StartTableServlet</servlet-name>
<url-pattern>/servlet/StartTableServlet</url-pattern>
</servlet-mapping>


至此服务器端搭建完毕
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  servlet java mysql tomcat
相关文章推荐