企业软件,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;
	}
	
}

显示的效果如下:



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
顺序如下: 1、多种字体大小显示 2、c:out标记输出 3、获取当前时间 4、include包含语句 5、建立错误处理页面的范例程序 6、jsp:forward 7、简单计数器 8、设置页面属性 9、使用GB2312编码 10、使用Big5编码 11、c:catch的用法 12、<c:forEach> begin、end和step的用法 13 、 <c:forEach> 循环 14、<c:forEach> varStatus 的种属性 15、<c:forEach> 的用法 16、从客户端传送数据至服务端 17、使用Unicode转义字符 18、使用朝鲜语字符集 19、JSP中最简单的国际化程序 20、错误检测 21、抛出异常 22、<c:if> 的用法 23、<c:set>和<c:remove> 的用法 24、<c:import> 的用法 25、jsp-include的用法 26、汉字处理 27、网页重定向 28、自动更新网页 29、存取session 30、<c:redirect> 的用法 31、单选型列表框 32、jsp文件中定义类 33、取得 JSP Container 版本 34、javax.servlet.jsp.JspWriter - out 对象 35、page 隐含对象 36、application 对象 37、PageContext 对象 38、Page范围 - pageContext 39、测试要显示的中文 40、IF控制符的操作 41、HttpServletRequest 接口所提供的方法 42、 网上测验 43、HttpSession - session 对象 44、 多选型列表框 45、解决浏览器 cache 的问题 46、使用 EL、JSTL 处理表单数据 47、 EL隐含对象 param、paramValues 48、EL隐含对象 pageContext 49、EL算术运算符 50、EL关系运算符 51、EL的运算符 52、选择钮的使用 53、检查框的使用 54、群组检查框的使用 55、数字、货币、百分数格式化 56、期格式化 57、JSTL设置语言地区 58、Cookie数据的存取 59、session有效时间的设置与取得 60、session时间与ID 61、Cookie有效时间的设置 62、利用隐藏字段传送数据 63、JSP 使用 JavaBean 的方法 64、JSP 使用 JavaBean 65、范围为 Page 的 JavaBean范例程序 66、范围为 Request的 JavaBean 67、范围为 Session 的 JavaBean 68、范围为 Application 的 JavaBean 69、删除 JavaBean 70、url重组 71、Switch语句 72、环境变量 73、forward重定向 74、文件的建立与删除 75、取得文件属性 76、取得目录中的文件 77、目录的建立与删除 78、自Cookie存取期/时间数据 79、管理Session变量 80、数据库中的记录数与记录指针位置 81、利用absolute方法设置记录位置 82、使用jsp指令生成Word文档 83、JSP网页模板 84、判断是否空白文件 85、cookie 用户登录次数 86、获取用户的真实IP地址 87、获取用户的浏览器信息 88、在客户端进行数据检查 89、在JSP中获取当前绝对路径 90、读取表单中所有参数 91、分行写入数据 92、显示请求URL 93、判断session是否过期 94、参数式查询数据库 95、取得数据库中各栏名称 96、使用JavaBean、设置和获取Bean的属性 97、设置Bean的一个属性与输入参数关联 98、实现基于数据库的站内搜索 99、DOM读取XML文档 100、SAX读取XML文档
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值