【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>
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 7 <title>跳转页</title> 8 </head> 9 <body> 10 <jsp:forward page="2_1_2.jsp"> 11 <jsp:param value="p2 Value" name="p2"/> 12 </jsp:forward> 13 </body> 14 </html>
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 7 <title>被跳转页</title> 8 </head> 9 <body> 10 <% 11 String p2 = request.getParameter("p2"); 12 %> 13 <p>2_1_1传入的参数p1为:<%=request.getParameter("p1") %></p> 14 <p>2_1_1自定义的参数p2为:<%=p2 %></p> 15 </body> 16 </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,则包含再原文件中。
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 7 <title>Index</title> 8 </head> 9 <body> 10 <div> 11 <p>本尊是Index页</p> 12 </div> 13 <br /> 14 <br /> 15 <br /> 16 <jsp:include page="2_2_2.jsp"> 17 <jsp:param value="p1 Value" name="p1"/> 18 </jsp:include> 19 </body> 20 </html>
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 7 <title>footer</title> 8 </head> 9 <body> 10 <div> 11 <p>我是footer页中性感的小尾巴。。。</p> 12 <p>p1=<%=request.getParameter("p1") %></p> 13 </div> 14 </body> 15 </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两个属性
1 package cnblogsNodes; 2 3 /** 4 * JavaBean模型 5 * 6 * @author Clown 7 * 8 */ 9 public class personInfo { 10 private String name; // 姓名 11 private int age; // 年龄 12 13 public String getName() { 14 return name; 15 } 16 17 public void setName(String name) { 18 this.name = name; 19 } 20 21 public int getAge() { 22 return age; 23 } 24 25 public void setAge(int age) { 26 this.age = age; 27 } 28 29 }
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 7 <title>useBean</title> 8 </head> 9 <body> 10 <jsp:useBean id="person1" class="cnblogsNodes.personInfo" 11 scope="application" /> 12 <jsp:setProperty property="name" name="person1" value="Clown" /> 13 <jsp:setProperty property="age" name="person1" value="1024" /> 14 15 <div> 16 <p> 17 姓名:<jsp:getProperty property="name" name="person1" /></p> 18 <p> 19 年龄:<jsp:getProperty property="age" name="person1" /></p> 20 </div> 21 </body> 22 </html>
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 7 <title>getBean</title> 8 </head> 9 <body> 10 <jsp:useBean id="person1" class="cnblogsNodes.personInfo" 11 scope="application" /> 12 <h3>获取Application的useBean</h3> 13 <div> 14 <p> 15 姓名:<jsp:getProperty property="name" name="person1" /></p> 16 <p> 17 年龄:<jsp:getProperty property="age" name="person1" /></p> 18 </div> 19 </body> 20 </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个内置对象
转载于:https://www.cnblogs.com/MangoCai/p/4948772.html
【JSP】JSP基础学习记录(二)—— JSP的7个动作指令相关推荐
- Mendix敏捷开发零基础学习《二》-进阶(Microflow微流、表单验证、运算符、条件判断、数据嵌套、触发器、Debug问题跟踪、版本管理)
目录结构 Mendix敏捷开发零基础学习<二> 一.Microflow微流 1.引言 2.常见的功能 3.微流可以做那些事情? 3.1 举例1(用微流打开新增页面) 3.2 举例2(用微流 ...
- HTML基础学习记录
HTML基础学习记录 一.HTML的学习 1.网页的组成 2.HTML是什么 2.HTML特点 3.HTML基本结构 4.HTML标签语法 (1)< html >标签 (2)< he ...
- 【笔记】MySQL的基础学习(二)
[笔记]MySQL的基础学习(二) MySQL 老男孩 一 视图 视图其实就是给表起个别名 1.创建视图 格式:CREATE VIEW 视图名称 AS SQL语句 CREATE VIEW v1 AS ...
- MySQL学习记录 (二) ----- SQL数据查询语句(DQL)
相关文章: <MySQL学习记录 (一) ----- 有关数据库的基本概念和MySQL常用命令> <MySQL学习记录 (二) ----- SQL数据查询语句(DQL)> &l ...
- TCL/Tk基础学习(二)
TCL/TK基础学习(二) 表达式 算术操作符 关系.逻辑.按位.选择操作符 函数 表达式 Tcl表达式由操作符.操作数.圆括号等构成.于C语言.verilog用法几乎相同. # 算术操作符.逻辑运算 ...
- Android动画学习记录二(属性动画、估值器和插值器)
Android动画学习记录二(属性动画.估值期和插值器) Android动画学习记录二(属性动画.估值期和插值器) Android动画学习记录二(属性动画.估值期和插值器) 一.补间动画缺陷 二.属性 ...
- HTML基础学习(二)---注册页面书写
HTML基础学习(二)---注册页面书写 一.注册页面基本内容 1.页面标题 2.注册后跳转页面到index.html 3.用户名.密码.确认密码 4.手机号.邮箱 5.性别 6.爱好 7.所在城市 ...
- HTML学习记录二:html标签(五):超链接标签
HTML学习记录二:html标签(五):超链接标签 一.超链接标签写法 二.超链接标签的属性 三.超链接的锚点用法 四.链接分类 一.超链接标签写法 在 HTML 标签中, 标签用于定义超链接,作用是 ...
- 无线通信零基础学习记录(2)——GSM空中接口物理层的设计
无线通信零基础学习记录(2)--GSM空中接口物理层的设计 本章解释清楚了之前未搞懂的名词,如时隙等,以及各种信道类型,在此一并总结. TDMA空中接口技术 时分多址(TDMA,Time Divisi ...
- Python基础学习(二)-条件,循环语句
Python基础学习(二)-条件,循环语句 一,条件语句 1,if else if 判断条件: 执行语句... e ...
最新文章
- 李德仁院士:5G时代空间信息如何实现智能服务
- T-SQL查询——数据集之间的运算
- 一直出现 Enter passphrase for key '/root/.ssh/gitkey12.pub'
- bootstrap 模态框垂直居中实现方法
- 智能时代,企业如何“聚数为智”加速数字化转型?
- idea 调试远程tomcat
- Julia: Array的确很强大
- 操作系统原理好书推荐
- Wazuh的rootkit扫描性能优化
- 服务器装系统不识别硬盘分区,安装系统无法识别分区解决方法
- Call Center核心词汇含义及功能
- TDD实践之实用主义
- 清华王牌专业建系70年,撑起中国半导体半壁江山,王兴李健都是系友
- 电脑分屏没有声音_Win10笔记本增加双屏显示器及解决没有声音的问题
- 百万点赞怎么来?用 Python 制作抖音视频原来这么简单
- Apache的winnt_accept: Asynchronous AcceptEx failed问题
- 罗永浩的1.1亿,薇娅的卖火箭,蛋蛋的4.8亿,直播魔幻夜埋下了什么
- 关于出现“unknown uid 1000: who are you?”的问题
- 花式玩转Linux集群免密登录
- 原始设备制造商OEM简介
热门文章
- 在 Linux、 FreeBSD、 OpenBSD等UNIX操作系统 中查看 所有安装的软件或包
- 解决非javascript浏览器的问题
- 拦截器BridgeInterceptor分析
- android 生成apk名字自动已,Jenkins打包android应用时自动签名apk详解
- 查询手机号段对应地区编码_Elasticsearch实战 | 如何从数千万手机号中识别出情侣号?...
- python tkinter库Entry控件Text控件
- 硬盘序列号是唯一的吗_NANDrive 解决方案 微型固态硬盘设计方案
- python多线程爬虫界面_Python实现贴吧多线程网盘爬虫
- 直方图中最大的矩形(单调栈2)
- 李宏毅机器学习之Classification