zoukankan      html  css  js  c++  java
  • 页面返回时保持状态的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;
     }

  • 相关阅读:
    go相关
    mac下使用vscode技巧
    mac下secureCRT的使用技巧
    python subprocess实时输出
    python中多级目录导入模块问题
    python的print与sys.stdout
    python中类相关笔记
    python中sys.stdout.flush()的作用
    nginx+uwsgi配置
    虚拟机的 基本配置
  • 原文地址:https://www.cnblogs.com/wangjianbg/p/2762254.html
Copyright © 2011-2022 走看看