安卓与IOS通过hessian接口实现用友系统移动手机订单2服务器端Servlet实现

7 篇文章 0 订阅
7 篇文章 0 订阅

                                                    二:服务器端实现

    服务器端架构采用TomCat+JAVA+hessian接口来实现
1:TomCat采用apache-tomcat-6.0.20免安装版。
2:hessian包:包括hessian-3.1.5.jar、gson-2.2.1.jar两个包,在Eclipse中导入即可。
3:实体类的实现,以客户为例,实现Serializable接口,并实现变量的get和set。实体类的作用,是用来在数据传输过程中对数据的包装,只包含数据库表中需要传输的字段。
public class CustomerHessian implements Serializable {
 private static final long serialVersionUID = 201307091929L;
    // 客户编码
    protected String cCusCode = "";
    public String getCCusCode() {  return cCusCode;  }
    public void setCCusCode(String aCCusCode) { cCusCode = aCCusCode; }
    // 客户名称
    protected String cCusName = "";
    public String getCCusName() {  return cCusName;  }
    public void setCCusName(String aCCusName) { cCusName = aCCusName; }
}
4:接口类,包含所有服务器端接口的定义

public abstract interface HessianAPI {
 public abstract String UFuserLogin(String paramString1, String paramString2);//用户登录验证
 public abstract String CustomerList(String cPersonCode,String search,int pagecurrent,int pagesize);//客户列表
}
5:实现类,以客户和登录为例,由于客户表没有自增的ID号,分页采用sql2005的RowNumber,每次只取当前页的数据。。
import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.caucho.hessian.server.HessianServlet;
import com.google.gson.Gson;
import com.uf.hessian.CustomerHessian;
import com.uf.hessian.DispatchListHessian;
import com.uf.hessian.DispatchListsHessian;
import com.uf.hessian.InventoryHessian;
import com.uf.hessian.SendOrderHessian;
import com.uf.software.util.Tool;

public class HessianApiImpl extends HessianServlet implements HessianAPI {
 private static final long serialVersionUID = 20130814132348L;
 public String UFuserLogin(String paramString1, String paramString2) {
  String resultStr = "";
  String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
  String dbURL = "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=UFMobile";
        String userName = "sa";
        String userPwd = "";
        Connection dbConn=null;
        Statement stmt=null;  
        ResultSet rs;
        try {
            Class.forName(driverName);
             dbConn = DriverManager.getConnection(dbURL,userName,userPwd);
            String sql = "Select * From Person where cPersonCode='" + paramString1 + "' and cPersonPwd='" + Tool.getDigestMD5(paramString2) + "'";
            stmt = dbConn.createStatement();
            rs = stmt.executeQuery(sql);
            while(rs.next()) {
             //System.out.println(rs.getString("cPersonCode") + ", " + rs.getString("cPersonPwd"));
             resultStr=rs.getString("cPersonCode")+","+rs.getString("cPersonName")+","+rs.getString("cPosition")+","+rs.getString("cUpPerson")+","+rs.getString("cDepCode");
             }
         } catch (Exception e) {
             e.printStackTrace();
         }finally {
             if (dbConn != null) {
                 try { dbConn.close(); }
                 catch (Exception e) { e.printStackTrace(); }
             }
             if (stmt != null) {
                   try { stmt.close(); }
                   catch (Exception e) { e.printStackTrace(); }
             }
         }
  return resultStr;
 }
 //客户列表
    public  String CustomerList(String cPersonCode,String search,int pagecurrent,int pagesize) {
     String str = "";
     int total_recorder=0;
     Gson gson = new Gson();
     List<CustomerHessian> list = new ArrayList<CustomerHessian>();
     UserCode pv= new UserCode();
      String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
     String dbURL = "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=UFDATA_001_2013";
         String userName = "sa";
         String userPwd = "";
         Connection dbConn=null;
         Statement stmt=null;  
         ResultSet rs;
         try {
             Class.forName(driverName);
             dbConn = DriverManager.getConnection(dbURL,userName,userPwd);
             String sql = "Select count(*) From Customer where cCusPPerson='"+cPersonCode+"'";
             stmt = dbConn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
             rs = stmt.executeQuery(sql);
             while(rs.next()) {
              total_recorder=rs.getInt(1);
               }
          } catch (Exception e) {
              e.printStackTrace();
          }finally {
              if (dbConn != null) {
                  try { dbConn.close(); }
                  catch (Exception e) { e.printStackTrace(); }
              }
              if (stmt != null) {
                    try { stmt.close(); }
                    catch (Exception e) { e.printStackTrace(); }
              }
          }
   //当前页
      int currpage;
      if(Integer.toString(pagecurrent).length()<1){
        currpage = 1;
      }else{
        currpage = pagecurrent;
      }
      //每页显示条数
      int offset = 0;//当前页面显示从第几条开始的数据
      int shownum = 0;//当前页面显示数据数量
      int lastpage = 0;//最后一页
      int perNo = 6;//每页显示页数
      int pagecurrentize=perNo;
    //总页数
      int total_page = (int)Math.ceil((double)total_recorder / (double)pagesize);
      lastpage = total_page;
      offset = pagesize * (currpage - 1);
      if(currpage >= lastpage) {
                  shownum = total_recorder - offset;
              } else {
                  shownum = pagesize;
      }
      try {
             Class.forName(driverName);
             dbConn = DriverManager.getConnection(dbURL,userName,userPwd);
             String sql = "SELECT * FROM (SELECT *,ROW_NUMBER() OVER (ORDER BY a.cCusCode ASC) AS RowNumber FROM Customer AS a) AS b where cCusPPerson='"+cPersonCode+"'";
             if (search.trim().length() > 0) {
              sql=sql+" and cCusName like '%" + search + "%'";
       }
             sql=sql+" and RowNumber BETWEEN " + (offset+1) + " AND " + (offset + pagesize);
             stmt = dbConn.createStatement();
             rs = stmt.executeQuery(sql);
             while(rs.next()) {
                CustomerHessian vh = new CustomerHessian();
                vh.setCCusCode(rs.getString("cCusCode"));
                vh.setCCusName(rs.getString("cCusName"));
           list.add(vh);
              }
          } catch (Exception e) {
              e.printStackTrace();
          }finally {
              if (dbConn != null) {
                  try { dbConn.close(); }
                  catch (Exception e) { e.printStackTrace(); }
              }
              if (stmt != null) {
                    try { stmt.close(); }
                    catch (Exception e) { e.printStackTrace(); }
              }
          }
     java.lang.reflect.Type type = new com.google.gson.reflect.TypeToken<List<CustomerHessian>>(){}.getType();
     str = gson.toJson(list, type);
     return str;
  }

}
6:价格计算,采用JAVA的BigDecimal计算,四舍五入一律先计算结果最后后四舍五入。不能一个结果四舍五入后再计算。
    String iUnitPrice=Double.toString(new BigDecimal(iQuotedPrice).divide(new BigDecimal("1.17"),2,BigDecimal.ROUND_HALF_UP).doubleValue());//原币无税单价
7:Servlet配置:
     <servlet>
        <servlet-name>HessianInterface</servlet-name>
        <servlet-class>com.company.HessianApiImpl</servlet-class>
    </servlet>
   <servlet-mapping>
        <servlet-name>HessianInterface</servlet-name>
        <url-pattern>/Hessian/HessianApiImpl</url-pattern>
    </servlet-mapping>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值