请教一个JSP问题,out.write()输出不了内容,很郁闷。。。

SasONsoft 2012-09-05 05:06:00

<%
out.println("1111");
session = request.getSession();
if(session.getAttribute("msg_loginerr")!=null) {
out.println("2222");
System.out.println(session.getAttribute("msg_loginerr") + "------script11111");
%>
<script type="text/javascript">

function(){

$("div#panel").show();
$("#toggle a").toggle();
}

</script>
<%
System.out.println(session.getAttribute("msg_loginerr") + "------script22222");
}
%>




上面的代码执行之后的页面源码中的这块内容只有 :1111

tomcat后台成功输出了System.out.println()打印的两条语句。

中间想要加上的js代码却不见踪影。。。。。。

下面是生成的servlet代码:



out.println("1111");
session = request.getSession();
if(session.getAttribute("msg_loginerr")!=null) {
out.println("2222");
System.out.println(session.getAttribute("msg_loginerr") + "------script11111");

out.write("\r\n");
out.write("\t\t<script type=\"text/javascript\">\r\n");
out.write("\t\r\n");
out.write("\t\tfunction(){\r\n");
out.write("\t\t\r\n");
out.write("\t\t\t$(\"div#panel\").show();\r\n");
out.write("\t\t\t$(\"#toggle a\").toggle();\r\n");
out.write("\t\t}\r\n");
out.write("\t\r\n");
out.write("\t\t</script>\r\n");
out.write("\t");

System.out.println(session.getAttribute("msg_loginerr") + "------script22222");
}



麻烦各位给盘盘眼
...全文
419 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
cxw3152 2012-09-05
  • 打赏
  • 举报
回复
out.flush();
out.close();
SasONsoft 2012-09-05
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

out.flush(); 的作用是立即向浏览器端发送数据,不要等到缓冲区满才发送。

那么。。。如果在 if 语句体外增加 out.println(); 有内容输出么?
<%
System.out.println(session.getAttribute("msg_loginerr") + "------script22222");
}
out.println("3333333……
[/Quote]

呃~我找到原因了。。。多谢老兄耐心解答
SasONsoft 2012-09-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

显然是:
if(session.getAttribute("msg_loginerr")!=null) {
条件没有成立吧,所以括号内的相关代码就都没有执行了。
[/Quote]

我换了种写法:


<%
String script = null;
session = request.getSession();
if(session.getAttribute("msg_loginerr")!=null) {
System.out.println(session.getAttribute("msg_loginerr") + "==========");
script = "<script type=\"text/javascript\">function(){$(\"div#panel\").show();$(\"#toggle a\").toggle();}</script>";
}
%>


<%=script%>



结果:null
有输出

。。。。。。。。。。。。。。。。
MiceRice 2012-09-05
  • 打赏
  • 举报
回复
out.flush(); 的作用是立即向浏览器端发送数据,不要等到缓冲区满才发送。

那么。。。如果在 if 语句体外增加 out.println(); 有内容输出么?
<%
System.out.println(session.getAttribute("msg_loginerr") + "------script22222");
}
out.println("33333333333"); // if 结束后
out.flush();
%>
SasONsoft 2012-09-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

那么还有另一种可能,就是后面出错了。

楼主加一句话试试看:
<%
out.flush(); // 就加这句话再试试看,如果能输出,说明后面有代码出错了。
System.out.println(session.getAttribute("msg_loginerr") + "------script22222");
}
%>
[/Quote]

在这添加这句有什么作用不太清楚
添加了还是没有。。。out的话会往response缓冲的吧?response再一次性返回?
MiceRice 2012-09-05
  • 打赏
  • 举报
回复
那么还有另一种可能,就是后面出错了。

楼主加一句话试试看:
<%
out.flush(); // 就加这句话再试试看,如果能输出,说明后面有代码出错了。
System.out.println(session.getAttribute("msg_loginerr") + "------script22222");
}
%>
SasONsoft 2012-09-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

上面的代码执行之后的页面源码中的这块内容只有 :1111

说明 if(session.getAttribute("msg_loginerr")!=null) { 不成立

但lz又说 tomcat后台成功输出了System.out.println()打印的两条语句。

很让人费解
[/Quote]

是的,要不我也不来发帖问了。。。
SasONsoft 2012-09-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

显然是:
if(session.getAttribute("msg_loginerr")!=null) {
条件没有成立吧,所以括号内的相关代码就都没有执行了。
[/Quote]


sysout的语句输出了呀。。。
cscript 2012-09-05
  • 打赏
  • 举报
回复
上面的代码执行之后的页面源码中的这块内容只有 :1111

说明 if(session.getAttribute("msg_loginerr")!=null) { 不成立

但lz又说 tomcat后台成功输出了System.out.println()打印的两条语句。

很让人费解
MiceRice 2012-09-05
  • 打赏
  • 举报
回复
显然是:
if(session.getAttribute("msg_loginerr")!=null) {
条件没有成立吧,所以括号内的相关代码就都没有执行了。

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