【JSP】JSP基础学习记录(二)—— JSP的7个动作指令
2、JSP的7个动作指令:
动作指令与编译指令不同,编译指令是通知Servlet引擎的处理消息,而动作指令只是运行时的动作。编译指令在将JSP编译成Servlet时起作用;而处理指令通常可替换成JSP脚本,它只是JSP脚本。
JSP动作指令主要有如下7个。
jsp:forward:执行页面转向,将请求的处理转发到下一个页面。
jsp:param:用于传递参数,必须与其他支持参数的标签一起使用。
jsp:include:用于动态引入一个JSP页面。
jsp:plugin:用于下载JavaBean或Applet到客户端执行。
jsp:useBean:创建一个JavaBean的实例
jsp:setProperty:设置JavaBean实例的属性值。
jsp:getProperty:输出JavaBean实例的属性值。
2.1、forward指令:
forward指令用于将页面相应转发到另外的页面。既可以转发到静态的HTML页面,也可以转发到动态的JSP页面,或者转发到容器中的Servlet。
语法:
(1):<jsp:forward page="{relativeURL|<%expression%>}" />
(2):可传递参数(被跳转页可通过getParameter("name1")接收参数)
<jsp:forward page="{relativeURL|<%expression%>}" >
<jsp:param value="value" name="name1"/>
</jsp:forward>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>跳转页</title>
</head>
<body>
<jsp:forward page="2_1_2.jsp">
<jsp:param value="p2 Value" name="p2"/>
</jsp:forward>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>被跳转页</title>
</head>
<body>
<%
String p2 = request.getParameter("p2");
%>
<p>2_1_1传入的参数p1为:<%=request.getParameter("p1") %></p>
<p>2_1_1自定义的参数p2为:<%=p2 %></p>
</body>
</html>

注:forward跳转页面时浏览器中URL不会发生变化,仅仅是页面内容跳转。且请求页面的所有参数将转发到被跳转页,故被跳转页可通过getParameter接收请求跳转页的所有参数。从表面上看,<jsp:forward />指令给人一种感觉:它是将用户请求“转发”到了另一个新页面,但实际上,<jsp:forward />并没有重新向新页面发送请求,它只是完全采用了新页面来对用户生成响应——请求依然是以次请求,所以请求参数、请求属性都不会丢失。
2.2、include指令:
include指令是一种动态include指令(与上一节中说的静态include编译指令相对应),也用于包含某个页面,它不会导入被include页面的编译指令,仅仅被导入页面的body内容插入本页面。
语法:<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,则包含再原文件中。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Index</title>
</head>
<body>
<div>
<p>本尊是Index页</p>
</div>
<br />
<br />
<br />
<jsp:include page="2_2_2.jsp">
<jsp:param value="p1 Value" name="p1"/>
</jsp:include>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>footer</title>
</head>
<body>
<div>
<p>我是footer页中性感的小尾巴。。。</p>
<p>p1=<%=request.getParameter("p1") %></p>
</div>
</body>
</html>

