关于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>
这样写有问题,咋样改正过来呢,麻烦说明理由,谢 展开
<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>
这样写有问题,咋样改正过来呢,麻烦说明理由,谢 展开
展开全部
把所有的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默认使用本身字符集
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默认使用本身字符集
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
<%=%>和out.print()没有谁对谁错,也就是说前面列子中如果一开始我在jsp中写的是<%=%>同样会发生这个问题,而且解决方法居然是相反的把<%=%>改为out.print()就可以了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
//这么写
<%@ 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>
<%@ 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>
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
out.print("<jsp:forward page=\"byname.jsp\"/>");
不用这样了吧
if(s.equals("xingming"))
response.sendRedirect("byname.jsp");
不用这样了吧
if(s.equals("xingming"))
response.sendRedirect("byname.jsp");
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询