Я видел метод out.write() принимает int, а также строку. Проблема заключается в том, когда я передаю int, который не отображается на стороне клиента или сервера. (Я не знаю точного сервер в чистых компонентах). И когда я передаю строку, она отображается на стороне клиента. Моя проблема заключается в том, почему создатели класса write, разрабатывают этот метод, 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>
Во-первых, весь ваш вывод отправляется клиенту. При использовании out
в скриптлете вы получаете JspWriter
, который далее, а java.io.Writer
при вызове out.write(int)
согласно Javadoc -
Записывает один символ. Символ, который должен быть записан, содержится в 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)
Наконец, я призываю вас избегать сценариев.