09-02
01

URL传参过长的解决办法

可能由于URL过长出现的BUG代码:
public void loadingArcHtml(HttpServletResponse response, String msg,
        int pointer, String url, String sumTime) {
    PrintWriter out;
    try {
        out = response.getWriter();
        out
            .print("<LINK rev=stylesheet media=all href=manager/css/css_body.css type=text/css rel=stylesheet>");
        out.println("<meta http-equiv=refresh content=0;url=" + url + ">");
        out.println("<br/><br/><div align=center>");
        out.println(Constants.DIV_CSS1);
        /**
                 * 构造内容页面
                 */

        out.print("<font size=2>" + msg + "");
        out.print("完成创建文件总数的:<b>" + pointer + "%</b></font><br/>");
        out.print(sumTime + "  , <a href=" + url + ">继续执行任务...</a><br/>");
        out.println("<br/><div>");
        out.println("</div>");
    } catch (IOException e) {
        // TODO 自动生成 catch 块
        e.printStackTrace();
    }
    }



改进后,主要是把HQL语句放入POST中提交,POST的长度最大可以达到2K,满足放入HQL的需求:


    /**
         * 人性化进度读取
         * response,提示信息,百分比,链接,总时间
     * @param hiddenAtt TODO
         *
         */
    public void loadingArcHtml(HttpServletResponse response, String msg,
        int pointer, String url, String sumTime, String hiddenAtt) {
    PrintWriter out;
    try {
        out = response.getWriter();
        out .print("<LINK rev=stylesheet media=all href=manager/css/css_body.css type=text/css rel=stylesheet>");
                    out.println("<form name=\"htmlsubmit\" method=\"post\" action="+url+">");
    
        out.println("<input type='hidden' name='hiddenAtt' value='"+hiddenAtt+"'/>");
        out.println("<br/><br/><div align=center>");
        out.println(Constants.DIV_CSS1);
        /**
                 * 构造内容页面
                 */
        out.print("<font size=2>" + msg + "");
        out.print("完成创建文件总数的:<b>" + pointer + "%</b></font><br/>");
        out.print(sumTime + "  , <a href=\"#\" onclick=\"javascript:document.htmlsubmit.submit();\">继续执行任务...</a><br/>");
        out.println("<br/><div>");
        
        out.println("</form>");
        out.println("<script type=\"text/javascript\">document.htmlsubmit.submit();</script>");
        out.println("</div>");
    } catch (IOException e) {
        e.printStackTrace();
    }
    }



可以看出,第一种是完全URL提交方式,利用meta http-equiv=refresh 来更新页面,继续执行。
而第二种是利用表单和js提交方式,由JS来负责每次的页面更新。

[本日志由 blurxx 于 2009-02-01 09:55 AM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: url
相关日志:
评论: 0 | 引用: 0 | 查看次数: 863
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