小女巫 发表于 2015-1-18 11:21:03

JAVA编程:利用自界说标签完成JSP页面和代码的分别...

恰恰证明了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好。

再见西城 发表于 2015-1-20 20:56:58

在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。

只想知道 发表于 2015-1-30 05:06:26

那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!

海妖 发表于 2015-2-3 11:23:28

http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。

深爱那片海 发表于 2015-2-4 18:57:42

还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。

第二个灵魂 发表于 2015-2-10 02:15:11

是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言

若天明 发表于 2015-2-10 11:08:46

一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从

飘灵儿 发表于 2015-2-14 01:52:06

让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。

仓酷云 发表于 2015-3-4 03:40:32

Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)

谁可相欹 发表于 2015-3-10 16:48:20

还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。

飘飘悠悠 发表于 2015-3-17 08:11:44

一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。

小妖女 发表于 2015-3-24 03:04:34

《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
页: [1]
查看完整版本: JAVA编程:利用自界说标签完成JSP页面和代码的分别...