09-02
01
URL传参过长的解决办法
作者:Java伴侣 日期:2009-02-01
可能由于URL过长出现的BUG代码:
改进后,主要是把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来负责每次的页面更新。
复制内容到剪贴板 程序代码
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();
}
}
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来负责每次的页面更新。
评论: 0 | 引用: 0 | 查看次数: 896
发表评论