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动作...相关推荐

  1. JSP中的include指令和include动作的区别

    我们都知道在jsp中include有两种形式,分别是Include指令:<%@ include file=""%>和include动作:<jsp:include ...

  2. 浅谈JSP中include指令与include动作标识的区别

    JSP中主要包含三大指令,分别是page,include,taglib.本篇主要提及include指令. include指令使用格式:<%@ include file="文件的绝对路径 ...

  3. JSP include指令和include动作的区别

    include指令 JSP可以通过include指令来包含其他文件.被包含的文件可以是JSP文件.HTML文件或文本文件.包含的文件就好像是该JSP文件的一部分,会被同时编译执行. Include指令 ...

  4. JSP中include指令和include动作的区别

    include指令是编译阶段的指令,即include所包含的文件的内容是编译的时候插入到JSP文件中,JSP引擎在判断JSP页面未被修改,否则视为已被修改.由于被包含的文件是在编译时才插入的,因此如果 ...

  5. jsp page指令、include指令、include标签、forword标签、jsp注释方式

    目录 三种指令类型 Page指令 列:session与errorPage的运用 include指令 列:静态包含 标签 Include标签 列:实现动态包含发送接收信息 fordword标签 列:js ...

  6. JSP的三个编译指令-page,include详解

    JSP的编译指令是通知JSP引擎的消息. 常见的编译指令有三个: page:该指令是针对当前页面的指令. include:用于指定如何包含另一个页面. tablib:用于定义和访问自定义标签. 编译指 ...

  7. JAVAWEB开发之Session的追踪创建和销毁、JSP详解(指令,标签,内置对象,动作即转发和包含)、JavaBean及内省技术以及EL表达式获取内容的使用

    Session的追踪技术 已知Session是利用cookie机制的服务器端技术,当客户端第一次访问资源时 如果调用request.getSession() 就会在服务器端创建一个由浏览器独享的ses ...

  8. JAVAWEB开发之Session的追踪创建和销毁、JSP具体解释(指令,标签,内置对象,动作即转发和包括)、JavaBean及内省技术以及EL表达式获取内容的使用...

    Session的追踪技术 已知Session是利用cookie机制的server端技术.当client第一次訪问资源时 假设调用request.getSession() 就会在server端创建一个由 ...

  9. C++ #include 指令

    C++ 中带"#" 号 的语句被称为宏定义或者预编译指令 #include 在代码中是包含和引用的意思 例如: 1 #include <iostream>  是要引用i ...

最新文章

  1. 使用pdb调试python脚本
  2. apache php 整合 linux,Linux下Apache、php3、MySQL的整合
  3. 瞎扯系列:判断NPN及PNP管型之右手定则
  4. 怎么快速在计算机植入病毒,怎样给别人的电脑植入病毒
  5. 三菱服务器位置控制,关于三菱PLC 相对位置绝对位置控制问题
  6. GCC编译器下C语言不定长参数宏##__VA_ARGS__和__VA_ARGS__的使用
  7. 三星s8怎么分屏操作_双屏互动,大有可为 三星Galaxy Z Fold2 5G的魅力折叠体验
  8. Nginx-浅析(转)
  9. 外国优秀网页html,200个优秀的国外设计网站推荐
  10. 解决VUE在浏览器全屏下监听不到Esc键盘事件
  11. Platform Builder
  12. 功利主义穆勒思维导图_约翰·穆勒功利主义教育思想概述
  13. 容联云2021年Q1财报出炉:净金额留存率超110%
  14. 寄存器(8086CPU)概述与作用
  15. 2010浙大报录比及分数
  16. 广大华软html5期末试卷,广州大学华软软件学院2019年广东录取分数线(2019广大华软工科IT类专业受热捧)...
  17. 数据结构基础:P4.2-树(二)--->二叉平衡树
  18. 多元微积分_三维散度
  19. office Excel中的vlookup函数的使用
  20. [转载]【笔记本电脑报价】笔记本电脑

热门文章

  1. Alink漫谈(二十) :卡方检验源码解析
  2. ubuntu22.04 编译安装 Kate 编辑器
  3. 什么是前端开发及学习路线
  4. ZED双目相机获取左右视图代码
  5. 聊一聊MySQL的记录锁、间隙锁与 Next-Key Lock
  6. 人工智能-pands数据框架基本操作 以及查询sql生成excel表格
  7. 转: 野狗实时通讯云
  8. 淘宝千人千面背后的秘密:搜索推荐广告三位一体的在线服务体系AI·OS
  9. 304 not modified 缓存问题解决
  10. golang 如何翻转含有中文 数字 英文字母等任意字符串