1、概述

JSP规范中定义了一系列的标准动作,Web容器按照规范进行了实现,可以解析并执行标准动作。而标准动作使用的是标准的xml语法,看上去也比较直观易懂,下面来看一个结构例子:
<jsp:action_name attribute1="value1" attribute2="value2"></jsp:acion_name>  
1
 
1
<jsp:action_name attribute1="value1" attribute2="value2"></jsp:acion_name>  

上面的代码中,action_name表示标准动作的名字,而attribute1和attribute2是标准动作的若干个属性。


2、三种常用的标准动作

2.1 forward

forward动作,用于在JSP页面进行请求转发,如下代码示例:
<jsp:forward page="loginSuccess.jsp"></jsp:forward>
1
 
1
<jsp:forward page="loginSuccess.jsp"></jsp:forward>

上述代码将把请求转发到loginSuccess.jsp页面,类似在Servlet中调用RequestDispatcher的forward方法进行请求转发。即在JSP页面中 <jsp:forward page="loginSuccess.jsp"></jsp:forward> 和 <% request.getRequestDispatcher("loginSuccess.jsp").forward(request, response); %> 是一样的效果。

包含该动作的页面,在你访问时,则会被请求转发到 loginSuccess.jsp 页面当中去。

2.2 include

形如:
<jsp:include page="head.jsp"></jsp:include>
1
 
1
<jsp:include page="head.jsp"></jsp:include>

include动作则表示在JSP页面中进行动态包含,这和JSP指令中的静态包含是稍有不同的。动态包含,即在运行期间访问被包含的页面,并将响应结果同包含页面的响应结果合并,生成最终的响应。类似在Servlet中调用RequestDispatcher的include方法进行包含。

和include指令的静态包含不同的在于,静态包含发生在翻译阶段,被包含的JSP文件不会生成Java类,而是翻译后包含在主体文件的Java类中,即静态包含最终只会生成一个Java类。而动态包含,则各自的JSP页面会生成各自的Java类,只是最终响应的结果会进行合并。

2.3 param

param动作往往是作为forward和include动作的子动作进行使用,用以传递参数。如下代码示例:
<jsp:forward page="copyright.jsp">
<jsp:param name="author" value="zhangsan"/>
</jsp:forward> <jsp:include page="head.jsp">
<jsp:param name="time" value="2018-01-30"/>
</jsp:include>
x
 
1
<jsp:forward page="copyright.jsp">
2
    <jsp:param name="author" value="zhangsan"/>
3
</jsp:forward>
4

5
<jsp:include page="head.jsp">
6
    <jsp:param name="time" value="2018-01-30"/>
7
</jsp:include>
8


上述代码使用param为forward和include动作传递参数,参数将被作为请求参数进行传递。如此处为head.jsp传递了参数time,那么在head.jsp页面中,则可以通过类似 <%=request.getParameter("time") %>的方式进行获取显示。


3、JavaBean相关的标准动作

所谓JavaBean,是用Java语言描述的软件组件模型,实际上就是一个JavaSE的类,该类遵循一定的规范:
  • 必须是public类
  • 必须有一个无参的public构造方法
  • 返回属性的方法为getXxx
  • 设置属性的方法为setXxx

而在JSP中,则有三个标准动作和JavaBean有关,由于现在更多使用JSTL、EL表达式,所以这些标准动作使用较少。

3.1 useBean

<jsp:useBean id="" class="" scope="" ></jsp:useBean>
1
 
1
<jsp:useBean id="" class="" scope="" ></jsp:useBean>
使用useBean标准动作,可以获取(或创建)一个在 {scope} 范围内名为 {id} 的 {class} 类,scope范围可以为page、request、session、application。

<jsp:useBean id="zhangsan" class="com.learn.Person" scope="request" ></jsp:useBean>
1
 
1
<jsp:useBean id="zhangsan" class="com.learn.Person" scope="request" ></jsp:useBean>
如上例的含义为:调用request.getAttribute("zhangsan"),如果没有zhangsan,则调用Person的无参构造方法创建,并setAttribute("zhangsan", new Person())。

3.2 setProperty

<jsp:setProperty name="" property="" param|value="" />
1
 
1
<jsp:setProperty name="" property="" param|value="" />
setProperty用来对JavaBean对象的属性进行赋值,替代setXxx方法。其中:
  • name 表示JavaBean对象的id值
  • property 表示JavaBean对象的属性名
  • param 如果希望注入的值是请求参数,则使用param属性
  • value 如果希望注入的值是一个常量,则使用value属性

3.3 getProperty

<jsp:getProperty name="" property="" />
 
1
<jsp:getProperty name="" property="" />
getProperty用来调用JavaBean对象的getXxx方法获取对应属性值,其中:
  • name 表示JavaBean对象的id值
  • property 表示JavaBean对象的属性名


