Where in a compiled servlet do various parts of a JSP file go?

jsp, servlets

Solution

Here is an example:

This JSP code:

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

Will get translated to:

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);
    }
}

Note that minor parts of the translation are container-depended. E.g. the `out.println()` statements might be translated to `out.println("Current date: " + date);` as well.

Problem

Before the translation phase, there was a <%! .... %> code line in my JSP page. I know that this would be run only once in the translated servlet. Does it mean that the servlet engine puts the code in the init() method in the servlet? What I want to learn is: which kinds of code go to which methods after translation? Thanks in advance.

Original source