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




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


    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源码中有)
  • 相关阅读:
    《剑指Offer》题目:跳台阶
    《剑指Offer》题目:变态跳台阶
    《剑指Offer》题目:二叉树的镜像
    《剑指Offer》题目:树的子结构
    《剑指Offer》题目:合并两个排序的链表
    《剑指Offer》题目:链表中倒数第k个结点
    《剑指Offer》题目:调整数组顺序使奇数位于偶数前面
    Nginx配置http强制跳转到https
    并查集详解(转)
    AKOJ -- 1529 -- 寻找最大数
  • 原文地址:https://www.cnblogs.com/signheart/p/6595664.html
Copyright © 2020-2023  润新知