JSP动作指令主要有如下7个:
jsp:forward:执行页面转向,将请求的处理转发到下一个页面。
jsp:param:用于传递参数,必须与其他支持参数的标签一起使用。
jsp:include:用于动态引入一个JSP页面。
jsp:plugin:用于下载JavaBean或Applet到客户端执行。
jsp:useBean:创建一个JavaBean的实例。
jsp:setProperty:设置JavaBean实例的属性值。
jsp:getProperty:输出JavaBean实例的属性值。
forward指令
forward指令用于将页面响应转发给另外的页面。既可以转发给静态的HTML页面,也可以转发到动态的JSP页面,或者转发到容器中的Servlet。
JSP的forward指令的格式如下。
对于JSP 1.0,使用如下语法:
<jsp:forward page="{relativeURL|<%=expression%>}"/>
对于JSP 1.1以上,可使用如下语法:
<jsp:forward page="{relativeURL|<%=expression%>}">
{<jsp:param.../>}
</jsp:forward>
第二种语法用于在转发时增加额外的请求参数。增加的请求参数的值可以通过HttpServletRequest类的getParameter()方法获取。
下面示例页面使用了forward动作指令来转发用户请求。
程序清单:codes\02\2.2\jspPrinciple\jsp-forward.jsp
<%@ page contentType="text/html; charset=gb2312" language="java" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>forward的原始页</TITLE>
</HEAD>
<BODY>
<h3>forward的原始页</h3>
<jsp:forward page="forward-result.jsp">
<jsp:param name="age" value="29"/>
</jsp:forward>
</BODY>
</HTML>
这个JSP页面非常简单,它包含了简单的title信息,页面中也包含了简单的文本内容,页面的粗体字代码则将客户端请求转发到forward-result.jsp页面,转发请求时增加了一个请求参数:参数名为age,参数值为29。
在forward-result.jsp页面中,使用request内置对象(request内置对象是HttpServletRequest的实例,关于request的详细信息参看下一节)来获取增加的请求参数值。
程序清单:codes\02\2.2\jspPrinciple\forward-result.jsp
<%@ page contentType="text/html; charset=gb2312" language="java" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>forward结果页</TITLE>
</HEAD>
<BODY>
<!-- 使用request内置对象获取age参数的值 -->
<%=request.getParameter("age")%>
</BODY>
</HTML>
执行forward指令转发请求时,客户端的请求参数不会丢失。看下面表单提交页面的例子,该页面没有任何动态的内容,只是一个静态的表单页,作用是将请求参数提交到jsp-forward.jsp页。
程序清单:codes\02\2.2\jspPrinciple\form.jsp
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>提交</TITLE>
</HEAD>
<BODY>
<!-- 表单提交页面 -->
<form id="login" method="post" action="jsp-forward.jsp">
<INPUT TYPE="text" NAME="username">
<INPUT TYPE="submit" value="login">
</FORM>
</BODY>
</HTML>
修改forward-result.jsp页,增加输出表单参数的代码,修改后forward-result.jsp页面的代码如下:
程序清单:codes\02\2.2\jspPrinciple\forward-result.jsp
<%@ page contentType="text/html; charset=gb2312" language="java" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>forward结果页</TITLE>
</HEAD>
<BODY>
<!-- 使用request内置对象获取age参数的值 -->
<%=request.getParameter("age")%>
<!-- 输出username请求参数的值 -->
<%=request.getParameter("username")%>
</BODY>
</HTML>
forward-result.jsp页面中不仅可以输出forward指令增加的请求参数,还可以看到表单里username表单域对应的请求参数,这表明执行forward时不会丢失请求参数。
include指令
include指令是一个动态include指令,也用于导入某个页面,它不会导入被include页面的编译指令,仅仅将被导入页面的body内容插入本页面。
下面是include动作指令的语法格式:
<jsp:include page="{relativeURL│<%=expression%>}" flush="true"/>
或者
<jsp:include page="{relativeURL│<%=expression%>}" flush="true">
<jsp:param name="parameterName" value="patameterValue"/>
</jsp:include>
flush属性用于指定输出缓存是否转移到被导入文件中。如果指定为true,则包含在被导入文件中;如果指定为false,则包含在原文件中。对于JSP 1.1旧版本,只能设置为false。
对于第二种语法格式,则可在被导入页面中加入额外的请求参数。
下面页面使用了动态导入语法来导入指定JSP页面。
程序清单:codes\02\2.2\jspPrinciple\jsp-include.jsp
<%@ page contentType="text/html; charset=gb2312" language="java" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>jsp-include测试</TITLE>
</HEAD>
<BODY>
<!-- 使用动态include指令导入页面 -->
<jsp:include page="scriptlet.jsp" />
</BODY>
</HTML>
上面页面中粗体字代码使用了动态导入语法来导入了scriptlet.jsp。表面上看,该页面的执行效果与使用静态include导入的页面并没有什么不同。但查看jsp-include.jsp页面生成Servlet的源代码,可以看到如下片段:
//使用页面输出流,生成HTML标签内容
out.write("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\ ">\r\n");
out.write("<HTML>\r\n");
out.write("<HEAD>\r\n");
out.write("<TITLE>jsp-include测试</TITLE>\r\n");
out.write("</HEAD>\r\n");
out.write("<BODY>\r\n");
//动态导入,直接引入scriptlet.jsp页面
org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response,
"scriptlet.jsp", out);
out.write("\r\n");
out.write("</BODY>\r\n");
out.write("</HTML>\r\n");
out.write("\r\n");
上面代码片段中粗体字代码显示了动态导入的关键:动态导入只是使用一个include方法来插入目标页面的内容,而不是将目标页面完全融入本页面中。
归纳起来,静态导入和动态导入有如下两点区别:
静态导入是将被导入页面的代码完全融入,两个页面融合成一个整体Servlet;而动态导入则在Servlet中使用include方法来引入被导入页面的内容。
静态导入时被导入页面的编译指令会起作用;而动态导入时被导入页面的编译指令则失去作用,只是插入被导入页面的body内容。
除此之外,执行include动态指令时,还可增加额外的请求参数,如下面JSP页面所示。
程序清单:codes\02\2.2\jspPrinciple\jsp-include2.jsp
<%@ page contentType="text/html; charset=gb2312" language="java" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>jsp-include测试</TITLE>
</HEAD>
<BODY>
<jsp:include page="forward-result.jsp" >
<jsp:param name="age" value="32"/>
</jsp:include>
</BODY>
</HTML>
在上面的JSP页面中的粗体字代码同样使用jsp:include指令导入页面,而且在jsp:include指令中还使用param指令传入参数,该参数可以在forward-result.jsp页面中使用request对象获取。
分享到:
相关推荐
本篇将详细介绍JSP中的`page`指令,以及`include`指令与相关动作`<jsp:include>`, `<jsp:forward>`, `<jsp:fallback>`, `<jsp:plugin>`。 首先,`page`指令是JSP中最高级别的指令,它用于定义整个JSP页面的属性。`...
JSP 标准动作(JSP Standard Tag Library, JSTL)提供了更强大的功能,包括数据处理、流程控制、XML 处理等,它们可以替代某些 JSP 内联脚本,使 JSP 页面更加清晰,遵循 MVC(Model-View-Controller)设计模式,有...
实验2的内容主要围绕JSP动作标记中的include和forward动作标记来展开,通过实验练习掌握这些动作标记的使用方法和它们对页面动态加载及转向控制的应用。 首先,include动作标记是用于在JSP页面运行时动态地包含其他...
### 实验2 JSP指令标记与JSP动作标记(3.20)——知识点解析 #### 实验背景及目标 本次实验旨在加深学生对JSP技术的理解与运用能力,特别是针对JSP指令标记与JSP动作标记的学习。通过具体的操作实践,使学生能够熟练...
11. JSP动作指令标记有<jsp:param>、<jsp:plugin>、<jsp:useBean>等,但<jsp:javaBean>不是JSP动作指令标记。 12. JSP的Taglib指令允许页面使用者自定义标签库,用于在jsp页面中使用自定义的标签。
JSP动作用于引入现有的组件或控制JSP引擎的行为。主要的动作标签包括: - **jsp:include**:动态包含文件。 - **jsp:param**:传递参数。 - **jsp:forward**:转发请求。 示例代码如下: ```jsp <jsp:include ...
02-JSP脚本元素指令及动作.ppt
实验报告涉及的知识点主要集中在JavaWeb开发中的JavaBean和JSP动作指令的使用,以下是详细的解释: 1. **<jsp:include>动作**: `<jsp:include>` 是JSP中用于动态包含页面的标签,它允许将一个或多个文件的内容...
4.4 JSP动作指令 JSP的动作指令增强了页面的动态特性,比如: 4.4.1 include动作指令:动态包含文件,可以是静态内容或动态脚本,当包含的文件变化时,JSP引擎会自动更新。 4.4.2 forward动作指令:用于页面重定向,...
3. **JSP动作指令**:掌握`<jsp:include>`、`<jsp:forward>`、`<jsp:useBean>`等JSP动作指令的使用,实现页面包含、请求转发和对象实例化。 4. **EL(Expression Language)**:学习使用EL表达式简化页面数据的访问...
实验目的:掌握3种脚本、page和include指令、<jsp:include>和<jsp:forward>动作。 实验内容: 1. 编写一个页面片段top.jspf,作用是显示网站名称和日期(服务器时间)。显示内容如下: 作业3网站 今天是:2014-02-...
4. **JSP动作指令** 动作指令如`jsp:include`、`jsp:forward`和`jsp:useBean`可以控制页面的流程。比如,`jsp:include`用于在运行时插入另一个页面的内容。 5. **EL(Expression Language)** EL简化了从JSP页面...
4. **JSP动作指令**:可能使用了`<jsp:useBean>`、`<jsp:setProperty>`等JSP动作指令来实例化和操作JavaBeans。 5. **条件语句和循环**:在生成日历时,可能会使用Java的`if`语句和`for`循环来处理不同月份天数的...
7. **JSP动作指令**:JSP的动作指令包括`jsp:include`、`jsp:useBean`、`jsp:setProperty`和`jsp:getProperty`。`jsp:include`用于动态包含页面;`jsp:useBean`查找或实例化JavaBean;`jsp:setProperty`设置JavaBean...
JSP 动作元素的使用使得开发者能更灵活地控制页面的行为,而指令则提供了对页面整体配置的能力。两者结合,使得JSP成为了一个强大的动态网页开发工具。在实际应用中,合理运用这些指令和动作元素,能够提高代码的...
2. **JSP动作指令**:如`<jsp:include>`、`<jsp:useBean>`和`<jsp:setProperty>`等,这些指令用于在JSP页面中引入Java组件、实例化Java对象并设置属性,以实现页面的动态生成。 3. **EL(Expression Language)**:...
2. **指令元素**:JSP有三种指令元素,包括`<%@page>`(页面指令),`<%@include>`(包含指令)和`<jsp:directive.include>`(JSP动作指令),它们用于设置页面属性,导入其他文件等。 3. **脚本元素**:JSP脚本...
在第一个实验中,通常会介绍JSP的基本结构和语法,包括如何在页面上插入静态HTML、使用JSP动作指令(如)、以及在JSP中声明Java变量和脚本片段。这个实验可能涉及输出简单的欢迎信息,展示如何通过JSP页面向用户呈现...
3. **JSP动作指令**: - 在这个BBS项目中,可能用到了JSP的动作指令来操作JavaBean,如`<jsp:useBean>`定义和初始化Bean,`<jsp:setProperty>`设置Bean属性,`<jsp:getProperty>`获取Bean属性。 4. **JSP内置对象*...
- **JSP动作指令**:如`<jsp:include>`用于页面包含,`<jsp:forward>`用于请求转发,`<jsp:useBean>`用于实例化JavaBean。 - **EL表达式**:简化页面与JavaBean的数据绑定,如`${bean.property}`。 - **脚本元素*...