澳门威利斯人_威利斯人娱乐「手机版」

来自 澳门威利斯人 2019-10-06 11:16 的文章
当前位置: 澳门威利斯人 > 澳门威利斯人 > 正文

【威尼斯真人网上娱乐】JSP的三种类型的元素,

Servlet和JSP之标签文件学习,servletjsp标签

 

  在上一篇文章中牵线了自定义标签的用法,接下去介绍标签文件的用法啊。


  tag file指令

  tag file简介

  用tag file的措施,不供给编写标签管理类和标签库描述文件,也足以自定义标签。tag file从七个方面简化了自定义标签的支出。首先,tag file无须提前编写翻译,直到第壹次调用才会编写翻译;其次,标签库描述文件也不再供给了,使用tag file的秘技,tag file名和action一样,由此无需标签库描述文件了。

  二个tag file和JSP页面同样,它抱有指令、脚本、EL表明式、动作成分以及自定义的竹签。二个tag file以tag和tagx为后缀,它们得以分包其余能源文件。二个被其它文件包含的tag file应该以tagf为后缀。

  tag文件必需放在应用路线的WEB-INF/tags目录下技巧见效。和标签管理类同样,tag文件能够被打包到jar包里。

  以下是tag file中可用的隐身对象(其实跟作品JSP遮掩对象类似):

对象

类型

说明

request

javax.servlet.http.HttpServletRequest

每当客户端请求一个JSP页面时,JSP引擎就会制造一个新的reuqest对象来代表这个请求。request对象提供了一系列方法来获取HTTP头信息、cookies、HTTP方法等等。

response

javax.servlet.http.HtpServletResponse

当服务器创建request对象时会同时创建用于响应这个客户端的response对象。response对象也定义了处理HTTP头模块的接口。通过这个对象,开发者们可以添加新的cookies、时间戳、HTTP状态码等等。

out

javax.servlet.jsp.JspWriter

out对象用来在response对象中写入内容。

session

javax.servlet.http.HttpSession

session对象用来跟踪在各个客户端请求间的会话。

application

javax.servlet.ServletContext

application对象在JSP页面的整个生命周期中都代表着这个JSP页面。这个对象在JSP页面初始化时被创建,随着jspDestory()的调用而被移除。通过向application中添加属性,则所有组成web应用的JSP文件都能访问到这些属性。

config

javax.servelt.ServletConfig

config对象允许开发者访问Servlet或者JSP引擎的初始化参数,比如文件路径等。

pageContext

javax.servlet.jsp.PageContext

pageContext对象主要用来访问页面信息,同时过滤大部分实现细节。该对象除了pageContext、page、exception对象的属性不能导出,其余内置对象的属性都能导出,而且该对象包含了传给JSP页面的指令信息,也定义了一些字段。

page

javax.servlet.jsp.HttpJspPage

page对象就是页面实例的引用,可以被看做是整个JSP页面的代表(与this对象同义)

exception

java.lang.Throwable

exception对象包装了从先前页面中抛出的异常信息,通常被用来产生对出错条件的适当响应。

   

  接下去是创立叁个标签文件同有时候利用的事例:

  创设标签文件并接纳唯有两步:

  ① 编写标签文件.tag(例如firstTag.tag),纪事要在/WEB-INF/tags中开创此文件哦。

<%@ tag import="java.util.Date" 
    import="java.text.SimpleDateFormat"
    import="java.io.IOException"%>
<%
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd  HH:mm:ss");
    String dateStr = simpleDateFormat.format(new Date());
    JspWriter jspWriter = getJspContext().getOut();
    jspWriter.write(dateStr);
%>

  ② 编写jsp测量试验页面。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="easy" tagdir="/WEB-INF/tags" %>
<!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=UTF-8">
<title>Insert title here</title>
</head>
<body>
    Today is <easy:firstTag/>
