【Head First Servlets and JSP】笔记24:include指令与include动作 param动作 foward动作...
include指令与include动作
1、样例代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ page import = "java.io.*,java.util.*" %><html> <head><title>Auto Refresh Header Example</title> </head><body> <%-- 在这里插入页眉文件 --%> <%@ include file="Header.jsp"%><center><h2>Auto Refresh Header Example</h2><%// Set refresh, autoload time as 5 secondsresponse.setIntHeader("Refresh", 60);// Get current timeCalendar 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";elseam_pm = "PM";String CT = hour+":"+ minute +":"+ second +" "+ am_pm;out.println("Crrent Time: " + CT + "\n");%> </center><%-- 在这里插入页脚文件 --%> <jsp:include page="Footer.jsp" /></body> </html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %><img src="data:images/header.jpg" alt="上海鲜花港 - 郁金香" /> <p>我是页眉</p>
<%@ page contentType="text/html;charset=UTF-8" language="java" %><img src="data:images/header.jpg" alt="上海鲜花港 - 郁金香" /> <p>我是页眉</p>
2、源码分析
web项目结构
把这些文件打包成war,部署到本地tomcat的webapps下,启动tomcat。
在第一次访问index.jsp之后,将生成如下文件
我们观察到,并没生成Header_jsp,原因可想而知,因为使用了include指令而不是include动作。
接着查看index_jsp源码:
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("<html>\n");out.write("<head>\n");out.write(" <title>Auto Refresh Header Example</title>\n");out.write("</head>\n");out.write("\n");out.write("<body>\n");out.write('\n');out.write("\r\n");out.write("\r\n");out.write("<img src=\"images/header.jpg\" alt=\"上海鲜花港 - 郁金香\" />\r\n");out.write("<p>我是页眉</p>\r\n"); out.write("\r\n");out.write("\n");out.write("\n");out.write("<center>\n");out.write(" <h2>Auto Refresh Header Example</h2>\n");out.write(" ");// Set refresh, autoload time as 5 secondsresponse.setIntHeader("Refresh", 60);// Get current timeCalendar 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";elseam_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("</html>");} catch (java.lang.Throwable t) {if (!(t instanceof javax.servlet.jsp.SkipPageException)){out = _jspx_out;if (out != null && out.getBufferSize() != 0)try {if (response.isCommitted()) {out.flush();} else {out.clearBuffer();}} catch (java.io.IOException e) {}if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);else throw new ServletException(t);}} finally {_jspxFactory.releasePageContext(_jspx_page_context);}
加粗的分别是include指令和include动作的转换代码。
param动作
修改上面的index.jsp代码:
<%-- 在这里插入页脚文件 --%> <jsp:include page="Footer.jsp"><jsp:param name="subTitle" value="we take the string out of SOAP." /> </jsp:include>
修改Footer.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %><a href="index.jsp">home page 我是页脚!</a> <h3>${param.subTitle}</h3>
效果截图
foward动作
乱码问题没解决,只能输入中文。
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <body><p>欢迎来到我的页面!</p> <% if (request.getParameter("userName")== null) { %><jsp:forward page="HandleIt.jsp" /><% } %> <p>你好!${param.userName}</p> </body> </html>
HandleIt.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <body><%request.setCharacterEncoding("utf-8");%><p>很抱歉,你需要重新登陆。</p><form action="Hello.jsp"><p>用户名:<input type="text" name="userName"></p><p><input type="submit"></p></form> </body> </html>
转载于:https://www.cnblogs.com/xkxf/p/7064589.html
【Head First Servlets and JSP】笔记24:include指令与include动作 param动作 foward动作...相关推荐
- JSP中的include指令和include动作的区别
我们都知道在jsp中include有两种形式,分别是Include指令:<%@ include file=""%>和include动作:<jsp:include ...
- 浅谈JSP中include指令与include动作标识的区别
JSP中主要包含三大指令,分别是page,include,taglib.本篇主要提及include指令. include指令使用格式:<%@ include file="文件的绝对路径 ...
- JSP include指令和include动作的区别
include指令 JSP可以通过include指令来包含其他文件.被包含的文件可以是JSP文件.HTML文件或文本文件.包含的文件就好像是该JSP文件的一部分,会被同时编译执行. Include指令 ...
- JSP中include指令和include动作的区别
include指令是编译阶段的指令,即include所包含的文件的内容是编译的时候插入到JSP文件中,JSP引擎在判断JSP页面未被修改,否则视为已被修改.由于被包含的文件是在编译时才插入的,因此如果 ...
- jsp page指令、include指令、include标签、forword标签、jsp注释方式
目录 三种指令类型 Page指令 列:session与errorPage的运用 include指令 列:静态包含 标签 Include标签 列:实现动态包含发送接收信息 fordword标签 列:js ...
- JSP的三个编译指令-page,include详解
JSP的编译指令是通知JSP引擎的消息. 常见的编译指令有三个: page:该指令是针对当前页面的指令. include:用于指定如何包含另一个页面. tablib:用于定义和访问自定义标签. 编译指 ...
- JAVAWEB开发之Session的追踪创建和销毁、JSP详解(指令,标签,内置对象,动作即转发和包含)、JavaBean及内省技术以及EL表达式获取内容的使用
Session的追踪技术 已知Session是利用cookie机制的服务器端技术,当客户端第一次访问资源时 如果调用request.getSession() 就会在服务器端创建一个由浏览器独享的ses ...
- JAVAWEB开发之Session的追踪创建和销毁、JSP具体解释(指令,标签,内置对象,动作即转发和包括)、JavaBean及内省技术以及EL表达式获取内容的使用...
Session的追踪技术 已知Session是利用cookie机制的server端技术.当client第一次訪问资源时 假设调用request.getSession() 就会在server端创建一个由 ...
- C++ #include 指令
C++ 中带"#" 号 的语句被称为宏定义或者预编译指令 #include 在代码中是包含和引用的意思 例如: 1 #include <iostream> 是要引用i ...
最新文章
- 使用pdb调试python脚本
- apache php 整合 linux,Linux下Apache、php3、MySQL的整合
- 瞎扯系列:判断NPN及PNP管型之右手定则
- 怎么快速在计算机植入病毒,怎样给别人的电脑植入病毒
- 三菱服务器位置控制,关于三菱PLC 相对位置绝对位置控制问题
- GCC编译器下C语言不定长参数宏##__VA_ARGS__和__VA_ARGS__的使用
- 三星s8怎么分屏操作_双屏互动,大有可为 三星Galaxy Z Fold2 5G的魅力折叠体验
- Nginx-浅析(转)
- 外国优秀网页html,200个优秀的国外设计网站推荐
- 解决VUE在浏览器全屏下监听不到Esc键盘事件
- Platform Builder
- 功利主义穆勒思维导图_约翰·穆勒功利主义教育思想概述
- 容联云2021年Q1财报出炉:净金额留存率超110%
- 寄存器(8086CPU)概述与作用
- 2010浙大报录比及分数
- 广大华软html5期末试卷,广州大学华软软件学院2019年广东录取分数线(2019广大华软工科IT类专业受热捧)...
- 数据结构基础:P4.2-树(二)--->二叉平衡树
- 多元微积分_三维散度
- office Excel中的vlookup函数的使用
- [转载]【笔记本电脑报价】笔记本电脑