在翻译阶段之前,有一个<%! ....%>我的JSP页面中的代码行。我知道这只会在翻译的servlet中运行一次。这是否意味着servlet引擎将代码放在servlet中的init()方法中?
我想学习的是:翻译后哪种方法的代码是什么?
提前致谢。
答案 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.java
和JspFileName_jsp.class
为了更好地理解,请访问this link