注:
(1):静态导入是将导入页面的代码完全融入,两个页面融合成一个整体Servlet;而动态导入则在Servlet中使用include方法来引入被导入页面的内容。
(2):静态导入时被导入页面的编译指令会起作用;而动态导入时本被导入页面的编译指令则失去作用,只是插入被导入页面的body内容。
(3):动态包含还可以增加额外的参数。
2.3、useBean、setProperty、getProperty指令:
这三个指令都是与JavaBean相关的指令,其中useBean指令用于在JSP页面中初始化一个Java实例;setProperty指令用于为JavaBean实例的属性设置值;getProperty指令用于输出JavaBena实例的属性。
useBean语法:
<jsp:useBean id="name" class="classname" scope="page | request | session | application" />
id属性是JavaBean的实例名;class属性确定JavaBena的实现类;scope属性用于指定JavaBean实例的作用范围,该范围有以下4个值。
page:该JavaBean实例仅在该页面有效。
request:该JavaBean实例在本次请求有效。
session:该JavaBean实例在本次session有效。
Application:该JavaBean实例在本应用内一直有效。
setProperty语法:
<jsp:setProperty name="benaName" proterty="propertyName" value="value" />
其中name属性确定需要设定JavaBean的实例名;property属性确定需要设置的属性名;value属性则确定需要设置的属性值。
getProperty语法:
<jsp:getBean name="beanName" property="propertyName" />
其中name属性确定需要设定JavaBean的实例名;property属性确定需要输出的属性名。
首先声明一个实例化的person类型,仅有name与age两个属性
package cnblogsNodes;
/**
* JavaBean模型
*
* @author Clown
*
*/
public class personInfo {
private String name; // 姓名
private int age; // 年龄
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>useBean</title>
</head>
<body>
<jsp:useBean id="person1" class="cnblogsNodes.personInfo"
scope="application" />
<jsp:setProperty property="name" name="person1" value="Clown" />
<jsp:setProperty property="age" name="person1" value="1024" />
<div>
<p>
姓名:<jsp:getProperty property="name" name="person1" /></p>
<p>
年龄:<jsp:getProperty property="age" name="person1" /></p>
</div>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>getBean</title>
</head>
<body>
<jsp:useBean id="person1" class="cnblogsNodes.personInfo"
scope="application" />
<h3>获取Application的useBean</h3>
<div>
<p>
姓名:<jsp:getProperty property="name" name="person1" /></p>
<p>
年龄:<jsp:getProperty property="age" name="person1" /></p>
</div>
</body>
</html>


上文中useBean的scope为Application,故在getBean页面声明一个与useBean中同名的Person.java。就可以获取到useBean页面中设置的name与age属性。
2.4、plugin指令:
plugin指令主要用于下载服务器端的JavaBean或Applet到客户端执行。由于程序在客户端执行,因此客户端必须安装虚拟机。实际上类似于Activity,处于安全性的考虑使用很少了。参考书上也仅仅几句话略过,故我也没有再去深究他(各位客官原谅我的懒惰。。。)!
2.5、param指令:
param指令用于设置参数值,这个指令本身不能单独使用,因为单独的param指令没有实际意义。param指令可以与一下三个指令结合使用。
jsp:include
jsp:forward
jsp:plugin
语法:<jsp:param name="paramName" value="paramValue" />
上面介绍其他指令的时候已经使用过了。
尾:
这篇就到这里吧、下一篇记录JSP脚本中的9个内置对象
【JSP】JSP基础学习记录(二)—— JSP的7个动作指令的更多相关文章
- Spring Boot学习记录(二)--thymeleaf模板 - CSDN博客
==他的博客应该不错,没有细看 Spring Boot学习记录(二)--thymeleaf模板 - CSDN博客 http://blog.csdn.net/u012706811/article/det ...
- JavaScript学习记录二
title: JavaScript学习记录二 toc: true date: 2018-09-13 10:14:53 --<JavaScript高级程序设计(第2版)>学习笔记 要多查阅M ...
- 2.VUE前端框架学习记录二
VUE前端框架学习记录二:Vue核心基础2(完结)文字信息没办法描述清楚,主要看编码实战里面,有附带有一个完整可用的Html页面,有需要的同学到脑图里面自取.脑图地址http://naotu.baid ...
- AspectJ基础学习之二搭建环境(转载)
AspectJ基础学习之二搭建环境(转载) 一.下载Aspectj以及AJDT 上一章已经列出了他的官方网站,自己上去download吧.AJDT是一个eclipse插件,开发aspectj必装,他可 ...
- Material Calendar View 学习记录(二)
Material Calendar View 学习记录(二) github link: material-calendarview; 在学习记录一中简单翻译了该开源项目的README.md文档.接下来 ...
- 【笔记】MySQL的基础学习(二)
[笔记]MySQL的基础学习(二) MySQL 老男孩 一 视图 视图其实就是给表起个别名 1.创建视图 格式:CREATE VIEW 视图名称 AS SQL语句 CREATE VIEW v1 AS ...
- MVC+Ext.net零基础学习记录(五)
继MVC+Ext.net零基础学习记录(四),在后面我在既有的项目上又添加了一个子项目,还用前面提到的方法,进行主项目中引用DLL,然后子项目中生成事件中使用mkdir 进行拷贝 发现一个下午就总是报 ...
- MVC+Ext.net零基础学习记录(四)
在上一篇文章[MVC+Ext.net零基础学习记录(三)]中提到了利用MVC的Area可以做到项目分离,但是实际操作起来还是有很多问题的.比如,对于物理资源的访问,会报:没有相关资源 开始的时候,我在 ...
- 【JSP】JSP基础学习记录(四)—— Servlet
序: 众所周知JSP的基础也就是Servlet,如果单纯用Servlet类来响应用户的HTTP请求可以吗?答案是肯定的.JSP中的9个内置对象只是自动帮我们初始化的,没有他们一样可以实现web.只是工 ...
随机推荐
- Tomcat基本使用
Tomcat基本使用 1 下载并安装 1)下载:到apache官网.www.apache.org http://jakarta.apache.org(产品的主页) 2)版本: 安装版:wind ...
- Java RSA 分段加解密
RSA加解密: 1024位的证书,加密时最大支持117个字节,解密时为128:2048位的证书,加密时最大支持245个字节,解密时为256. 加密时支持的最大字节数:证书位数/8 -11(比如:204 ...
- 简单可用好实现的 HA 高可用设计
本文为作者原创,如需转载请注明出处. 1. 实现的功能 一主多备,自动选主 启动记录可查询 2. 前置需求 一台数据库用以记录,如 MySQL.Redis.MongoDB 等.关键是设计中的思想,用啥 ...
- 25款专业的 WordPress 电子商务网站主题
WordPress 作为最流行的博客系统,插件众多,易于扩充功能.安装和使用都非常方便,而且有许多第三方开发的免费模板,安装方式简单易用.这篇文章和大家分享35款专业的 WordPress 电子商务网 ...
- CSS中兼容的一面-----Hack
国庆了,出去玩耍,也有好长时间没有更新博客了.. 今天就和大家共享一篇技术博文吧.. CSS中兼容的一面-----Hack技术大全 兼容范围: IE:6.0+,FireFox:2.0+,Opera 1 ...
- 最近学习了Node,利用Express搭建了个人博客,总结下吧
node+express+jade+mongodb搭建了一套个人博客,我来总结下这几个家伙的使用感受吧! [node] 成熟插件库众多,真的是只有你想不到,没有它做不到的.而且对于有前端JS基础的童鞋 ...
- SQLServer ForXmlPath应用
SQLServer ForXmlPath应用 一:ForXmlPath介绍 forXmlPath 是SQL中的forXml语法的一部分,本文主要讲Path模式 ---SQL中FOR XML子句的 ...
- 简单代码在ABAP中实现声音的播放
这段代码的功能是在SAP里面实现声音的播放,可以用作程序提醒功能,和SAP里面’噹噹噹’那个声音的意思差不多.将来在项目中遇到客户想要SAP ABAP发出一点声音的时候就可以参考一下这个程序. REP ...
- sap后台作业管理/sap打印管理
sap后台作业管理: 后台作业,主要用于运行需要处理大量数据,对交互没有要求的程序.个人认为,简单的创建,配置和监控后台作业没有什么难度.后台作业管理最为困难的解决方案的取舍,系统负载的调控.失控的后 ...
- SharePoint 2010 站点附加数据升级到SP2013
首先,去SharePoint 2010的数据库服务器上,找到站点的数据库,备份.还原到SharePoint 2013环境中: 如果不知道数据库服务器是哪台,可以通过服务器场上的服务器查看: 如果不知道 ...