JSP动作元素在请求处理阶段起作用,他们会被转换成Java代码来执行操作,如访问一个Java对象或调用方法。

JSP动作元素是用XML语法写成的。

动作元素基本上都是预定义的函数,JSP规范定义了一系列的标准动作,这些标准动作使用jsp作为前缀:

<jsp:动作名称 属性=“属性值” 属性=“属性值” />
<jsp:useBean ... />      <!-- 寻找或者实例化一个JavaBean -->
<jsp:setProperty ... /> <!-- 设置JavaBean的属性 -->
<jsp:getPropery ... /> <!-- 获取JavaBean的属性 -->
<jsp:include ... /> <!-- 在页面并请求的时候引入一个文件 -->
<jsp:param ... /> <!-- 向被包含页面传递参数 -->
<jsp:forward ... /> <!-- 把请求转到一个新的页面 -->
<jsp:plugin ... /> <!-- 根据浏览器类型为Java插件生成OBJECT或EMBED标记 -->
<jsp:element ... /> <!-- 定义动态XML元素 -->
<jsp:attribute ... /> <!-- 设置动态定义的XML元素属性 -->
<jsp:body ... /> <!-- 设置动态定义的XML元素内容 -->
<jsp:text ... /> <!-- 在JSP页面和文档中使用写入文本的模板 -->

所有动作元素都要有两个属性:id属性、scope属性

id属性是动作元素的唯一标识,可以在JSP页面中引用。动作元素创建的id值可以通过pageContext来调用。

scope属性用于识别动作元素的声明周期。scope属性有四个可能的值:page、request、session、application

id属性和scope属性有直接关系,scope属性定义了相关id对象的寿命。

具体的动作可查询页面:https://www.runoob.com/jsp/jsp-actions.html

<jsp:useBean ... />动作元素

用于加载一个将在JSP页面中使用的JavaBean

在类加载完之后,便可通过<jsp:getProperty ... />和<jsp:setProperty ... />动作获取和修改bean的属性。

<jsp:useBean id="name" class="package.class" />
<!-- class属性用于指定Bean的完整类名 -->
<!-- type属性用于指定引用该对象变量的类型 -->
<!-- beanName属性用于通过java.beans.Beans的instantiate()方法指定Bean的名字 -->

<jsp:setProperty ... />动作元素

用于设置已经实例化好的Bean对象的属性,有两种用法

第一种用法:在<jsp:useBean ... >元素的外面使用,此时,不管<jsp:useBean ... >是否找到了一个现有的Bean,还是新创建一个Bean实例,<jsp:setProperty ... > 都会执行

第二种用法:在<jsp:useBean ... >元素的里面使用,此时,<jsp:setProperty ... >只有在新建的Bean实例中才会执行,如果使用现有的实例则不执行<jsp:setProperty ... />

<!-- 第一种用法 -->
<jsp:useBean id="name" ... />
...
<jsp:setProperty name="myName" property="someProperty" ... /> <!-- 第二种用法 -->
<jsp:useBean id="name" ... >
  ...
  <jsp:setProperty name="myName" property="someProperty" ... />
</jsp:useBean>
<!-- name属性指明要设置属性的Bean -->
<!-- property属性指明需要设置的属性 -->
<!-- value属性指定Bean属性的值 -->
<!-- param属性指定用哪个请求参数作为Bean属性的值,如果当前请求没有参数,则什么也不做。-->
<!-- value和param不能同时使用,但可以使用其中任意一个 -->

<jsp:getProperty ... />动作元素

用于获取指定Bean属性的值,自动转换成字符串,然后调用内置对象out输出

