在翻译阶段之前,有一个 <%! .... %> 我的 JSP 页面中的代码行。我知道这只会在翻译的 servlet 中运行一次。是不是说servlet引擎把代码放在了servlet的init()方法中呢?
我想学的是:翻译后哪些代码去哪些方法?
提前致谢。
这是一个例子:
这个 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);
。
在代码编译时,包含在<%! .... %>
这个标签内的代码被认为是 servlet 的类成员。
和
包含在<% .... %>
此标记内的代码进入service() method
servlet。
如果要查看generated java file
,请转到tomcat/work/.....
目录。
文件将被创建,名称JspFileName_jsp.java
为JspFileName_jsp.class
为了更好地理解,请访问此链接