</body>
</html>

  出来的页面效果就跟自定义标签表现出来的标准是近乎的哦。

  威尼斯真人网上娱乐 1

 

  tag file指令

  tag file的下令十分少,也就那么多少个:

指令

说明

tag

作用与JSP页面中的page指令类似

include

用于将其他资源导入tag file中

taglib

用于将自定义标签库导入tag file中

attribute

用于将自定义标签库导入tag file中

variable

用于将自定义标签库导入tag file中

  看着有一些懵?没事儿,接下去会相继解释。

  ① tag指令

  语法<%@ tag attribute="value" attribute2="value2" %>

  属性除此而外import属性,其他具备的品质在一个tag指令或二个tag file中都不得不出现一回。):

属性

描述

display-name

在XML工具中显示的名称。默认值是不包含后缀的tag file名

body-content

指定标签body的类型, body-content属性值有empty、tagdependent、scriptless,默认值是scriptless。

dynamic-attributes

指定tag file动态属性的名称。当dynamicattributes值被设定时,会产生一个Map来存放这些动态属性的名称和对应的值。

small-icon

指定一个图片路径,用于在XML工具上显示小图标。一般不会用到。

large-icon

制定一个图片路径,用于在XML工具上显示大图标。一般不会用到。

description

标签的描述信息。

example

标签使用实例的描述。

language

tag file中使用的脚本语言类型。当前版本的JSP中,该值必须设为”java”。

import

用于导入一个java类型,和JSP页面中的import相同。

pageEncoding

指定tag file使用的编码格式,可以使用“CHARSET”中的值。和JSP页面中pageEncoding相同。

 

  include指令

  tag file中的include指令和JSP页面中的include指令是如出一辙的。能够动用那些命令来将表面文件导入到tag file中。当你有二个国有能源文件有非常的大只怕用在多多少个tag file中时,include指令将能够发挥它的效果与利益。这么些公共财富文件能够是静态文件(如HTML文件),也得以是动态文件(如tag file)。

  接下去是多少个例证~(除了jsp页面文件,其他的文件都要放置tags文件夹中哦)。

  ① 创设二个tag file(如includeDemoTag.tag)。

Here is the content of included.html:
<%@ include file="included.html" %>
<br/>
<br/>
The second include directive includes another dynamic resource:
included.tagf.
<br/>
<%@ include file="included.tagf" %>

  

  ② 成立贰个.html文书(如included.html),用以展示完毕include导入,html等静态文件的功效

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<table>
    <tr><td><b>Menu</b></td></tr>
    <tr><td>CDs</td></tr>
    <tr><td>DVDs</td></tr>
    <tr><td>Others</td></tr>
</table>
</body>
</html>

 

  ③ 成立叁个.tagf文件(如included.tagf),用以显示完毕include导入.tagf等动态文件的作用

<%
    out.print("Hello from included.tagf");
%>

 

  ④ 创制一个.jsp页面文件用来测量试验include指令的效能

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="easy" tagdir="/WEB-INF/tags" %>
<!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=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <easy:includeDemoTag/>
</body>
</html>

   出去的页面效果是如此子哒~

威尼斯真人网上娱乐 2

 

  taglib指令

  能够由此taglib指令在tag file中选拔自定义标签。

  语法<%@ taglib uri="tagLibraryURI" prefix="tagPrefix" %>

  属性uri属性---用来钦赐与前缀相关联的标签库描述文件的相对路线或相对路线;prefix属性---用来定义自定义标签的前缀。

  使用taglib指令,不只能采纳不分包content body的自定义标签:

<prefix:tagName/>

  也可采取含有content-body的自定义标签:

<prefix:tagName>body</prefix:tagName>

  使用taglib指令的例子如下:

  ① 先创设二个.tag的文本(如taglib德姆o.tag,此例中会用到上述的第3个例证中的firstTag.tag文件)

