Include directives and include actions
1. Sample Code
<%@ PageContentType= "Text/html;charset=utf-8"language= "Java" %><%@ PageImport= "java.io.*,java.util.*" %><HTML><Head> <title>Auto Refresh Header Example</title></Head><Body><%--Insert the header file here--%> <%@ include file= "header.jsp"%> <center> <jsp:include page= "footer.jsp" /> </Body></HTML>
< %@ page contenttype = "Text/html;charset=utf-8" language = "Java" % > < img src = "Images/header.jpg" Alt = "Shanghai Flower Harbor-Tulip" /> < p > I am header </ p >
<contentType= "Text/html;charset=utf-8" language= "java" %><src= "images/header.jpg" alt = "Shanghai Flower Harbor-Tulip" /> < P > I am the header </p>
2. Source Code Analysis
Web Project Structure
Package these files into a war, deploy to the local Tomcat WebApps, and start Tomcat.
After the first access to index.jsp, the following files are generated
We observed that there was no header_jsp generated, as we could imagine, because we used the include directive instead of the include action.
Then see index_jsp Source code:
Try { response.setcontenttype ( "Text/html;charset=utf-8"); PageContext = _jspxfactory.getpagecontext (this, request, response, NULL, True, 8192, true); _jspx_page_context = PageContext; application = Pagecontext.getservletcontext (); Config = Pagecontext.getservletconfig (); Session = Pagecontext.getsession (); out = Pagecontext.getout (); _jspx_out =Out ; Out.write ( "\ n"); Out.write ("\ n"); Out.write ("\ n"); Out.write ("); out.write ("\r\n"); Out.write ("<p> I am header </p>\r\n"); Out.write ("\ r \ n"); Out.write ("\ n"); Out.write ("\ n"); Out.write ("<center>\n"); Out.write ("//Set refresh, AutoLoad time as 5 seconds Response.setintheader ("Refresh", 60); Get current time Calendar calendar = new GregorianCalendar (); String am_pm; int hour = Calendar.get (Calendar.hour); int minute = Calendar.get (Calendar.minute); int second = Calendar.get (Calendar.second); if (Calendar.get (calendar.am_pm) = = 0) am_pm = "AM"; else am_pm = "PM"; String CT = hour+ ":" + Minute + ":" + second + "+ am_pm; Out.println ("Crrent time:" + CT + "\ n"); Out.write ("\ n"); Out.write ("</center>\n"); Out.write ("\ n"); Out.write (' \ n '); org.apache.jasper.runtime.JspRuntimeLibrary.include (Request, response, "footer.jsp", out, false ); Out.write ( "\ n"); Out.write ("\ n"); Out.write ("</body>\n"); Out.write ("
The bold distinction is the conversion code for the include directive and the include action.
Param action
Modify the index.jsp code above:
<%--Insert Footer file here--%><jsp:include page= "footer.jsp" > <jsp:param name= "SubTitle" value= "We take the String out of SOAP. "/></jsp:include>
Modify Footer.jsp
<%@ page contenttype= "Text/html;charset=utf-8" language= "java"%><a href= "index.jsp" >home page I'm the footer! </a>
Effect
Foward ActionGarbled problem is not resolved, can only input Chinese.
<%@ page contenttype= "Text/html;charset=utf-8" language= "java"%> <(Request.getparameter ("UserName")null) {% > <page= "handleit.jsp"/> <%}% > <p> Hello! ${param.username}</p></body>
handleit.jsp
<%@ PageContentType= "Text/html;charset=utf-8"language= "Java" %><HTML><Body> <% request.setcharacterencoding("Utf-8"); %> <P>I'm sorry, but you need to log in again.</P> <formAction= "hello.jsp"> <P>User name:<inputtype= "text"name= "UserName"></P> <P><inputtype= "Submit"></P> </form></Body></HTML>
"Head first Servlets and JSP" Note 24:include instructions and include Actions & param actions & foward actions