关于jsp中out.print的一个问题

<%@pagecontentType="text/html;Charset=GB2312"%><html><body><%Strings=request.getParam... <%@ page contentType="text/html;Charset=GB2312"%>
<html>
<body>
<%
String s=request.getParameter("cha");
if(s.equals("dengji"))
out.print("<jsp:forward page=\"bylevel.jsp\"/>");
if(s.equals("xingming"))
out.print("<jsp:forward page=\"byname.jsp\"/>");
if(s.equals("huiyuanhao"))
out.print("<jsp:forward page=\"bynumber.jsp\"/>");
%>
</body>
</html>
这样写有问题,咋样改正过来呢,麻烦说明理由,谢
展开
 我来答
mjnls
2011-04-23 · 超过38用户采纳过TA的回答
知道小有建树答主
回答量:105
采纳率:0%
帮助的人:82.4万
展开全部
把所有的print改成write,原因如下:
out:JspWriter对象表示服务器端向客户浏览器输出的流,但是这个流会在response中进行缓冲,并不是直接向客户输出。在一个servlet中,所有的流写入语句执行完后,servlet会把这些语句的缓存内容打包成http响应返回给浏览器。有一个现象不知道你注意了没?有一个方法:setHeader(还是setHead我忘了),他是设置http响应头的。不管你多晚才执行了setHeader,setHeader之前有多少个out.print,最终返回给浏览器的数据中setHeader的内容肯定在out.print内容的前面,这可以证明out的内容会被先缓存。所以out的内容会被先缓存在response中,最后再一次性给浏览器。
对于print和write。除了字符集以外。这两个是没有多大区别的,因为JspWriter继承了Writer类,而这个类就实现了这两个方法。事实上System.out这个流也是一个Writer,Writer这个设计模式是一个历史遗留,是一个不好的模式,受到很多人的批评。所以这两个方法你不用管它。print默认使用本身字符集
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yybolou
2015-10-27 · TA获得超过2889个赞
知道小有建树答主
回答量:2516
采纳率:0%
帮助的人:984万
展开全部
<%=%>和out.print()没有谁对谁错,也就是说前面列子中如果一开始我在jsp中写的是<%=%>同样会发生这个问题,而且解决方法居然是相反的把<%=%>改为out.print()就可以了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
倾城的秘密丶c5928
推荐于2016-09-28 · TA获得超过233个赞
知道小有建树答主
回答量:214
采纳率:0%
帮助的人:216万
展开全部
//这么写
<%@ page contentType="text/html;Charset=GB2312"%>
<html>
<body>
<%
String s=request.getParameter("cha");
if(s.equals("dengji"))
//out.print("<jsp:forward page=\"bylevel.jsp\"/>");
response.sendRedirect("bylevel.jsp");
if(s.equals("xingming"))
//out.print("<jsp:forward page=\"byname.jsp\"/>");
response.sendRedirect("byname.jsp");

if(s.equals("huiyuanhao"))
//out.print("<jsp:forward page=\"bynumber.jsp\"/>");
response.sendRedirect("bynumber.jsp");

%>
</body>
</html>
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
quce2271
2011-04-23 · 超过13用户采纳过TA的回答
知道答主
回答量:34
采纳率:0%
帮助的人:43.2万
展开全部
out.print("<jsp:forward page=\"byname.jsp\"/>");
不用这样了吧
if(s.equals("xingming"))
response.sendRedirect("byname.jsp");
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式