企业软件,WEB和对于他们无限美好的遐想(第五日)--2014-3-14--IT日 + Struts 原理分析 (四)
上接前一日
--------------------------------------------------
12.JSP指令元素
JSP指令元素是JSP非常重要的组成部分。指令元素有三个,page、include和taglib,指令元素的语法格式为<%@ ************** %>,使用JSP指令元素可以设定JSP网页属性、描述网页信息等,下面针对三个指令元素进行详细的讲解:
12.1 page元素:初始化JSP网页的属性,其语法结构为
<%@ page attribute = "value" attribute2 = "value2"...%>
page元素的作用范围是整个JSP页面,因此可以把该元素放置在页面上任何位置,但是为了保证可读性,建议将其放置在文件顶部。
page元素主要有13个属性,详见下表:(该表最初的总结整理来源于 白广元等编著的《Java Web整合开发完全自学手册:Struts + Hibernate + Spring + Eclipse》page 23 在此谢谢白老师的总结和整理)
属性 | 定义 | 默认值 |
language = "scriptingLanguage" | 指定JSP服务器编译JSP网页的编译语言 | 目前只支持JAVA语言 |
extends = "className" | 定义JSP页面产生的Servlet继承哪个父类 | |
import = "importList" | 定义JSP页面引用的其他Java API | |
session = "true | false" | 是否使用session对象 | true |
Buffer = "none | size inkb" | 决定输出流 (Out Stream) 是否有缓冲区 | 8KB |
autoFlush = "true | false" | 决定输出流的缓冲区是否需要自动清除,缓冲区满了会产生异常(Exception) | true |
isThreadSafe ="true | false" | 多线程、并发设置,也就是告诉JSP服务器是否可以处理一个以上的请求 | true |
Info = “text” | JSP网页相关信息 | |
errorPage = "error_url" | JSP页面异常后网页会被重定向到哪一个URL | |
isErrorPage = "true | false" | 表示此JSP网页是否为处理异常错误的页面 | false |
contentType = "ctinfo" | 表示MIME类型和JSP网页的编码方式 | |
pageEncoding = "ctinfo" | 设置JSP网页编码方式 | |
isELIgnored = "true | false" | 设置JSP网页是否忽略EL表达式 | false |
提醒:1.session,session这个概念在计算机网络中极为重要,一般称为:会话。
计算机专业术语的Session:指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统之间所经过的时间,这个期间可以包括许多操作。
Web中的Session:指用户浏览网站时,从进入网站到浏览器关闭所经过的这段时间,综上所述,Session实际上是一个特定的时间概念。(因此,Session的概念需要包括客户端,服务器端以及不中断的操作时间。也就是每个客户端都会同服务器端建立单一的session,例如:A用户和C服务器建立连接时所处的Session同B用户和C服务器建立连接时所处的Session是两个不同的Session。) --在JSP中 session的具体工作原理将会在后续的专题中进行讲解和分析,在此不再叙述。
2.MIME(Multipurpose Internet Mail Extensions):多用途互联网邮件扩展类型,就是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。
3.import属性可以使用多次,其他属性只能使用一次。
12.2 include元素:该元素用于向某JSP页面插入其他JSP文件的HTML文本和JAP代码等,在编译JSP网页时,服务器会先将相关的JSP页面粘合在一起,然后统一进行编译。在这里需要注意,如果include进来的JSP页面上拥有相同的JAVA变量或者函数定义,那么合并后编译会报错,HTML标签也同样会相互影响,因此,要避免片段文件中有<html>、<body>之类的全局标签出现。
该元素只有一个属性,其语法结构为: <%@ include file = "relativeURL" %>
12.3 taglib元素,能够让用户自定义新的标签。(后续会讲解如何自定义标签,如何使用自定义标签)
该元素的语法为: <%@ taglib uri = "tagLibraryURI" prefix = "tagPrefix"%>
uri 说明taglibrary的存放位置
prefix 用来区分多个自定义标签
13.JSP动作元素 或者叫 动作标签、动作指令
JSP动作元素是JSP自带的标准标签库,该库利用XML语法格式的标记来控制JSP服务器的行为。利用JSP动作元素可以动态地插入文件、重用JavaBean组件、把用户重定向到另外的页面、为Java插件生产HTML代码。该元素的整体语法格式为 : <jsp:xxx > xxxxxxxxx </jsp>
JSP中,标准动作元素包括
<jsp:include>:动态插入文件标签
<jsp:param>:KYE/VALUE标签
<jsp:forward>:跳转标签
<jsp:useBean>:JavaBean标签
<jsp:setProperty>:设置JavaBean属性标签
<jsp:getProperty>:读取JavaBean属性标签
<jsp:plugin>:插件标签
<jsp:fallback>:报错标签
<jsp:element>:元素标签(jsp2.0)
<jsp:attribute>:属性标签(jsp2.0)
<jsp:body>:body标签(jsp2.0)
13.1 <jsp:include>:动态插入文件标签,该标签的作用是把文件或表达式代表的文件插入到正在生成的JSP页面中去,这里的动态插入与<%@ include %>这种静态引入文件的方式不同,不同点如下:
13.1.1引入文件的时间不同:静态引入是在JSP文件被转换成Servlet的时候进行的,动态引入是在页面被请求的时候进行的。
13.1.2引入文件的内容和格式不同:静态引入的文件内容和格式是JSP网页片段,而动态引入的则是完整的JSP文件,JSP服务器会结合客户端请求将两个JSP文件分别转化为不同的Servlet,此处的变量名、方法等都是可以重复的。
13.1.3引入文件的效率不同:静态的会快一些。
13.1.4引用文件名的方式不同:相比静态引用文件,动态引用文件的文件名可以是一个变量或表达式。
13.1.5编译范围不同:动态引用文件会单独编译相关的文件,不会进行整体编译。
该标签的语法为:<jsp:include page = "relative URL" flush = "true | false"/> , flush = true 表示缓冲区满时会自动情况(默认为false)。
13.2 <jsp:forward>:跳转标签,该标签的作用是把请求转到其他页面,语法为 <jsp:forward page = "relative URL" />,其中page的参数值可以为表达式,比如,<jsp:forward page = "<%=javaExpression%>" />
13.3 <jsp:useBean>:JavaBean标签,<jsp:setProperty>:设置JavaBean属性标签,<jsp:getProperty>:读取JavaBean属性标签。
这一组标签恐怕是JSP中最重要的一组标签了,通过装载JavaBean,实现对于JavaBean的操作和JAVA组件的重用(POJO),同时也避免了JSP实例化对象的复杂度。下边是这三个标签的语法:
13.3.1 <jsp:useBean id = "name" class = "package.classpage.classname"> ,由于参数较多,因此整理到下表:
属性 | 属性描述 | 初始值 |
id | 命名引用该JavaBean的变量,如存在id和scope相同的JavaBean实例,则使用已有实例,不会重新创建实例 | |
class = "package.classpage.classname" | 指定JavaBean的完整路径名(包结构) | |
scope=“scopeType” |
指定JavaBean可以在那种上下文中使用,标准属性值有4个,分别是: page、request、session 和 application |
page |
type="TypeName" | 指定引用该对象的变量类型 | |
beanName = "BeanName" | 制定JavaBean的名字,如果提供type和beanName属性,允许省略class属性 |
13.3.2 <jsp:setProperty name = "BeanName" property = "property" value = "value">
属性 | 属性描述 |
name | 表示要设置属性的BeanName |
property | 属性名 |
value | 属性值 |
param | 指定用哪个请求参数作为Bean属性的值 |
注意:用来设置已经实例化的Bean。value和param 不能同时使用。
13.3.3 <jsp:getProperty name = "BeanName" property = "property">
属性 | 属性描述 |
name | 表示要设置属性的BeanName |
property | 属性名 |
注意:该标签提取指定Bean属性的值。
13.3.4 下面给大家写个简单的例子展示一下jsp:useBean的用法,他装载一个Bean,然后设置/读取gossip girl属性
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>My JSP 'gossipTestBean.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body><p> TestBean - check </p><br><!-- JavaBean的定义,其中id = test bean 是用来给 其他两个标签中name调用的--><jsp:useBean id = "testbean" class = "nc.ui.test.testbean.CheckBean" /><!-- 设置JavaBean的属性值,其中property 引用的是JAVA类中CheckBean的gossip变量value便是给javabean赋值的值--><jsp:setProperty name = "testbean" property = "gossip" value ="Hello Gossip Girl" /><!-- 获取JavaBean的属性值,其中property 引用的是JAVA类中CheckBean的gossip变量--><jsp:getProperty name = "testbean" property = "gossip" /></body>
</html>
package nc.ui.test.testbean;public class CheckBean {private String gossip = "I am B";public String getGossip() {return gossip;}public void setGossip(String gossip) {this.gossip = gossip;}}
显示的效果如下:
企业软件,WEB和对于他们无限美好的遐想(第五日)--2014-3-14--IT日 + Struts 原理分析 (四)相关推荐
- 《企业软件交付:敏捷与高效管理精要》——2.1 引言
2.1 引言 要了解本书的写作背景,对当前企业软件交付所面临的挑战有一个清晰的概念是很重要的.为了说明这个现状,我现在就举一个企业软件交付机构的例子,讲讲它是如何执行某个企业软件交付项目的.我们首先谈 ...
- 开源之旅之开源企业软件采购指南
开源之旅之开源企业软件采购指南 ( 2006-02-06 10:31:09) [导读]:从开源数据库.应用服务器,到开源的Web服务器,我们已经带您领略开源软件世界的旖旎风光.此次的"开 ...
- 从个人软件到企业软件
什么是企业软件 还记得我们一开始写程序的时候吗?那还是在学生时代,因为兴趣,或者你做毕业设计的时候,写出几行代码,实现了一个简单的功能,如计算出一个数学结果,或者弹出来一个窗口,你的心情是那么激动,你 ...
- 如何实现企业软件的“超级 App 化”?
Superapp("超级 App")最近甚嚣尘上.在本周正在举行的香港科技周 2022(2022 年 10 月 31 日-11 月 4 日),第一天即专门组织了一个围绕 super ...
- 中国企业软件必然革命世界企业软件
(1)先扯点没用的:宏观经济环境 三架马车:出口.固定资产投资.消费. 我丝毫不怀疑中国会在2035年,GDP超过美国.也就是说,我们总体来说,坐在中国这艘上升发展的飞机上,享受着红利. 一.出口 一 ...
- 移动App測试实战:顶级互联网企业软件測试和质量提升最佳实践
这篇是计算机类的优质预售推荐>>>><移动App測试实战:顶级互联网企业软件測试和质量提升最佳实践> 国内顶级互联网公司測试实战经验总结.阿里.腾讯.京东.携程.百 ...
- 十把快刀:高效免费的十大企业软件
温习一下这则家喻户晓的寓言吧:从前,有一个老农民,他有两个儿子.一天,他叫来两个儿子,让他们选一把柴刀上山去砍柴.为了让父亲高兴,大儿子早早上了山,而小儿子则将斧头磨锋利后才上山,最后小儿子挑了两担柴 ...
- 传统企业软件的互联网化
文 / 池建强 在我个人长达十几年的IT从业过程中,一直从事软件产品和服务的研发.我有幸经历了第一波互联网浪潮,现在又正值IT技术发展的黄金时 期,无论是传统企业软件,还是互联网服务,都在高速发展.这 ...
- 抓住机遇 扶摇直上三千尺:中国企业软件的大风口
我老说两句话: 1.没有成功的企业,只有时代的企业 2.科技是第一生产力 诸葛亮有句话说的好:若天下有变.嘿嘿嘿,所以应了<霸王别姬>里老师傅对段小楼程蝶衣说的那句话:你们算赶上好时候了. ...
- QEMU 虚拟机管理软件Web版,入门教程
当代的计算机系统中,虚拟化技术的应用,大大提升计算机的性能效率,减少计算机性能浪费. 在现代的计算机软件中,已经诞生出众多基于虚拟化技术应用的虚拟机软件.vmware.VirtualBox.QEMU. ...
最新文章
- python 内置open()函数与os.open()函数的区别(打开文件)
- Visual C++——加速键
- 玩linux笔记——持续更新
- 服务器读取excel文件,作为服务器进程读取Excel文件
- Redis与数据库同步问题
- 判断字符串中是否含有并一个字符或字符串
- java接口构造函数_Java8自定义函数式编程接口和便捷的引用类的构造器及方法
- Linux打包压缩解压缩tar、gzip、bzip2
- java 项目名命名规范_javaWeb项目命名规范
- Android 保持屏幕常亮
- “OpenGL.error.NullFunctionError: Attempt to call an undefined function”解决方案
- BAM MATLAB,最新DEA模型:RAM模型、BAM模型、加权SBM模型、SBM方向性距离模型计算...
- Ubuntu操作系统MTK刷机工具失败解决方案
- 基于树莓派的智能门禁及3D外壳打印设计
- 大数据实战第十二课之-Scala知识05
- win10下pyt3.7安装scrapy后cmd运行相关命令SyntaxError: invalid syntax 解决办法
- [HTML+Bootstrap+CSS+jQuery] 时差计算器(计算时差、验证格式、当前时间、历史记录……)
- 论文笔记:Deep Object Co-Segmentation(ACCV2018)
- Unity Flat Shading实现低多边形(low-poly)效果
- 2021计算机考研科目时间表,2021计算机考研科目408有哪些?