|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
大型的应用一般不会用这些框架(因为性能考虑);开发人员根据需要选择用一些框架,也可以不选用框架;不用框架并不代表要自己写框架;修改框架的可能性更小。
Tag事实是甚么?怎样完成一个Tag?一个tag就是一个一般的java类,它唯一出格的地方是它必需承继TagSupport大概BodyTagSupport类。这两个类供应了一些办法,卖力jsp页面和你编写的类之间的交互,比方输出,输入。而这两个类是由jsp容器供应的,不必开辟职员本人完成。换句话说,你只需把完成了营业逻辑的类承继TagSupport大概BodyTagSupport,再做一些出格的事情,你的类就是一个Tag。而且它本人卖力和jsp页面的交互,不必你多费心。“出格的事情”一般有以下几个步骤:1)供应属性的set办法,今后这个属性就能够在jsp页面设置。以jstl标签为例c:outvalue=""/,这个value就是jsp数据到tag之间的出口。以是tag内里必需有一个setValue办法,详细的属性能够不叫value。比方setValue(Stringdata){this.data=data;}这个“value”的称号是在tld里界说的。取甚么名字都能够,只需tag里供应响应的set办法便可。2)处置doStartTag或doEndTag。这两个办法是TagSupport供应的。仍是以c:outvalue=""/为例,当jsp剖析这个标签的时分,在“<”处触发doStartTag事务,在“>”时触发doEndTag事务。一般在doStartTag里举行逻辑操纵,在doEndTag里把持输入。3)编写tld文件。4)在jsp页面导进tld。如许,你的jsp页面就能够利用本人的tag了。一般你会发明本人尽年夜多半举动都会合在doStartTag或doEndTag办法里。的确云云,熟习一些接口和类以后,写taglib很简单。正如《jsp计划》的作者所言:内里的逻辑略微有点庞大,但究竟没有火箭上天那末难。一个复杂的例子:OutputTag
packagediegoyun;importjavax.servlet.jsp.JspException;importjavax.servlet.jsp.JspWriter;importjavax.servlet.jsp.tagext.TagSupport;/***@authorchenys*/publicclassOutputTagextendsTagSupport{privateStringname=null;publicvoidsetName(Stringname){this.name=name;}publicintdoStartTag()throwsJspException{try{JspWriterout=pageContext.getOut();out.print("Hello!"+name);}catch(Exceptione){thrownewJspException(e);}returnEVAL_PAGE;}}
扼要申明:1怎样输入到jsp页面:挪用JspWriterJspWriterout=pageContext.getOut();out.print......记着这个办法就能够了。2输入后怎样作处置,函数会前往几个值之一。EVAL_PAGE暗示tag已处置终了,前往jsp页面。另有几个值,比方EVAL_BODY_AGAIN和EVAL_BODY_INCLUDE等,前面我们会作会商。编写tld
<?xmlversion="1.0"encoding="ISO-8859-1"?><!DOCTYPEtaglibPUBLIC"-//SunMicrosystems,Inc.//DTDJSPTagLibrary1.2//EN""http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd"><taglib><tlib-version>1.0</tlib-version><jsp-version>1.2</jsp-version><short-name>diego</short-name><!--OutputTag--><tag><name>out</name><tag-class>diegoyun.OutputTag</tag-class><body-content>empty</body-content><attribute><name>name</name><required>false</required><rtexprvalue>false</rtexprvalue></attribute></tag></taglib>
在WEB-INF下新建tlds文件夹,把这个文件取名为diego.tld,放到tlds文件夹下。路径应当如许:WEB-INF ldsdiego.tld关于tld的复杂申明:short-name:taglib的称号,也称为前缀。好比“c:outvalue=""/”里的“c”name:tag的名字。比方“c:outvalue=""/”里的"out”,我们的类也取名为out,因为有前缀作辨别,不会搅浑tag-class:详细的tag类。带包名body-content:指tag之间的内容。比方c:outvalue=""....../c肇端和封闭标签之间就是body-content。因为没有处置body-content,以是下面设为empty“attribute”里的name:属性名字。比方c:outvalue=""/里的value。名字可恣意取,只需类里供应响应的set办法便可。required:是不是必填属性。rtexprvalue:是不是撑持运转时表达式取值。这是tag的壮大功效。今后我们会会商。临时设为false编写jsp页面
<%@pagelanguage="java"%><%@tagliburi="/WEB-INF/tlds/diego.tld"prefix="diego"%><html><body>TestTag:<diego:outname="diegoyun"/></body></html>
我的编程情况是eclipse+tomcat.启动服务器,假如统统依照下面步骤的话,就可以看到TestTag:Hello!diegoyun字样。最复杂的tag就这么出来了。其实不难,是否是?(T111)
C#是盗用了Java的源代码,仿照开发的,原因是Java是开源的啊,盗了也白盗,还有一点,开发C#语言的团队是就是开发Java语言的团队,是微软重金挖过去的啊 |
|