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个动作指令的更多相关文章

  1. Spring Boot学习记录(二)--thymeleaf模板 - CSDN博客

    ==他的博客应该不错,没有细看 Spring Boot学习记录(二)--thymeleaf模板 - CSDN博客 http://blog.csdn.net/u012706811/article/det ...

  2. JavaScript学习记录二

    title: JavaScript学习记录二 toc: true date: 2018-09-13 10:14:53 --<JavaScript高级程序设计(第2版)>学习笔记 要多查阅M ...

  3. 2.VUE前端框架学习记录二

    VUE前端框架学习记录二:Vue核心基础2(完结)文字信息没办法描述清楚,主要看编码实战里面,有附带有一个完整可用的Html页面,有需要的同学到脑图里面自取.脑图地址http://naotu.baid ...

  4. AspectJ基础学习之二搭建环境(转载)

    AspectJ基础学习之二搭建环境(转载) 一.下载Aspectj以及AJDT 上一章已经列出了他的官方网站,自己上去download吧.AJDT是一个eclipse插件,开发aspectj必装,他可 ...

  5. Material Calendar View 学习记录(二)

    Material Calendar View 学习记录(二) github link: material-calendarview; 在学习记录一中简单翻译了该开源项目的README.md文档.接下来 ...

  6. 【笔记】MySQL的基础学习(二)

    [笔记]MySQL的基础学习(二) MySQL 老男孩  一 视图 视图其实就是给表起个别名 1.创建视图 格式:CREATE VIEW 视图名称 AS SQL语句 CREATE VIEW v1 AS ...

  7. MVC+Ext.net零基础学习记录(五)

    继MVC+Ext.net零基础学习记录(四),在后面我在既有的项目上又添加了一个子项目,还用前面提到的方法,进行主项目中引用DLL,然后子项目中生成事件中使用mkdir 进行拷贝 发现一个下午就总是报 ...

  8. MVC+Ext.net零基础学习记录(四)

    在上一篇文章[MVC+Ext.net零基础学习记录(三)]中提到了利用MVC的Area可以做到项目分离,但是实际操作起来还是有很多问题的.比如,对于物理资源的访问,会报:没有相关资源 开始的时候,我在 ...

  9. 【JSP】JSP基础学习记录(四)—— Servlet

    序: 众所周知JSP的基础也就是Servlet,如果单纯用Servlet类来响应用户的HTTP请求可以吗?答案是肯定的.JSP中的9个内置对象只是自动帮我们初始化的,没有他们一样可以实现web.只是工 ...

随机推荐

  1. java中的几种取整函数

    舍掉小数取整:Math.floor(2)=2 舍掉小数取整:Math.floor(2.1)=2 舍掉小数取整:Math.floor(2.5)=2 舍掉小数取整:Math.floor(2.9)=2 负数 ...

  2. 一道js面试题

     当然这道面试题并不一定就能在你面试的时候遇到,但是不怕一万就怕万一,会的多一些还是好的. 问:怎么判断一串字符中哪个字符出现的最多,最多几次或者这串字符分别有哪些,每个字符出现了几次.写你请出运算代 ...

  3. MySQL之浅谈MySQL的存储引擎

    什么是MySql数据库 通常意义上,数据库也就是数据的集合,具体到计算机上数据库可以是存储器上一些文件的集合或者一些内存数据的集合.     我们通常说的MySql数据库,sql server数据库等 ...

  4. swift学习笔记之-高级运算符

    //高级运算符 import UIKit /*高级运算符(Advanced Operators):位运算符.溢出运算符.优先级和结合性.运算符函数.自定义运算符 位运算符: 1.位运算符可以操作数据结 ...

  5. 世界城市 XML

    下载地址:http://www.qlcoder.com/uploads/dd01140921/147988679320159.xml <Location> <CountryRegio ...

  6. 对比MS Test与NUnit Test框架

    前言: 项目中进行Unit Test时,肯定会用到框架,因为这样能够更快捷.方便的进行测试. .Net环境下的测试框架非常多,在这里只是对MS Test和NUnit Test进行一下比较, 因为这两个 ...

  7. CSS3利用text-shadow属性实现多种效果的文字样式展现

    一.效过图展示: 已经是比较久之前学习的文字效果了.但是还是很实用很有趣的.利用CSS3提供的text-shadow属性可以给页面上的文字添加阴影效果,因此可以替换掉之前使用过的一些繁琐的图片.到目前 ...

  8. SharePoint Online 创建门户网站系列之创建栏目

    前 言 SharePoint Online的栏目,简单描述即显示在首页上的各个模块信息,这里,我们主要介绍我们首页上的栏目,包括简介类型.新闻列表类型.图片类型: 下面,让我们开始在SharePoin ...

  9. Autodesk 最新开发技术研讨会 -8月22日-Autodesk北京办公室

    为了增进与广大中国地区Autodesk产品的二次开发人员的了解与互动,帮助中国地区的Autodesk产品二次开发人员了解Autodesk最新的二次开发技术动向,并获得Autodesk公司专业开发支持顾 ...

  10. 之三:CAAnimationGroup - 动画组

    动画组顾名思义就是将多个不同的动画效果组合起来同时作用于一个层上 代码演示: // 创建基本路径 CGMutablePathRef path = CGPathCreateMutable(); // 设 ...