• 页面返回时保持状态的2种解决思路


    1.在session里面放一个map集合,里面存放各种条件,封装存取方法.感觉这种方法很稳定,但是session里面放太多东西不太好.

    2.将页面地址及所有参数解析出来,拼装成新地址.那么新地址就可以保存所有的参数了.但是这会有些小问题,比如说转发,那么获得的新地址就会是最初的那个,而不是最终转发的那个.解决方法:重定向.

    相关代码:

     HttpServletRequest r = ServletActionContext.getRequest();

     StringBuffer query = new StringBuffer("");
       String uri = r.getRequestURI();

       ActionContext c = ActionContext.getContext();
       Map params = c.getParameters();

       for (Iterator iter = params.keySet().iterator(); iter.hasNext();) {
        Object paramKey = iter.next();
        if (paramKey == null) {
         continue;
        }
        Object paramValue = params.get(paramKey);

        if (paramValue instanceof Object[]) {
         query = query.append(extractToStringBuffer(paramKey, paramValue));
        } else {
         query.append("&");
         query.append(paramKey.toString());
         query.append("=");
         query.append(paramValue.toString());
        }
       }

       uri = uri + query;

    private String extractToStringBuffer(Object param, Object values)
       throws UnsupportedEncodingException {
      String sb = "";

      Object[] objs = (Object[]) values;
      if (objs == null)
       return "";
      if (objs.length == 0)
       return "";

      for (int i = 0; i < objs.length; i++) {
       sb = sb + "&";
       sb = sb + param.toString();
       sb = sb + "=";
       Object v = objs[i];

       sb = sb + v.toString();

      }

      return sb;
     }

  • 相关阅读:
    MySQL 数据库主从复制架构
    程序员的双十一
    MySQL 数据库事务与复制
    十字路口的程序员
    瞬息之间与时间之门
    HDFS 与 GFS 的设计差异
    HDFS 异常处理与恢复
    HDFS Client 设计实现解析
    HDFS DataNode 设计实现解析
    HDFS NameNode 设计实现解析
  • 原文地址:https://www.cnblogs.com/wangjianbg/p/2762254.html
Copyright © 2020-2023  润新知