|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
恰恰证明了java的简单,要不怎么没有通过c/c++来搞个这种框架?js|页面Test.jsp
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
<html>
<head>
<title>MyJSPTest.jspstartingpage</title>
</head>
<body>
ThisismyJSPpage.<br>
Date:<%=newjava.util.Date().toString()%><br>
File:<inputvalue="<%=request.getServletPath()%>"/>
</body>
</html>
为了将这个这个Test.jsp改成自界说标签办法,我们分离利用复杂标签和内容标签两种分歧的体例完成。
1.复杂标签
因为我们必要输入两个内容(日期和文件名),因而我们为标签创立一个参数。详细代码:
DemoTag.java
packagecom.mycompany;
importjava.util.Date;
importjavax.servlet.http.*;
importjavax.servlet.jsp.*;
importjavax.servlet.jsp.tagext.*;
publicclassDemoTagextendsTagSupport{
publicintdoStartTag()throwsJspException{
try{
HttpServletRequestrequest=(HttpServletRequest)pageContext.getRequest();
JspWriterout=pageContext.getOut();
if(parameter.compareToIgnoreCase("filename")==0)
out.print(request.getServletPath());
else
out.print(newDate());
}catch(java.io.IOExceptione){
thrownewJspTagException(e.getMessage());
}
returnSKIP_BODY;
}
privateStringparameter="date";
publicvoidsetParameter(Stringparameter){
this.parameter=parameter;
}
publicStringgetParameter(){
returnparameter;
}
}
接上去,我们创立标签文件MyTagLib.tld。标签文件实在只是一个XML格局的申明文件,内容也很复杂。
MyTagLib.tld
<?xmlversion="1.0"encoding="ISO-8859-1"?>
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<tag>
<name>demo</name>
<tag-class>com.mycompany.DemoTag</tag-class>
<body-content>empty</body-content>
<attribute>
<name>parameter</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
在这个标签文件中,我们将我们创立的标签取名demo,并声了然范例和参数(parameter)。将该文件保留在/WEB-INF上面。
固然,我们还必要将我们自界说的标签增加到web.xml中,不然仍是没法利用。
web.xml
<?xmlversion="1.0"encoding="UTF-8"?>
<web-appxmlns="http://java.sun.com/xml/ns/j2ee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"version="2.4"xsi:schemaLocation="http://java.sun.com/xml/ns/j2eehttp://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<jsp-config>
<taglib>
<taglib-uri>/WEB-INF/MyTagLib</taglib-uri>
<taglib-location>/WEB-INF/MyTagLib.tld</taglib-location>
</taglib>
</jsp-config>
</web-app>
你大概在别处看到过相似的声明,只是没有表面的jsp-config,可是我们利用的是DTD2.4,假如不加,Eclipse会提醒堕落。
到此为止,我们的自界说标签算是创立终了。接上去,我们能够入手下手改写谁人JSP文件来分别代码了。
Test.jsp
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
<%@tagliburi="/WEB-INF/MyTagLib"prefix="mytag"%>
<html>
<head>
<title>MyJSPTest.jspstartingpage</title>
</head>
<body>
ThisismyJSPpage.<br>
Date:<mytag:demoparameter="date"/><br>
File:<mytag:demoparameter="filename"/>
</body>
</html>
下面这些想必你已很熟习,我就不做多说了。
2.内容标签
创立历程和下面大略不异,只是程叙文件和设置内容有些差别。
DemoTag2.java
packagecom.mycompany;
importjava.io.IOException;
importjava.util.Date;
importjavax.servlet.http.*;
importjavax.servlet.jsp.*;
importjavax.servlet.jsp.tagext.*;
publicclassDemoTag2extendsBodyTagSupport{
publicintdoStartTag()throwsJspTagException{
returnEVAL_BODY_BUFFERED;
}
publicintdoEndTag()throwsJspTagException{
Stringbody=this.getBodyContent().getString();
HttpServletRequestrequest=(HttpServletRequest)pageContext.getRequest();
body=body.replace("$date",newDate().toString());
body=body.replace("$filename",request.getServletPath());
try{
pageContext.getOut().print(body);
}
catch(IOExceptione){
thrownewJspTagException(e.getMessage());
}
returnSKIP_BODY;
}
}
我们将新的标签DemoTag2到场到下面的标签文件中。
MyTagLib.tld
<?xmlversion="1.0"encoding="ISO-8859-1"?>
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<tag>
<name>demo</name>
<tag-class>com.mycompany.DemoTag</tag-class>
<body-content>empty</body-content>
<attribute>
<name>parameter</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
<tag>
<name>demo2</name>
<tag-class>com.mycompany.DemoTag2</tag-class>
<body-content>jsp</body-content>
</tag>
</taglib>
web.xml文件无需修正。
看看同时利用两种标签的Test.jsp效果。
Test.jsp
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
<%@tagliburi="/WEB-INF/MyTagLib"prefix="mytag"%>
<html>
<head>
<title>MyJSPTest.jspstartingpage</title>
</head>
<body>
ThisismyJSPpage.<br>
Date:<mytag:demoparameter="date"/><br>
File:<mytag:demoparameter="filename"/>
<hr>
<mytag:demo2>
Date:$date<br>
File:$filename
</mytag:demo2>
</body>
</html>
至此,两种标签体例都完成。
本文并没有就相干手艺细节做出申明,倡议您看看Sun有关JSP自界说标签的官方文档。
不管是用自界说标签,仍是利用JavaBean,都没有太年夜的区分,大家大概团队能够依据本人的习气利用。假如必要在自力类库中封装一些供页面利用的单位,自界说标签应当更合适些。不外如今的IDE情况(MyEclipse)在编写自界说标签的时分大概有些不太恬逸的情形,界面开辟职员利用JavaBean体例大概更便利些,以免稀里糊涂的提醒搅扰您的事情。
那这个对象有什么意义?现在很多用javabean的人就不能保证对象有完整的意义,不成熟的使用模式等导致代码疯狂增长,调试维护的时间要得多得多。在说性能之前,先说说你这个比较的来历。据说微软为了证明。net比java好。 |
|