Before starting the difference discussion, first, we have to understand the JSP life cycle. when a request first comes to a JSP it will translate into servlet then compile and load into web container for further use. Subsequent requests will serve by this translated servlet.
Let say we have a JSP page called greet.jsp which includes another JSP call header.jsp. Now it can be included in two ways
1. by page directive
2. by JSP action tag
1. By page directive : syntax is <%@ include file="header.jsp" %>
now when greet.jsp page translated into a servlet all the code written in the header.jsp goes to translated servlet's service()(incase of Httpservlet it's //doget() or dopost()) method. so it acts as one servlet which contains two JSP's code ( header.jsp + greet.jsp ) and ready for serve subsequent requests. Now in mean time suppose developer change the content of header.jsp, this change will not reflect to translated servlet as it is already compiled and loaded in the web container . To make this happen you have to restart web container then it will recompile but some web container smart enough to pick up this changes. so include page directive is not a good option for dynamic pages.
2. By JSP action tag: syntax
<jsp:include page="header.jsp">
Here inclusion is done at request time so it maintains two servlets unlike page directive so it will show updated value each time. so action tag is the good choice for dynamic pages.
Post a Comment