4、其他

以上就是常见的几种JSP标准动作了,还有一部分用得就更少了,如果有兴趣可以自行了解


5、写在后面的话

但是如今,谁还用什么JSP标准动作啊???


[04] JSP标准动作的更多相关文章

  1. jsp标准动作

    JSP标准动作元素的使用格式为:<jsp:标记名>,它採用严格的xml标签语法来表示.这些jsp标签动作元素是在用户请求阶段运行的,这些标准动作元素是内置在jsp文件里的,所以能够直接使用 ...

  2. Java Web程序设计笔记 • 【第4章 JavaBean和JSP标准动作】

    全部章节   >>>> 本章目录 4.1 JavaBean 4.1.1 JavaBean 概述 4.1.2 JavaBean的重要性 4.1.3 JavaBean的特点 4.1 ...

  3. include指令和<jsp:include>标准动作

    利用JSP的包含机制,可以有效的避免重复,把可重用的部分独立出去,使用include把它们包含到当前文件.JSP有两种包含机制:include指令和<jsp:include>标准动作. 1 ...

  4. jsp:useBean标准动作

    1.bean法则 JavaBean和企业JavaBean是完全不相干的两个东西.普通的非企业JavaBean需要满足一定的规范才能被JSP和servlet使用: 1)必须有一个无参数的公共构造函数: ...

  5. JSP 标准标签库JSTL

    JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签. 除了这些,它还提供 ...

  6. 04 jsp,EL,JSTL

    jsp:Java Server Page  什么是jsp?从用户角度看待 ,就是是一个网页 , 从程序员角度看待 , 其实是一个java类, 它继承了servlet,所以可以直接说jsp 就是一个Se ...

  7. Spring MVC -- JSP标准标签库(JSTL)

    JSP标准标签库(JavaServer Pages Standard Tag Library,JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能.JSTL支持通用的.结构化的任务,比如迭 ...

  8. JSP 标准标签库(JSTL)

    JSP 标准标签库(JSTL) JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签, ...

  9. JSP(include指令与<jsp:include>动作的区别)

    <%@ page language= "java" contentType="text/html;charset=UTF-8" %><html ...

随机推荐

  1. HTTP协议web开发知识点

    HTTP协议 HTTP协议简介 超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式.协作式和超媒体信息系统的应用层协议.HTTP是万维网的数 ...

  2. Linux 磁盘使用查看 查看使用磁盘程序 Monitoring disk activity in linux

    5 TOOLS FOR MONITORING DISK ACTIVITY IN LINUX Here is a quick overview of 5 command-line tools that ...

  3. 利用搜狐新闻语料库训练100维的word2vec——使用python中的gensim模块

    关于word2vec的原理知识参考文章https://www.cnblogs.com/Micang/p/10235783.html 语料数据来自搜狐新闻2012年6月—7月期间国内,国际,体育,社会, ...

  4. ipa的plist文件查看

    1.ipa包解压缩:右键.ipa包,使用[归档实用工具/unarchiver]打开 2.进入解压缩后的payload目录,右键ipa包-显示包内容 3.找到info.plist文件,直接拖拽出来 4. ...

  5. 【HANA系列】SAP HANA XS使用Odata标志全解析

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA XS使用Oda ...

  6. python中remove的一些坑

    前几天,使用python时遇到这么一个需求,删除一个列表中值为1的元素.我寻思着使用remove方法,但是remove方法只会删除第一个,于是我使用for循环去删除.代码和运行结果如下: 当时这个结果 ...

  7. 启动Myeclipse报错“Failed to create the Java Virtual Machine”的解决办法

    我安装的是Myeclipse 10.7.1.装上好久没用,今天启动突然报错:Failed to create the Java Virtual Machine. 检查Myeclipse安装好使用时好的 ...

  8. nginx+uwsgi+djangos部署项目完整

    1.基本信息 Linux 版本:SentOS7.4 Python 版本:3.7.1 2.下载 uWSGI pip3 install uwsgi uwsgi 主要的任务是座位分发路由的服务器. 先写一个 ...

  9. 阿里八八β阶段Scrum(5/5)

    今日进度 陈裕鹏: 简单信息抽取编码完成 叶文滔: 处理了信息抽取编码的一些BUG,修复了日程界面不会自动更新添加的日程的BUG,修改了原先测试用的TAG以及数据分析部分数据计算数值错误的问题 王国超 ...

  10. DataUtils对Connection的获取、释放和关闭的操作学习

    DataSourceUitls介绍 DataSourceUitls类位于org.springframework.jdbc.datasource包下,提供了很多的静态方法去从一个javax.sql.Da ...