仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 863|回复: 19
打印 上一主题 下一主题

[学习教程] JAVA教程之jsp2 tag进修条记

[复制链接]
灵魂腐蚀 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:32:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
有了这样一个呼声:让java代替C语言成为基本语言。这些足以说明java简单易学的这个优点。其次,java的功能强大,前面我也提到了,EJB3.0的推出使java成为了大型项目的首选。js|条记JSP2.0标签进修条记
1.申明
本文档是进修tomcat中例子的条记,并没有参考响应的申明文档,因而不克不及包管本文概念的准确性。假如有不合错误的地方,无妨email至8280338@tzenet.com,人人配合前进。

2.JSP2.0标签利用办法
JSP2.0中标签的利用由多个部分构成:

(1)WEB_INF/web.xml中增加标签援用

(2)标签的完成,多是class也多是webtemplet

(3)在jsp文件中增加援用

在实践利用中,剖析jsp2.0标签能够先从jsp文件动手,然后再剖析web.xml及响应的标签库文件。

2.2基础标签的利用办法
2.2.1jsp文件中的标签援用及利用办法
以下是一个复杂的jsp文件:

<%@taglibprefix="mytag"uri="/WEB-INF/jsp2/jsp2-example-taglib.tld"%>

<html><body><mytag:helloWorld/></body></html>

申明:

(1)起首以<%@taglibprefix="mytag"uri="…"%>申明标签前缀及该前缀援用的标签地点路径,在这个例子中uri值是一个绝对路径(当地路径),即以后项目根目次下WEB-INF/jsp2/jsp2-example-taglib.tld。假如利用的是当地路径就不必要在web.xml中设置路径映照了;

(2)指定了标签前缀后,在jsp页面的body内就能够利用这个前缀来援用标签库中的指定标签了,如<mytag:helloWorld/>,就是援用mytag所指定的标签库中的helloWorld标签。

2.2.2web.xml中的设置
假如在上述例子中利用的不是当地路径,那末就必要在web.xml中设置路径转换,如利用:<%@taglibprefix="mytag"uri="http://mytaglib/myTestTags1"%>来援用标签库,那末就必要在web.xml文件的jsp-config节点中增加以下设置:

<taglib>

<taglib-uri>http://mytaglib/myTestTags1</taglib-uri>

<taglib-location>/WEB-INF/jsp2/jsp2-example-taglib.tld</taglib-location>

</taglib>

JSP注释器会将http://mytaglib/myTestTags1依据web.xml中的设置转化为当地路径。固然<taglib-uri>中文本能够是任何值,但不克不及和别的的设置抵触,以是在计划时最好加上前缀,如:http://mytaglib等。

2.2.3标签库中的设置
在标签库中的设置实践上就是设置对完成类的援用,JSP注释器会依据jsp文件中对标签的援用,在标签库中找到响应的标签,然后再依据标签中的界说挪用详细的完成类,本例中在jsp文件中对标签的援用:<mytag:helloWorld/>,即援用了helloWorld这个标签,这个标签在标签库中的界说以下:

<tag>
<description>OutputsHello,World</description>
<name>helloWorld</name>
<tag-class>jsp2.examples.simpletag.HelloWorldSimpleTag</tag-class>
<body-content>empty</body-content>
</tag>
该标签由四个部分构成:

(1)description:形貌该标签的感化

(2)name:标签的名字,该名字在jsp文件利用,相称由类名;

(3)tag-class:标签的完成索引,相称于类的完成;本例索引指定jsp2.examples.simpletag.HelloWorldSimpleTag,是一个java的类文件,应放在WEB_INF/classes/jsp2/examples/simpletag目次下的HelloWorldSimpleTag.class文件;

(4)body-content:在jsp文件中利用标签时,标签中的内容种别,本例的值是empty,暗示helloWorld这个标签中没有内容。假如在jsp页面中在该标签中到场了内容,如<mytag:helloWorld>hell</mytag:helloWorld>,页面会报错,固然<mytag:helloWorld></mytag:helloWorld>是不会错的(注重不克不及有空格局)。

