为什么我得到客户端&服务器端输出相同的JSP方法?

时间:2014-08-05 14:50:48

标签: java jsp servlets

我看过方法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>

1 个答案:

答案 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。