<%@ taglib prefix="simple" tagdir="/WEB-INF/tags"%>
The server's date : <simple:firstTag/>

  ② 然后再次创下制四个.jsp(如taglibDemoTest.jsp)页面文件,用来测量试验taglib指令。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="easy" tagdir="/WEB-INF/tags" %>
<!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=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <easy:taglibDemo/>
</body>
</html>

  测验出来的功能是这么的。

威尼斯真人网上娱乐 3

 

  attribute指令

  attribute用于设定tag file中标签的属性。它和标签库描述文件中的attribute成分等效。

  语法<%@ attribute attribute1="value1" attribute2="value2" %>

  属性(这么些属性中,除非name属性是必选的):

属性

描述

name

用于设定该属性的名称,在一个tag file中,每个属性的名称必须是唯一的。

required

用于设定该属性是否是必须的。值可以去true或false,默认值为false。

fragment

用于设定该属性是否是fragment。默认值为false。

rtexprvalue

用于设定该属性的值是否在运行时被动态计算。值可以取true或false,默认值为true。

type

用于设定该属性的类型,默认值为java.lang.String。

description

用于设定该属性的描述信息。

  以下是有关attribute指令的例证~

  ① 创造贰个.tag文件(如encode.tag)

<%@ attribute name="input" required="true"%>
<%! 
    private String encodeHtmlTag(String tag){
        if(tag==null){
            return null;
        }
        int length = tag.length();
        StringBuilder encodedTag = new StringBuilder(2*length);
        for(int i=0;i<length;i  ){
            char c = tag.charAt(i);
            if(c=='<'){
                encodedTag.append("&lt");
            }else if(c=='>'){
                encodedTag.append("&gt");
            }else if(c=='&'){
                encodedTag.append("&amp");
            }else if(c=='"'){
                encodedTag.append("&qout");
            }else if(c==' '){
                encodedTag.append("&nbsp");
            }else{
                encodedTag.append(c);
            }
        }
        return encodedTag.toString();
    }
