3

在翻译阶段之前,有一个 <%! .... %> 我的 JSP 页面中的代码行。我知道这只会在翻译的 servlet 中运行一次。是不是说servlet引擎把代码放在了servlet的init()方法中呢?

我想学的是:翻译后哪些代码去哪些方法?

提前致谢。

4

2 回答 2

5

这是一个例子:

这个 JSP 代码:

<%@ page import="java.util.*" %> <!-- 1 -->
<%! private Date date; %>        <!-- 2 -->
<% date = new Date(); %>         <!-- 3 -->
Current date: <%= date %>        <!-- 4 -->

将被翻译成:

import java.util.*; // 1

public class ServletAbc extends GenericServlet {

    private Date date; // 2

    public void service(ServletRequest request,ServletResponse response)
                throws IOException,ServletException{

        PrintWriter out=response.getWriter();

        date = new Date(); // 3

        out.println("Current date: "); // 4
        out.println(date);
    }
}

请注意,翻译的小部分取决于容器。例如,这些out.println()陈述也可能被翻译成out.println("Current date: " + date);

于 2013-03-18T13:30:58.927 回答
2

在代码编译时,包含在<%! .... %>这个标签内的代码被认为是 servlet 的类成员。

包含在<% .... %>此标记内的代码进入service() methodservlet。

如果要查看generated java file,请转到tomcat/work/.....目录。

文件将被创建,名称JspFileName_jsp.javaJspFileName_jsp.class

为了更好地理解,请访问此链接

于 2013-03-18T12:55:46.863 回答