Erdal76t
Erdal76t

Reputation: 133

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

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.

Upvotes: 3

Views: 4393

Answers (2)

Uooo
Uooo

Reputation: 6334

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.

Upvotes: 5

Sagar Dalvi
Sagar Dalvi

Reputation: 200

At the time of code compilation code containing inside <%! .... %> this tag is consider as class member of servlet.

and

code containing inside <% .... %> this tag goes into the service() method of servlet.

If you want to see the generated java file, go to tomcat/work/..... directory.

File will be created with name as JspFileName_jsp.java and JspFileName_jsp.class

For better understandings visit this link

Upvotes: 2

Related Questions