使用方法
  标准标签在jsp页面直接编写即可,因为标准标签是JSP规范提供的,所有容器都支持。

被替代性
  标准标签的许多功能都可以被JSTL与EL表达式语言所替代。

作用
  标准标签可协助编写JSP时减少Scriptlet的使用。

语法
  所有标准标签都使用jsp:作为前缀。


标准标签<jsp:include>

  和include指示元素对比:
  include指示元素,可以在JSP转译为Servlet时,将另一个JSP包括进来进行转译,这是静态地包括另一个JSP页面,也就是被包括的JSP与原JSP合并在一起,转译为一个Servlet类,你无法在运行时依条件动态地调整想要包括的JSP页面。
  <jsp:include>标签可以在运行时,依条件动态地调整想要包括的JSP页面,当前jsp会生成一个Servlet类,被包含的jsp也会生成一个Servlet类。

Demo

index.jsp

在index.jsp中使用了<jsp:param>标签,指定了传递给add.jsp的请求参数。

<%@page contentType="text/html" pageEncoding="UTF-8" %>
<jsp:include page="add.jsp">
<jsp:param name="a" value="1"/>
<jsp:param name="b" value="2"/>
</jsp:include>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Hello</title>
</head>
<body>
</body>
</html>

add.jsp

<%@page contentType="text/html" pageEncoding="UTF-8" isErrorPage="true" %>
<%@page import="java.io.PrintWriter" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>加法网页</title>
</head>
<body>
<%
String a = request.getParameter("a");
String b = request.getParameter("b");
%>
<p>a + b = <%=a + b %></p>
</body>
</html>

测试地址:http://127.0.0.1/index.jsp

响应结果:a + b = 12

查看转译后的servlet

查看index_jsp.java的源码有如下代码:

      org.apache.jasper.runtime.JspRuntimeLibrary.include(
request,
response,
"add.jsp" + "?"
+ org.apache.jasper.runtime.JspRuntimeLibrary.URLEncode("a", request.getCharacterEncoding())
+ "="
+ org.apache.jasper.runtime.JspRuntimeLibrary.URLEncode("1", request.getCharacterEncoding())
+ "&" + org.apache.jasper.runtime.JspRuntimeLibrary.URLEncode("b", request.getCharacterEncoding())
+ "=" + org.apache.jasper.runtime.JspRuntimeLibrary.URLEncode("2", request.getCharacterEncoding()), out, false);

上面的源码其实就是取得RequestDispatcher对象,并执行include()方法。


<jsp:forward>标签

  将请求转发给另一个JSP处理。
  同样地,当前页面会生成一个Servlet,而被转发的add.jsp也会生成一个Servlet。
  只要把上面index.jsp里的include改为forward即可。

查看index_jsp.java的源码有如下代码:

      if (true) {
_jspx_page_context.forward("add.jsp" + "?" + org.apache.jasper.runtime.JspRuntimeLibrary.URLEncode("a", request.getCharacterEncoding())+ "=" + org.apache.jasper.runtime.JspRuntimeLibrary.URLEncode("1", request.getCharacterEncoding()) + "&" + org.apache.jasper.runtime.JspRuntimeLibrary.URLEncode("b", request.getCharacterEncoding())+ "=" + org.apache.jasper.runtime.JspRuntimeLibrary.URLEncode("2", request.getCharacterEncoding()));
return;
}

这里的源码其实就是取得RequestDispatcher对象,并执行forward()方法。

pageContext隐式对象具有forward()与include()方法。