<jsp:useBean id="name" ... />
...
<jsp:getProperty name="myName" property="someProperty" ... />
<!-- name属性指定要检索的Bean属性名称,Bean必须已定义 -->
<!-- property属性指明要获取的属性 -->
// 一个JavaBean
package app02a.beanTest; public class BeanTest {
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;
} }
<!-- 一个JSP文件 -->
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>testBean</title>
</head>
<body>
<h2>使用 JavaBean 的实例</h2>
<jsp:useBean id="test" class="app02a.beanTest.BeanTest" />
<!-- 设置属性 -->
<jsp:setProperty name="test" property="name" value="leon" />
<jsp:setProperty name="test" property="age" value="18" />
<!-- 获取属性值 -->
姓名:<jsp:getProperty name="test" property="name" /> <br />
年龄:<jsp:getProperty name="test" property="age" />
</body>
</html>

<jsp:include ... />动作元素

用来包含静态和动态的文件,该动作把指定文件插入正在生成的页面。

include指令是在JSP文件被转换成Servlet的时候引入文件,而include动作是在页面被请求时引入文件。

include指令不能传递参数,而include动作可以传递参数(使用<jsp:param ... />动作)

<jsp:include page="相对url地址" flush="true" />
<!-- page属性指明要包含到当前页面中文件的相对url地址 -->
<!-- flush属性指明包含资源前是否刷新缓存区 -->
<!-- data.jsp文件代码 -->
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <p>
今天的日期是:<%=(new java.util.Date()).toString() %>
所在城市是:<%=request.getParameter("city") %> <!-- 获取参数 -->
</p> <!-- main.jsp文件代码 -->
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>include动作</title>
</head>
<body>
<h2>include动作实例</h2>
<jsp:include page="date.jsp" flush="ture" >
    <jsp:param name="city" value="Beijing" /> <!-- 向其他页面传递参数 -->
  </jsp:include>
</body>
</html>

测试效果

<jsp:param ... /> 和 <jsp:params ... />动作元素

该动作元素不能单独使用,可以配合<jsp:include ... /> <jsp:forward ... />等动作一起使用。作用是向其他页面传递参数。

<jsp:forward... />动作元素

将请求转到另一个页面,是服务器内部的装发,对浏览器是透明的,浏览器的URL并不会改变。该动作只有一个属性page

<jsp:forward page="相对url地址" />
<!-- page属性指定转发到的地址,可以是一个JSP页面或一个Servlet -->
<!-- date.jsp文件 -->
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <p>
今天的日期是:<%=(new java.util.Date()).toString() %>
所在城市是:<%=request.getParameter("city") %> <!-- 获取传递过来的参数 -->
</p> <!-- main.jsp文件 -->
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>include动作</title>
</head>
<body>
<h2>include动作实例</h2>
<jsp:forward page="date.jsp" > <!-- 将请求转发到date.jsp页面 -->
<jsp:param name="city" value="Beijing" /> <!-- 向date.jsp页面传递参数 -->
</jsp:forward> </body>
</html>

<jsp:plugin... />动作元素

<jsp:element... />动作元素

<jsp:attribute... />动作元素

<jsp:body... />动作元素

<jsp:text... />动作元素

