Java JSP中元素顺序的问题

Java JSP中元素顺序的问题,java,jsp,tomcat,servlets,Java,Jsp,Tomcat,Servlets,几天前,我开始学习JavaEE和web开发(首先是:Tomcat、Servlets、JSP) 现在我有了这个JSP页面代码。 如您所见,标题helloworld with JSP位于块之前: <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ page import="java.util.*" %> <html> <body> <h1 align=”ce

几天前,我开始学习JavaEE和web开发(首先是:Tomcat、Servlets、JSP)

现在我有了这个JSP页面代码。 如您所见,标题
helloworld with JSP
位于
块之前:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.util.*" %>

<html>
<body>
<h1 align=”center”>Hello World with JSP</h1>
<br>
<%
    List styles = (List)request.getAttribute("styles");
    for(Object style: styles){
    response.getWriter().println("<br>try: " + style);
    }
%>

</body>
</html>

HelloWorldwithJSP

但是在result网页中,result from
停留在
Hello World之前,使用JSP
标题。为什么?


顺便说一句,我对术语很抱歉,但我在web开发方面是个新手。

我想您应该使用out.println而不是response.getWriter().println。请参见

jsp使用名为
out
的隐式
JspWriter
实例写入输出流。它与从
response.getWriter()
接收的
PrintWriter
实例不完全相同,因为它在实际写入流之前会执行一些额外的缓冲

当您直接打印到
PrintWriter
时,您基本上是在
JspWriter
缓冲区刷新之前写入流的,因此您的
列表在“Hello World”HTML之前被打印

相反,您需要使用隐式
JspWriter
实例
out
作为

<%
    List styles = (List)request.getAttribute("styles");
    for(Object style: styles){
        out.println("<br>try: " + style);
    }
%>


顺便说一句,JSP中的Scriptlet
现在已经被弃用了。请查看JSP EL和JSTL标记。

JSP被编译成Java servlet。当您执行以下scriplet代码时

response.getWriter().println(...);
您将获得
HttpServletResponse
PrintWriter
,它直接写入
OutputStream
,在写入任何HTML(来自jsp)之前执行操作。就拿这个例子来说

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.util.*" %>

<html>
<head>

</head>
<body>
<%
    response.getWriter().println("hellllooooooooo"); // using response.getWriter().println()
%>
the time is now
<h1 align=”center”>Hello World with JSP</h1>
<br>
<%
    List styles = (List)request.getAttribute("styles");
    for(Object style: styles){
        out.println("<br>try: " + style); // using out.println()
    }
%>

</body>
</html>

现在是时候了
HelloWorldwithJSP

您将收到的响应内容是

hellllooooooooo



<html>
<head>

</head>
<body>

the time is now
<h1 align=”center”>Hello World with JSP</h1>
<br>
<br>try: asdaS
<br>try: asdasdasda


</body>
</html>
helllloooo
现在是时候了
HelloWorldwithJSP


试试看:阿斯达斯
尝试:asdasda
请注意,
helllloooooo
是在任何内容之前打印的
JSP
s为您提供类型为
JspWriter
out
变量,允许您按预期顺序输出。请参见上面的示例,了解如何从请求属性
style
写入元素

重要这是不建议使用scriplets的原因之一。考虑使用,