与客户端对接用户信息的保存方式



在日常开发中,少不了与客户端进行通信,然而一些用户数据是怎么保存比较好的呢


1.保存在服务器端 传给客户端sessionid ,客户端每次之后每次请求都需要传入该sessionid,服务器验证

 
   
  1. //调用
  2. httpPost.setHeader("Cookie", "JSESSIONID=2F616197147E641684F30570028E4535");
  3. //处理
  4. public ActionForward clientmanage(ActionMapping mapping, ActionForm form,
  5. HttpServletRequest request, HttpServletResponse response)throws Exception {
  6. response.setCharacterEncoding("utf-8");
  7. //保存xml传过来的参数
  8. Map<String,String> inputMap = new HashMap<String, String>();
  9. Map<String,Object> xmlMap=new HashMap<String, Object>();
  10. //标识
  11. String tflag = "";
  12. //返回xml
  13. String xml = "";
  14. // StringBuffer sb = new StringBuffer();
  15. BufferedReader br = null;
  16. String xmlstr = request.getParameter("xml");
  17. //解析xml
  18. try{
  19. SAXReader reader = new SAXReader();
  20. // BufferedReader reReader = request.getReader();
  21. //
  22. // String line=reReader.readLine();
  23. // while(line!=null){
  24. // sb.append(line);
  25. // line=reReader.readLine();
  26. // }
  27. // reReader.reset();
  28. //HTTP请求
  29. if(!StringUtils.isEmpty(xmlstr)){
  30. ByteArrayInputStream bos = new ByteArrayInputStream(xmlstr.getBytes());
  31. InputStreamReader ir = new InputStreamReader(bos);
  32. br = new BufferedReader(ir);
  33. }else{
  34. br = request.getReader();
  35. }
  36. Document document = reader.read(br); //读取XML文件
  37. Element root = document.getRootElement(); // 得到根节点
  38. for(Element e : (List<Element>)root.elements()){
  39. inputMap.put(e.getName(), e.getTextTrim());
  40. xmlMap.putAll(XmlParserUtil.parseXml(e,true));
  41. }
  42. System.out.println("get------"+inputMap);
  43. //客户手机类型
  44. String clientType = request.getParameter("client");
  45. inputMap.put("client",StringUtils.isEmpty(clientType) ? "" : clientType);
  46. //保存sessionid
  47. inputMap.put("sessionid", request.getSession().getId());
  48. //获取当前登录用户信息
  49. Users user = (Users) RequestUtil.getSessionInfo(request, "user", null);
  50. if(user!=null){
  51. inputMap.put("userid", user.getId().toString());
  52. xmlMap.put("userid", user.getId().toString());
  53. xmlMap.put("usercode", user.getUsercode());
  54. inputMap.put("usercode", user.getUsercode());
  55. }else{
  56. xml="<?xml version=\"1.0\" encoding=\"UTF-8\"?><XMLInfo><message><status>"+
  57. Constants.CLIENT_MANAGE_INFO_STATUS.TIMEOUT.value()
  58. +"</status><errorInfo>请您先登陆系统!</errorInfo></message></XMLInfo>";
  59. }
  60. tflag = inputMap.get("tflag");
  61. //根据标识调用相关方法
  62. if("login".equals(tflag)){//用户登录
  63. xml = ClientManage.login(request,oaClientService,drpRandomCheckService,oaRandomChcekService,inputMap);
  64. }else if("logincrm".equals(tflag)){//内部使用接口,不验证IMEI码
  65. xml = ClientManage.logincrm(request,oaClientService, inputMap);
  66. }else if(!"".equals(xml)){
  67. }else if("search".equals(tflag) ||"sort".equals(tflag)){//信息搜索 or 分类信息列表
  68. xml = ClientManage.search(request,oaClientService, inputMap);
  69. }else if("home".equals(tflag)){//主页部门列表
  70. xml = ClientManage.home(oaClientService, inputMap);
  71. }else if("cpwd".equals(tflag)){//密码修改
  72. xml = ClientManage.cpwd(request,oaClientService,inputMap);
  73. }else if("rimei".equals(tflag)){//IMEI申请
  74. xml = ClientManage.rimei(oaClientService,inputMap);
  75. }else if("mview".equals(tflag)){//信息查看
  76. if(!StringUtils.isEmpty(xmlstr)){
  77. xml = ClientViewmsgUtil.viewMsgCDATA(request,oaClientService,oaProveManageService, inputMap);
  78. } else{
  79. xml = ClientViewmsgUtil.viewMsg(request,oaClientService,oaProveManageService, inputMap);
  80. }
  81. }else if("enum".equals(tflag)){//枚举数据
  82. xml = ClientGetEnumListUtil.getMessageByEnum(oaClientService, inputMap);
  83. }else if("ctdeptpeople".equals(tflag)){//部门和人员信息列表获取接口
  84. xml = ClientManage.ctdeptpeople(oaClientService,inputMap);
  85. }else if("ctpeople".equals(tflag)){//人员信息获取接口
  86. xml = ClientManage.ctpeople(oaClientService,inputMap);
  87. }else if("ctpsearch".equals(tflag)){//人员信息获取接口
  88. xml = ClientManage.ctpsearch(oaClientService,inputMap);
  89. }else if("cturlist".equals(tflag)){//意见反馈信息列表获取接口
  90. xml = ClientManage.cturlist(oaClientService,inputMap);
  91. }else if("cturnew".equals(tflag)){//意见反馈新增接口
  92. xml = ClientManage.cturnew(oaClientService,inputMap);
  93. }else if("cturrepay".equals(tflag)){//意见反馈新增接口
  94. xml = ClientManage.cturrepay(oaClientService,inputMap);
  95. }else if("cturrinfo".equals(tflag)){//意见反馈回复信息列表接口
  96. xml = ClientManage.cturrinfo(oaClientService,inputMap);
  97. }else if("crlist".equals(tflag)){//信息参考信息列表获取接口
  98. xml = ClientManage.crlist(oaClientService,inputMap);
  99. }else if("crsinfo".equals(tflag)){//信息参考详细信息列表接口
  100. xml = ClientManage.crsinfo(oaClientService,inputMap);
  101. }else if("crvinfo".equals(tflag)){//信息参考内容查看接口
  102. xml = ClientManage.crvinfo(oaClientService,inputMap);
  103. }else if("qdept".equals(tflag)){//巡店部门信息列表获取接口-qdept
  104. xml = ClientManage.qdept(oaClientShopVisitService, inputMap);
  105. }else if("qdsearch".equals(tflag)){ //巡店部门信息搜索接口-qdsearch
  106. xml = ClientManage.qdsearch(oaClientShopVisitService, inputMap);
  107. }else if("qdeptnew".equals(tflag)){//巡店信息提交接口-qdeptnew
  108. xml =ClientManage.qdeptnew(oaClientShopVisitService, inputMap);
  109. }else if("qrsendorget".equals(tflag)){//巡店问题结果提交和获取接口-qrsendorget
  110. xml = ClientManage.qrsendorget(oaClientShopVisitService, inputMap);
  111. }else if("sdcollect".equals(tflag)){//销售数据销售查询汇总接口-sdcollect
  112. xml = ClientManage.sdcollect(oaUserSaleReportService, inputMap);
  113. }else if("sddetail".equals(tflag)){//销售数据销售查询明细接口-sddetail
  114. xml = ClientManage.sddetail(oaUserSaleReportService, inputMap);
  115. }else if("sdtop".equals(tflag)){//销售数据销售排行接口-sdtop
  116. xml = ClientManage.sdtop(oaUserSaleReportService, inputMap);
  117. }else if("strdcheck".equals(tflag)){//随机盘点单列表接口-strdcheck
  118. xml= ClientManage.strdcheck(drpRandomCheckService, inputMap);
  119. }else if("strdckitem".equals(tflag)){//随机盘点单列表商品明细获取接口-strdcheck
  120. xml= ClientManage.strdckitem(drpRandomCheckService, inputMap);
  121. }else if("mstrdckitem".equals(tflag)){//随机盘点单商品串码更新接口-mstrdckitem
  122. xml= ClientManage.mstrdckitem(drpRandomCheckService,oaRandomChcekService,xmlMap);
  123. }else if("mprove".equals(tflag)){//OA公文证明数据更新接口-mprove
  124. xml= ClientManage.mprove(oaProveManageService,inputMap);
  125. }else if("datamsgs".equals(tflag)){//OA数据分发列表-datamsgs
  126. xml= ClientManage.datamsgs(oaGatherDataService, inputMap);
  127. }else if("datamsgdetail".equals(tflag)){//OA数据分发详情 - datamsgdetail
  128. xml= ClientManage.datamsgdetail(oaGatherDataService, inputMap);
  129. }else if("mdatamsgdetail".equals(tflag)){//修改数据分发详情 - mdatamsgdetail
  130. xml= ClientManage.mdatamsgdetail(oaGatherDataService, xmlMap);
  131. }
  132. }catch(Exception e){
  133. e.printStackTrace();
  134. if(br != null){
  135. br.close();
  136. br = null;
  137. }
  138. logger.error("手机客户程序异常:"+e.getMessage());
  139. // logger.error("异常XML:"+sb.toString());
  140. logger.error("传递参数异常,导致解析xml失败!");
  141. xml="<?xml version=\"1.0\" encoding=\"UTF-8\"?><XMLInfo><message><status>1</status><errorInfo>传递参数异常,导致解析xml失败!</errorInfo></message></XMLInfo>";
  142. }
  143. //HTTP请求
  144. logger.info("output xml -------------"+xml);
  145. System.out.println("out------"+xml);
  146. if(!StringUtils.isEmpty(xmlstr)){
  147. response.setContentType("text/xml");
  148. response.setCharacterEncoding("utf-8");
  149. PrintWriter writer = response.getWriter();
  150. writer.write(xml);
  151. writer.close();
  152. return null;
  153. }
  154. //暂时不处理gzip压缩
  155. // GZIP压缩处理
  156. ByteArrayOutputStream out = new ByteArrayOutputStream();
  157. GZIPOutputStream gzip=new GZIPOutputStream(out);
  158. gzip.write(xml.getBytes("UTF-8"));
  159. gzip.close();
  160. byte[] outbyte=out.toByteArray();
  161. int length=out.toByteArray().length;
  162. response.setContentLength(length);
  163. OutputStream put=response.getOutputStream();
  164. put.write(outbyte);
  165. put.close();
  166. // PrintWriter pw = response.getWriter();
  167. // pw.print(xml);
  168. return null;
  169. }


2.存入客户端,这个可以缓存到客户端数据库 比如sqlite 登录状态的话用户可以手动清理 (android源码中有)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值