我看过方法out.write()接受一个int和一个字符串。问题是当我传递一个int时它不会显示在客户端或服务器端。(我不知道知道net beans中的确切服务器端)。当我传递一个String时,它会显示在客户端。我的问题是为什么写类的创建者,开发那个方法,用于服务器端显示的int和用于客户端显示的字符串....或者我错了..,请帮助..,我将附上下面的代码。,
</head>
<body>
<%
int abc=10;
out.write(abc);//server side
out.write(""+abc);//client side
out.write("<br>");
out.write(abc);//server side
out.write("<br>");
out.write(abc*2);//server side
out.write("<br>");
out.write(abc*3);//server side
out.println("<h1>"+(abc*abc)+"<br>");//client side
%>
</body>
</html>
答案 0 :(得分:0)
首先,您的所有输出都将发送到客户端。当您在scriptlet中使用out
时,当您按照javadoc调用JspWriter
时,您将获得java.io.Writer
,这是out.write(int)
-
写一个字符。要写入的字符包含在给定整数值的16个低位中; 16个高位被忽略。
因此,您正在使用整数值10,20和30编写字符.ASCII表将10定义为换行符,将20定义为(设备控件4),将30定义为(记录分隔符)。当嵌入HTML并在浏览器中呈现时,这些都不会正确显示。小写'a'是97而'a'是 可打印,所以如果你有
int abc='a'; // 97 - because ASCII
out.write(abc++); // 'a', then increment to 'b'
out.write(abc++); // 'b', then increment to 'c'
out.write(abc++); // 'c', then increment to 'd'
System.out.println((char) abc); // <-- 'd' on the server.
如果您想在服务器上输出,您应该使用(并配置)记录器
Logger logger = Logger.getLogger(this.getClass());
logger.info((char) abc); // <-- 'd' in the server log (assuming info or up)
最后,我建议你避免使用scriptlet。