2.2.4类的完成
类HelloWorldSimpleTag完成以下:

packagejsp2.examples.simpletag;

importjavax.servlet.jsp.JspException;
importjavax.servlet.jsp.tagext.SimpleTagSupport;
importjava.io.IOException;

publicclassHelloWorldSimpleTagextendsSimpleTagSupport{
publicvoiddoTag()throwsJspException,IOException{
getJspContext().getOut().write("Hello,world!");
}}
申明:

(1)jsp标签挪用的类一样平常承继于SimpleTagSupport

(2)SimpleTagSupport中完成了getJspContext()这个办法,这个办法能够猎取指向jsp页面的输入流。

(3)getJspContext().getOut().write("Hello,world!"):输入Hellow,World!

2.3含有变量的tag设置
2.3.1jsp文件中的标签援用及利用办法
以下是援用了带有变量标签的jsp页面:

<%@taglibprefix="mytag"uri="/WEB-INF/jsp2/my_taglib.tld"%>
<html><body>
<mytag:repeatnum1="15">
Invocation${count}of5<br>
</mytag:repeat>
</body>
</html>
申明:

(1)<mytag:repeatnum="15">,输出参数的传进办法:即在标签中将要传进的参数做为标签的一个属性,并指定其属性值,本例中传进参数num1,它的值为15;

(2)${count},在页面中显现输入参数的值,count是输入参数的名字

2.3.2标签库中的设置
标签库中的响应设置以下:

<tag>
<description>Repeatsthebodyofthetagnumtimes</description>
<name>repeat</name>
<tag-class>jsp2.examples.simpletag.RepeatSimpleTag</tag-class>
<body-content>scriptless</body-content>--标签内容是剧本
<variable>
<description>Currentinvocationcount(1tonum)</description>
<name-given>count</name-given>--输入参数申明
</variable>
<attribute>
<name>num</name>--输出参数申明
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
该标签由六个部分构成:

(1)description:见上文

(2)name:见上文

(3)tag-class:见上文

(4)body-content:这个例子的值是scriptless,暗示标签中的内容是剧本

(5)variable:输入参数,在jsp中利用${count}来援用这个输入变量的值,输入参数名并非强迫性的,这里只是一个商定,即请求repeat完成类最初有count这个输入参数,以便在jsp页中便利援用,假如没有也不会报错;

(6)attribute:输出参数,在jsp中利用<mytag:repeatnum="5">来设置这个输出参数num,这个参数名是强迫性的,即要在repeat完成类中有setNum这个办法,假如没有响应的办法jsp页面会报错;

2.3.3类的完成
packagejsp2.examples.simpletag;

importjavax.servlet.jsp.JspException;
importjavax.servlet.jsp.tagext.SimpleTagSupport;
importjava.util.HashMap;
importjava.io.IOException;

publicclassRepeatSimpleTag1extendsSimpleTagSupport{
privateintnum;

publicvoiddoTag()throwsJspException,IOException{
for(inti=0;i<num;i++){
getJspContext().setAttribute("count",String.valueOf(i+1));
getJspBody().invoke(null);
}}

publicvoidsetNum(intnum){
this.num=num;}}
申明:

(1)getJspContext().setAttribute界说了输入到jsp页面的输入参数count,这里的count是一个字符串,它的值能够不与标签库中variable界说不异,如,它能够是len,固然在jsp援用时应以这里为准,即便用${len}援用;

(2)setNum(intnum)办法:吸收输出参数,这个办法定名划定规矩为set+输出参数名,该办法带一个参数,用于吸收输出参数的值。

2.4函数标签的界说办法
2.4.1jsp文件中函数标签援用及利用办法
<%@taglibprefix="my"uri="/WEB-INF/jsp2/jsp2-example-taglib.tld"%>
<html>
<body><span>${my:caps(“HELLOWORLD”)}</span></body>

</html>

申明:

(1)函数标签的援用比别的标签的援用都要复杂,它的援用与初级言语中的函数挪用办法相似,间接在函数名后的括号前面输出响应的参数值便可,不必要另加用标签的别的属性来讲明输出参数。

