在编译的servlet中,JSP文件的各个部分去哪里?

时间:2013-03-17 10:39:16

标签: jsp servlets

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

我想学习的是:翻译后哪种方法的代码是什么?

提前致谢。

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:2)

代码编译时 包含在<%! .... %>内的代码,此标记被视为servlet的类成员。

包含在<% .... %>内的代码,此标记进入servlet的service() method

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

将创建名称为JspFileName_jsp.javaJspFileName_jsp.class

的文件

为了更好地理解,请访问this link