Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSP中的迭代_Java_Jsp_Iteration - Fatal编程技术网

Java JSP中的迭代

Java JSP中的迭代,java,jsp,iteration,Java,Jsp,Iteration,这是我的密码 <%@page import="java.util.logging.Logger"%> <%@page import="java.util.logging.Level"%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <%@page isThreadSafe="false"%> <%! int k = 0;%> <!DOCTYPE html> &

这是我的密码

<%@page import="java.util.logging.Logger"%>
<%@page import="java.util.logging.Level"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page isThreadSafe="false"%>
<%! int k = 0;%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Concurrency</title>
    </head>
    <body>
        <%
            for (int i = 0; i < 10; i++) {

                out.print(k + "->" + i + "</br>");
                k++;
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException ex) {

                }
            }
        %>
</body>
</html>
JSP是否遵循一些规则而不是核心Java规则? 我不明白,为什么k要等到我达到10,然后才开始打印呢?

这是因为
使k在执行后留在附近。每次运行此页时,k的最后一个值将保留在内存中。您可以在块中向下重置k,也可以从代码中删除该块

int k=0;
for (int i = 0; i < 10; i++)
intk=0;
对于(int i=0;i<10;i++)
将k定义为JSP对应的
Servlet

for(int i=0;i<10;i++)
在块级别定义i

自然,k会随着每个页面请求而不断增长,因为这将映射到相同的
Servlet
类,重用
k
,但得到一个新初始化的
i

----作为对更详细解释的请求的回应----

JSP页面并没有真正按原样运行。它被传递到编译器中,并转换为
.class
文件。在将其传递到该编译器之前,需要将其转换为适当的
.java
文件,其发生方式“大致”如下

  • 用引号将所有“文本”括起来,使其成为
    String
    s
  • 打开所有“java块”使其成为“代码”
  • 将所有内容打包到继承自
    Servlet
    的内容中
  • 了解“标记”在“Servlet”中的位置可以加深您对JSP的理解。我强烈建议你看一眼

    根据Servlet容器的不同,编译器可能有所不同,但许多编译器可以从命令行以一种形式或方式调用。在许多情况下,这样做是为了“预编译”JSP,因此请为您的环境查找预编译JSP以获得提示


    通常,您会发现命令行选项。如果幸运的话,有时这些命令行选项包括仅在生成
    .java
    文件时“停止”(或者在从
    .jsp
    文件生成
    .java
    文件后不删除这些文件的选项。

    声明
    k
    在哪里?发布整个代码:)您调用此页面多少次<代码>我仅从0开始。。k从10开始
    每次迭代时k和i不是增加吗?为什么我的java核心程序按我想要的方式运行?@Kick Buttowski,因为你没有使用
    ,所以如果保留它,它只会使它看起来像左手从0开始,只有右手在移动。Budeveloperwjk t我不明白,为什么k要等到我达到10,然后开始打印?你的答案更有意义,但是你能解释一下吗?页面是如何被请求的?它是因为for循环而请求的吗?Tomcat过去使用
    jasper
    来编译JSP,也许现在仍然如此。另外,
    jspc
    是某些web服务器(如Sun)的编译器名称。最后,如果有帮助,请单击数字上方的向上箭头,如果有误导性,请单击数字下方的向下箭头。什么箭头?我使用的是netbeans 8,你也在使用web浏览器来阅读这句话。每个答案的右边都是箭头和数字。希望其他人点击这些箭头是人们在StackOverflow回答问题的95%原因。
    int k=0;
    for (int i = 0; i < 10; i++)