2.4.2函数标签在标签库中设置
<function>
<description>Convertsthestringtoallcaps</description>
<name>caps</name>
<function-class>jsp2.examples.el.Functions</function-class>
<function-signature>java.lang.Stringcaps(java.lang.String)</function-signature>
</function>
申明以下:

(1)这类办法的界说包括在function元素中;

(2)name:函数名

(3)function-class:该函数真实的完成class,本例中,caps函数是由WEB_INF/classes/jsp2/examples/el路径中的Functions类来完成的;

(4)function-signature:申明函数的输出及输入参数范例,不必指明参数名。

2.4.3类的完成
packagejsp2.examples.el;
importjava.util.*;

publicclassFunctions{
publicstaticStringcaps(Stringtext){
returntext.toUpperCase();
}}
申明:

(1)函数标签完成类就是一般的类,它不必要从某个父类承继;

(2)函数标签完成类中必需有响应的办法与标签库中响应的函数字义不异(包含函数名,输出参数个数及输出参数范例,函数的前往值);

2.5标签模板
标签模板的特性:

(1)没有tld文件在jsp中经由过程<%@taglibprefix="tags"tagdir="/WEB-INF/tags"%>援用,即便用tagdir取代了uri,这里的tags是一个文件夹,不是文件,在该文件夹中包括了所需的标签模板;

(2)经由过程以下体例传进参数值:

<tags:displayProducts>
<jsp:attributename="normalPrice">....</jsp:attribute>
<jsp:attributename="onSale">....</jsp:attribute>
.....
</tags:displayProducts>
(3)displayProducts是与/WEB-INF/tags目次中的某个文件名;

(4)经由过程<jsp:attributename="….">来赋值

(5)标签模板是一个纯文本文件,相似于html文件,而不必要经由过程java的类来完成标签的界说;

(6)团体以为标签模板的次要感化重在排版,而别的标签的感化重在功效的完成;自己不盘算在今后的开辟利用标签模板,因而本文不再进一步剖析标签模板。


微软什么都提供了。你可以试想一下,如果你是新手,你是希望你点一下按钮程序就能运行那,还是想自己一点一点的组织结构,然后打包发部,调错再打包......
飘飘悠悠 该用户已被删除
沙发
发表于 2015-1-21 09:37:44 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
老尸 该用户已被删除
板凳
发表于 2015-1-30 13:56:08 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
莫相离 该用户已被删除
地板
发表于 2015-2-6 13:04:11 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
若天明 该用户已被删除
5#
发表于 2015-2-21 12:34:43 | 只看该作者
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
灵魂腐蚀 该用户已被删除
6#
 楼主| 发表于 2015-3-6 20:13:57 | 只看该作者
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
7#
发表于 2015-3-13 08:06:14 | 只看该作者
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
爱飞 该用户已被删除
8#
发表于 2015-3-17 10:11:29 | 只看该作者
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
因胸联盟 该用户已被删除
9#
发表于 2015-3-24 06:38:48 | 只看该作者
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
简单生活 该用户已被删除
10#
发表于 2015-4-1 05:10:30 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
深爱那片海 该用户已被删除
11#
发表于 2015-4-1 23:08:32 | 只看该作者
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
海妖 该用户已被删除
12#
发表于 2015-4-2 11:27:29 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
愤怒的大鸟 该用户已被删除
13#
发表于 2015-4-7 11:55:38 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
再现理想 该用户已被删除
14#
发表于 2015-4-12 19:02:27 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
活着的死人 该用户已被删除
15#
发表于 2015-4-13 09:19:52 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
只想知道 该用户已被删除
16#
发表于 2015-4-30 09:55:36 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
小妖女 该用户已被删除
17#
发表于 2015-5-4 21:10:50 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
再见西城 该用户已被删除
18#
发表于 2015-5-12 13:23:38 | 只看该作者
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
若相依 该用户已被删除
19#
发表于 2015-6-7 12:55:21 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
admin 该用户已被删除
20#
发表于 2015-6-17 11:06:32 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-4-28 07:38

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表