%>
<%=encodeHtmlTag(input)%>

  

  ② 创设一个.jsp页面进行测验(如encodeTagTest.jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="easy" tagdir="/WEB-INF/tags" %>
<!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=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <easy:encode input="<br/> means changing line."/>
</body>
</html>

  

  产生上述的步骤之后,获得的功能正是如此的:

威尼斯真人网上娱乐 4

 

  variable指令

  tag file中的variable指令是用以定义那个急需传递到JSP页面包车型地铁变量。

  tag file帮忙几个variable指令,那象征能够传递多少个值到JSP页面。相对来说,attribute指令的职能与variable相反,它用来将值从JSP页面传递到tag file。

  语法<%@ variable attribute1="value" attribute2="value2" %>

  属性

属性

描述

name-given

变量名。在JSP页面的脚本和EL表达式中,可以使用该变量名。如果指定了name-from-attribute属性,那么name-given属性就不能出现了,反之亦然。name-given的值不能和同一个tag file中的属性名重复。

name-from-attribute

和name-given属性类似,由标签属性的值来决定变量的名称。如果name-from-attribute和name-given属性同时出现h或者都不出现的话会出现错误。

alias

设定一个用来接收变量值的局部范围。

variable-class

变量的类型。默认为java.lang.String。

declare

设定该变量是否声明。默认值是false。

scope

用于指定该变量的范围。可取的值为AT_BEGIN、AT_END和NESTED。默认值为NESTED。

description

用于描述变量。

  

  以下是对variable指令的演示:

  ① 创建.tag文件(如varDemo.tag)

<%@ tag import="java.util.Date" import="java.text.DateFormat"%>
<%@ variable name-given="longDate" %>
<%@ variable name-given="shortDate"%>
<%
    Date now = new Date(System.currentTimeMillis());
    DateFormat longFormat = DateFormat.getDateInstance(DateFormat.LONG);
    DateFormat shortFormat = DateFormat.getDateInstance(DateFormat.SHORT);
    jspContext.setAttribute("longDate", longFormat.format(now));
    jspContext.setAttribute("shortDate", shortFormat.format(now));
%>
<jsp:doBody/>

 

  ② 创制三个用以测量检验的.jsp页面(如varDemoTest.jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %>
<!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=UTF-8">
<title>Insert title here</title>
</head>
<body>
    Today's date:
    <br/>
    <tags:varDemo>
        In long format:${longDate }
        <br/>
        In short format:${shortDate }
        <br/>
    </tags:varDemo>
</body>
</html>

  

 威尼斯真人网上娱乐, 通过以上的步骤获得的页面效果正是下图所示啦:

威尼斯真人网上娱乐 5

  

  doBody

  doBody动作成分只好在tag file中动用,它用来调用三个标签的本体内容。doBody动作成分也足以有总体性。你可以透过这么些属性来钦命某些变量来收纳主体内容,借使不行使这么些指令,那么doBody动作成分会把珍视内容写到JSP页面包车型地铁JspWriter上。

  doBody动作成分的属性经常来讲(这么些属性都以非必得的哦):

属性

描述

var

用于保存标签主体内容的变量值,主体内容就会以java.lang.String的类型保存这个变量内。var和varReader属性只能出现一个。

varReader

用于保存标签主体内容的变量值,主体内容就会以java.io.Reader的类型保存这个变量内。var和varReader属性只能出现一个。

scope

变量保存到的作用域。

  

  接下去是doBody动作成分的例子:

  ① 制造二个.tag文件(如doBodyDemo.tag)。

<jsp:doBody var="referer" scope="session"></jsp:doBody>
<!-- 意思是,一个doBody动作元素,指定了一个叫做referer的session属性来保存标签本体内容 -->

  

  ② 创立二个.jsp文件(如main.jsp),用来加载头消息同不常候对referer变量的值举办赋值。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %>
<!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=UTF-8">
<title>Insert title here</title>
</head>
<body>
    Your referer header:${header.referer }
    <br/>
    <tags:doBodyDemo>
        ${header.referer }
    </tags:doBodyDemo>
    <a href="viewReferer.jsp">View</a> the referer as a Session attribute.
</body>
</html>

 

  ③ 成立八个.jsp页面(如viewReferer,jsp),用于把在main.jsp存款和储蓄的referer值打字与印刷出来。

<%@ 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=UTF-8">
<title>Insert title here</title>
</head>
<body>
The referer header of the previous page is ${sessionScope.referer }
</body>
</html>

 

  ④ 创造一个.html页面(如searchEngine.html),用于张开main,jsp页面查看测量试验结果。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
Please click <a href="main.jsp">here</a>
</body>
</html>

  

  接下去是测量检验结果的呈现~

  ① searchEngine.html

威尼斯真人网上娱乐 6

  ② main.jsp

威尼斯真人网上娱乐 7

  ③ viewReferer.jsp

威尼斯真人网上娱乐 8

 

  invoke动作成分

  invoke动作成分和doBody类似,在tag file中,能够运用它来调用贰个fragment。invoke动作成分中有四个性格,个中独有fragment属性是必得的。

  invoke动作标签的属性

  

属性

描述

fragment

要调用的fragment的名称。

var

用于保存片段主体内容的变量值,主体内容就会以java.lang.String的类型保存这个变量内。var和varReader属性只能出现一个。

varReader

用于保存标签主体内容的变量值,主体内容就会以java.io.Reader的类型保存这个变量内。var和varReader属性只能出现一个。

scope

变量保存到的作用域。

 

  接下去是关于invoke动作成分的例子:

  ① 创制一个.tag文件(如invokeDemo.tag)。

<%@ attribute name="productionDetails" fragment="true" %>
<%@ variable name-given="productName" %>
<%@ variable name-given="description" %>
<%@ variable name-given="price" %>
<%
    jspContext.setAttribute("productName", "Pelesonic DVD Player");
    jspContext.setAttribute("description", "Dolby Digital output through coaxial digital-audio jack," 
        "500 lines horizontal resoluction-image digest viewing");
    jspContext.setAttribute("price", "65");    
%>
<jsp:invoke fragment="productionDetails"></jsp:invoke>

 

  ② 成立三个.jsp文件(如invokeTest.jsp)。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="easy" tagdir="/WEB-INF/tags" %>
<!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=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <easy:invokeDemo>
        <jsp:attribute name="productionDetails">
            <table width="220" border="1">
            <tr>
                <td><b>Product Name</b></td>
                <td>${productName }</td>
            </tr>
            <tr>
                <td><b>Description</b></td>
                <td>${description }</td>
            </tr>
            <tr>
                <td><b>Price</b></td>
                <td>${price }</td>
            </tr>
            </table>
        </jsp:attribute>
    </easy:invokeDemo>
</body>
</html>

 

  以上代码编写完事后,测验的结果是:

威尼斯真人网上娱乐 9

 

  好啊,以上就是有关JSP的竹签文件,多谢大家。

在上一篇文章中牵线了自定义标签的用法,接下去介绍标签文件的用法啊。 tag file指令 tag file简要介绍...

大致标签... 79

JSP有三种档期的顺序的因素:指令成分(directive element)、行为因素(action element)、和本子成分(script element)。

SimpleTag接口... 80

命令成分用于钦定整个JSP页面包车型客车相干新闻,并安装JSP页面的有关属性,如网页的编码格局等.JSP指令成分首要有6个,包罗page,include,taglib,attribute,tag和variable.

JspFragment类... 80

动作成分用于表示客户端乞求JSP页面时被调用的组件.

使用简易标签调整标签体和后继JSP页面包车型地铁执行... 81

剧本成分用于在JSP页面中增添一段脚本代码,脚本代码必需用page指令所定义的脚本语言编写,常常时java代码.

动用简易标签对数组中的成分进行迭代输出... 82

一声令下成分:
<%@ page...%>  定义了单独于页面包车型客车习性,举例会话追踪、错误管理页面、对缓存的渴求等
<%@ include...>  在翻译阶段引进文件
<%@ taglib...>    注明一(Wissu)个在页面中选取的带有自定义行为的标识库
行业内部作为因素:
<jsp:usebean>  使一个JavaBeans在前段时间页面可用    
<jsp:getProperty>  从JavaBeans中赢得有些属性值,并将其增添到应答中
<jsp:setProperty>  设置JavaBeans的属性值
<jsp:include>  在伸手处理阶段引入来自三个servlet或页面包车型大巴应对结果
<jsp:forward>  将对诉求的管理转交给三个servlet或JSP页面
<jsp:param>  使用<jsp:forward> 或<jsp:include> 时,向这一个央求增添参数
<jsp:plugin>
自定义行为因素和专门的职业标识库:JSTL,JSP规范标识库(JSP Standard Tag Library),能够用扩充API开垦自定义行为
剧本元素:
<%...%>  小本子,用于放置脚本代码
<%=...%>  用于放置JAVA表达式
<%!...%>  注脚变量和办法

对标签体内容开展改换后输出的简约标签... 83

转自 

嵌套标签内的out对象的改变... 85

信赖<jsp:attribute>标签将多少个JSP代码片段传递给轻便标签... 85

简轻易单标签与历史观标签的可比... 87

.tld(标签库描述文件)与安插... 88

TLD文件的因素结合结构... 88

标签库的引用原理... 89

标签文件... 90

标签文件的基本语法... 91

attribute指令... 91

本文由澳门威利斯人发布于澳门威利斯人,转载请注明出处:【威尼斯真人网上娱乐】JSP的三种类型的元素,

关键词: 澳门威利斯人 5、JAVA/J2EE JSP