标准标签、<jsp:include>、<jsp:forward>的更多相关文章

  1. 报错信息 The jsp:param action must not be used outside the jsp:include, jsp:forward, or jsp:params elements 的原因及解决办法

    如果你的代码是这样的话就会报错 <jsp:forward page="02.jsp"></jsp:forward> <jsp:param value= ...

  2. 标准标签库JSTL(JSP Standard Tag Library)

    1, 核心标签(最常用, 最重要的) 表达式控制标签 out 输出常量 value---直接赋值 输出变量 default---默认值 escapeXml---控制转义字符(默认为true, 如果需要 ...

  3. [Servlet&amp;JSP] 标准标签

    在JSP的规范中提供了一些标准标签(Standard Tag),全部的容器都支持这些标签,它能够协助编写JSP时降低Scriptlet的使用. 全部的标准标签都使用jsp:作为前置.这些标准标签是在J ...

  4. JSP 标准标签库(JSTL)之最常用的JSTL标签总结

    JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. Apache Tomcat安装JSTL 库步骤如下: 从Apache的标准标签库中下载的二进包(jakarta-t ...

  5. Java精选笔记_JSTL(JSP标准标签库)

    JSTL(JSP标准标签库) JSTL入门 JavaServer Pages Standard Tag Library:JSP标准标签库 在JSP中可以通过Java代码来获取信息,但是过多的Java代 ...

  6. JSP标准标签库JSTL

    1.什么是JSTL? JSP标准标签库(JSP Standard Tag Library) 2.JSTL标准标签库中的常用标签 JSTL是JSP页面的标签库,实质上是一段Java代码.我们常用的是它的 ...

  7. [应用篇]第三篇 JSP 标准标签库(JSTL)总结

    有一种友谊叫做: "陪我去小卖部." "不去," "我请你" "走." 你想起了谁:胖先生?还有人陪你吗? JSP 标准 ...

  8. jsp学习--JSP运行原理,九大隐式对象和JSP常用标签

    一.JSP运行原理 每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet ...

  9. Tip:JSP标签也称之为Jsp Action(JSP动作)元素

    JSP标签也称之为Jsp Action(JSP动作)元素,它用于在Jsp页面中提供业务逻辑功能,避免在JSP页面中直接编写java代码,造成jsp页面难以维护. ================ &l ...

随机推荐

  1. (转)实现一个cache装饰器,实现过期可清除功能

    原文:http://www.cnblogs.com/JerryZao/p/9574927.html http://blog.51cto.com/11281400/2107790-----装饰器应用练习 ...

  2. 只用一招,让你Maven依赖下载速度快如闪电

    一.背景 众所周知,Maven对于依赖的管理让我们程序员感觉爽的不要不要的,但是由于这货是国外出的,所以在我们从中央仓库下载依赖的时候,速度如蜗牛一般,让人不能忍,并且这也是大多数程序员都会遇到的问题 ...

  3. Editplus php

    一.配置PHP帮助手册 1.打开Editplus,[工具]-->[配置用户工具],在[添加工具]子菜单下选择[HTML帮助(*.chm)(T)],文件路径选择php的chm帮助文件路径. 这样在 ...

  4. scala-04-set操作

    Scala Set(集合)是没有重复的对象集合,所有的元素都是唯一的. Scala 集合分为可变的和不可变的集合. 默认情况下,Scala 使用的是不可变集合,如果你想使用可变集合,需要引用 scal ...

  5. ASP.NET MVC 表格操作

    Beginners Guide for Creating GridView in ASP.NET MVC 5 http://www.codeproject.com/Articles/1114208/B ...

  6. vue-cli less使用

    1.安装less依赖,npm install less less-loader --save 2.修改webpack.base.conf.js文件,配置loader加载依赖,让其支持外部的less,在 ...

  7. git使用总结(包含git commit message 和 changelog 工具的介绍)

    [git的配置] 1.配置用户名和邮箱: 分为全局配置和局部配置 --system 系统配置  --global 全局配置    --local 局部配置 Git读取时:优先从local>glo ...

  8. RadioButtonList根据值触发OnSelectedIndexChanged事件

    Insus.NET有使用Iframe来处理另外一个站点的enter form,由于需要自动循环填入数据,免去人手操作.但是原来的Enter from有RadioButtonList控件以及OnSele ...

  9. C#winform使用进度条

    在用c#做WinFrom开发的过程中.我们经常需要用到进度条(ProgressBar)用于显示进度信息.这时候我们可能就需要用到多线程,如果不采用多线程控制进度条,窗口很容易假死(无法适时看到进度信息 ...

  10. LoRa术语

    ADR      Adaptive Data Rate          自适应数据率 AES      Advanced Encryption Standard        高级加密标准 AFA  ...