时间: 2021-07-31 作者:daque
运用定制化的标签 纵然你不妨在jsp页面中植入java代码并在效劳器方实行,然而,jsp也扶助运用定制标签来插入动静实质,它有一种体制不妨让你在jsp页面中插入你本人的、与html一致的标签。换句话说,你的jsp网页不妨运用插入java代码的大略标签语法产灵巧态的实质。但定制标签的用途不是很大。 创造一个定制标签比在jsp网页中运用大略的scriptlet要搀杂得多,由于定制标签须要用几个办法来把你的java组件和jsp代码贯穿起来。然而,定制标签在散发和反复运用的功夫就特殊大略了。对定制标签的扶助将在jsp创造东西中实行。 在底下的例子中产灵巧态实质的jsp网页就运用了定制标签。提防,在这个例子中咱们不复须要引入java类、证明变量或写任何java代码: <%@ taglib uri="/tlds/menudb.tld" prefix="menu" %> today's menu
lunch
<%@ include file="lunch_menu.html" %> our special of the day
从上头的语句中咱们不妨看出,这个页面鲜明比前方的scriptlet例子要大略很多,由于它没有包括初始化东西和实行相映的本领。然而jsp网页代码只是不过一局部;对于每一个定制标签,还囊括底下的三个组件: (1)包括定制标签的网页,比方说,上头的代码片断中就运用了insertcatchofday 的定制标签。在运用定制标签之前,页面必需指定taglib directive来供给标签库刻画符(对标签设置)的场所。当实行定制标签的功夫,网页再有代办性的设置了一个和多个标签属性(比方在这个例子中的“meal”)来决定动静实质。 (2)标签库刻画符。它是一个设置了定制化标签并把它和tag handler贯穿起来的xml文献。一个标签库刻画符包括了标签的各别属性,关系tag handler的称呼(场所)以及jsp引擎须要处置定制标签的其余消息。 (2)tag handler。 它是一个与定制标签共同实行操纵的java类。比方,在上头的insertcatchofday标签中,tag handler即是实行数据库查问获得相映菜单项的java类。 咱们仍旧看到了一个运用定制标签的jsp网页,底下让咱们来看一看其余的两个组件。 tag handler tag handler是一个与servlet比拟一致的java类。然而servlet不妨实行servlet接口,还不妨被html get或post乞求所实行。tag handler也不妨实行一个标签接口(javax.servlet.jsp.tag)以及在定制标签被jsp引擎处置的功夫实行。 即使定制标签包括了属性,那么tag handler就必需设置那些属性以及每一个的get/set本领。比方,当设置上头insertcatchofday定制标签的tag handler的功夫,咱们必需设置“meal”属性和与它关系的get和set 本领: private string meal = null; public void setmeal(string s) { meal = s; } public string getmeal() { return meal; } tag library descriptor 即使你一切的功夫都在处置java本领而不领会对于 xml上面的货色,那么标签库刻画符组件大概看上去会比拟生疏。然而你也不须要担忧,由于你不须要进修一门新的编制程序谈话。标签库刻画符只是运用与html一致的标签语法来设置定制标签的名字和属性,这更象设置一个东西。 底下的标签库刻画符设置了insertcatchofday标签。提防,这个文献设置了定制标签的称呼,属性和关系的tag handler类: xml version="1.0" ?> insertcatchofday com.sun.catchofdayhandler queries menu database for the catch of the day。 meal 与设置属性的称呼一律,标签库刻画符也不妨设置数据典型并指定其属性(不管能否须要);在tag handler被实行之前,它承诺jsp引擎去做某些缺点查看。再有其余的消息,比方说为了运用jsp创造东西,库名和本子号也不妨包括在标签库中。 更多的例子 在底下的例子中,第一个例子在jsp页面中运用了http乞求东西 (httpservletrequest) 来确定用户欣赏器的本子并从三个html页面中的一其中归来相映的实质: <%@ page language=="java" info="example jsp #1" %> <%! string agent; %> <% agent = request.getheader("user-agent"); if ( agent.startswith("mozilla/4.0") { %> <%-- return content for 4.0 browsers --%> <%@ include file="ver4.html" %> <% } else if ( agent.startswith("mozilla/3.0") { %> <%-- return content for 3.0 browsers --%> <%@ include file="ver3.html" %> <% } else { %> <%-- return content for other/unknown browsers --%> <%@ include file="other.html" %> <% } %> 提防:此页面不必证明或初始化http乞求东西就不妨径直对它举行考察。乞求和相应(httpservletresponse)东西都不妨隐含地在jsp 页面中运用。和servlet一律,jsp页面不妨运用乞求东西从html窗体中赢得参数值。 <%@ page language="java" info="example jsp #2" %> <%@ include file="header.html" %> <%! string selections[], info; %> here are your current selections:
<% selections = request.getparametervalues("items"); if (selections != null) { %>
<% for(int x = 0; x %>
<%= selections[x] %> : <%= db.getinfo(selections[x]) %> <% } %>
<% } else { %> (no items selected)
<% } %> <%@ include file="footer.html" %> 在这个例子中,当每一个参数值都被读取此后,javabean组件便查问所须要的消息。在jsp网页中运用bean这种本领不妨简单地从数据库中归来动静web实质。 论断 即使你正在探求一种能简单创造贯穿效劳器方java组件的web步调的本领,那么javaserver page恰是你所须要的。除去ejb,rmi,jdbc和javabean外,辨别html表述代码和web步调,也使得jsp网页构造起来运转变得更简单了。究竟上,因为web安排职员简直不必java开拓职员的扶助就不妨创造jsp页面,以是你再也各别担忧创造web网页和写html代码了。 <全文完>