JSP动作的更多相关文章

  1. JSP动作元素——————理论篇

    JSP动作元素的组成及作用 JSP使用Action来控制Servlet引擎的行为,可重复使用JavaBean组件. 常用Action: jsp:param       在 jsp:include.js ...

  2. 重温JSP学习笔记--JSP动作标签

    上一篇笔记写的是jsp的三个指令九个内置对象,这篇随笔开始写jsp的动作标签,动作标签是由服务器(Tomcat)来解释执行,与java代码一样,都是在服务器端执行的,jsp动作标签有十几多个,这里只写 ...

  3. JSP动作元素

    JSP动作元素分类 <jsp:include page="content.jsp"></jsp:include> 使用<%@ include%> ...

  4. JSP 动作元素

    JSP动作元素 1.  动作元素分类 用来动态的包含文件.网页跳转及使用JavaBean组件等. 语法:<jsp:XXX />或者<jsp:XXX></jsp:XXX&g ...

  5. JavaBean用JSP调用和使用JSP动作标签的区别

    javabean的类可以用jsp动作标签实例化并使用. <!-- 下面这句是对Javabean类person的引用,引用的实例是p2 --> <jsp:useBean id=&quo ...

  6. jsp动作标签概述

    *Jsp动作标签概述: >动作标签的作用是用来简化java脚本 >jsp动作标签是JavaWeb内置的动作标签,它们是已经定义好的动作标签,我们可以拿来直接使用. >JavaWeb一 ...

  7. Java学习-038-JavaWeb_007 -- JSP 动作标识 - plugin

    plugin 动作时用来在 JSP 页面中加载 Java Applet 或者 JavaBean 组件,语法格式如下所示: <jsp:plugin type="bean|applet&q ...

  8. Java学习-037-JavaWeb_006 -- JSP 动作标识 - include

    这个动作是指在当前的页面中包含一个或多个 JSP 页面或者 HTML 文件,语法:<jsp:include file="../jsp/login.jsp" flush=&qu ...

  9. Java学习-036-JavaWeb_005 -- JSP 动作标识 - forward

    JSP 动作主要作用是根据指定的动作进行相应的处理. 一.param 动作 用来给 HTML 文件和 JSP 文件传递参数的,经常和 forward.include.plugin 动作结合使用,语法格 ...

  10. JSP动作跳转页面的时候与根目录的问题

    在JSP动作:<jsp:forward page="....">中,这个page属性所指定的页面要包含根目录的话,必须要用"/",不能够用" ...

随机推荐

  1. 1、CDH 搭建Hadoop在安装之前(存储空间规划)

    Cloudera Manager的存储空间规划 最低要求角色: 完全管理员 Cloudera Manager跟踪许多后台进程中的服务,作业和应用程序的度量标准.所有这些指标都需要存储.根据组织的大小, ...

  2. nginx反向代理:两个域名指向不同web服务端口

    一台服务器上安装了zabbix服务和jumpserver服务,两个域名zabbix.xxxx.xxxx和jumserver.xxx.xxxx 一.编辑/etc/nginx/conf.d目录下nginx ...

  3. laravel 自定义常量的方法

    注意:laravel版本为5.1  第一种方法 在本地可以用 我上传到服务器发现用不了  有待解决 第二种方法  在本地可以用 上传服务器后 要把 constants.php   文件权限改为 755 ...

  4. 网页性能优化:防止JavaScript、CSS阻塞浏览器渲染页面

    网页中引用的外部文件: JavaScritp.CSS 等常常会阻塞浏览器渲染页面.假设在 <head> 中引用的某个 JavaScript 文件由于各种不给力需要2秒来加载,那么浏览器渲染 ...

  5. c++中的类(class)-----笔记(类模板)

    1,一个模板类至少具有一个类参数,类参数是个符号以表示将要被某个确定数据类型代替的类型. #include<iostream> #include<string> using n ...

  6. 二进制中1的个数(python)

    题目描述 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. # -*- coding:utf-8 -*- class Solution: def NumberOf1(self, n): ...

  7. pta l2-11(玩转二叉树)

    题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805065406070784 题意:给定二叉树的结点个数n,其前 ...

  8. 填坑专记-手脱FSG壳

      妈呀,脱FGS壳真的是坎坷颇多,多亏吾爱破解前辈们的帮忙.我一定要记录下来,省的以后再无法解决.   已经查看是FSG壳了.找到入口也容易了.重点就是脱壳并修复好它. 脱壳   OEP为:   使 ...

  9. vue-app项目,将px自动转化为rem

    1. 安装lib-flexible: npm install --save lib-flexible 2.安装postcss-loader和postcss-px2rem: npm install -- ...

  10. 33 【kebernetes】一个错误的解决方案

    在安装或者重新安装kubernetes时,我碰到了这个错误: Unable to update cni config: No networks found in /etc/cni/net.d/ 这个错 ...