|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
他们对jsp,servlet,javabean进行封装就是为了展示他们的某个思想,与java的开发并没有必然的关系,也不见得在所以情况下,别人使用起来会简单。js JSP1.1提出了一种扩大的JSP标记的办法,这类办法定名为“标记库”。这些库同意别的的一些相似于jsp:include大概jsp:forward的标记,可是它们不是以jsp:为前缀的而且还附件一些特征。
为了先容标记库,在本教程中我们利用Blazix标记库作为例子。这个标记库只能用在Blazix服务器中,这个服务器你能够收费下载。
每个标记库都有它本人的标记库特别的文档。为了利用标记库,你可使用"taglib"directive来指出标记库“description”处在甚么中央。关于Blazix标记库而言,directive以下:
<%@taglibprefix="blx"uri="/blx.tld"%>
下面者句中“uri”就是指出了标记库形貌地点的中央。标记库的前缀是分歧的。这个指令的意义是说我们可使用blx:来利用库中的标记。Blazix标记库供应了一个blx:getProperty标记。这个标记能够同意用户编纂表双数据。如今,在GetName.jsp文件中,我们增添一个jsp:useBean而且将表单安排在blx:getProperty中:
<%@taglibprefix="blx"uri="/blx.tld"%>
<jsp:useBeanid="user"class="UserData"scope="session"/>
<HTML>
<BODY>
<blx:getPropertyname="user"property="*">
<FORMMETHOD=POSTACTION="SaveName.jsp">
Whatsyourname?<INPUTTYPE=TEXTNAME=usernameSIZE=20><BR>
Whatsyoure-mailaddress?<INPUTTYPE=TEXTNAME=emailSIZE=20><BR>
Whatsyourage?<INPUTTYPE=TEXTNAME=ageSIZE=4>
<P><INPUTTYPE=SUBMIT>
</FORM>
</blx:getProperty>
</BODY>
</HTML>
从下面的代码中我们能够发明blx:getProperty不是以/>开头的,而是用来开头。这条语句将一切的表单输出地区输出到blx:getProperty中,如许它们就能够被标记库准确地修正。
接着创建一个从GetName.jsp到NextPage.jsp的毗连,你将发明bean的数据主动显现在输出地区中。以是如今用户能够编纂数据了。
至此,我们另有一些成绩还没有廓清。起首,用户不克不及扫除名字地区;并且假如用户在“age”地区键进一个不合错误的内容(不是一个效果的整型数值),Java非常毛病就会产生。
如今,我们将利用Blazix标记库中的别的标记来办理这个成绩。Blazie供应了一个blx:setProperty标记来办理这个成绩。Blx:setProperty同意我们界说一个非常毛病处置办法。假如有非常毛病产生,我们能够为用户搜集一个毛病信息而且持续处置。
上面是我们修正后的SaveName.jsp,它能够处置任何毛病。它不但能够显现GetName.jsp而且在其上能够键进准确的数据,并且主动地毗连到NextPage.jsp:
<%@taglibprefix="blx"uri="/blx.tld"%>
<%!
booleanhaveError;
StringBuffererrors;
publicvoiderrorHandler(Stringfield,
Stringvalue,
Exceptionex)
{
haveError=true;
if(errors==null)
errors=newStringBuffer();
else
errors.append("<P>");
errors.append("<P>Valueforfield""+
field+""isinvalid.");
if(exinstanceofjava.lang.NumberFormatException)
errors.append("Thevaluemustbeanumber.");
}
%>
<%
//Variablesmustbeinitializedoutsidedeclaration!
haveError=false;
errors=null;
%>
---------------
<BODY>
<jsp:useBeanid="user"class="UserData"scope="session"/>
<blx:setPropertyname="user"
property="*"
onError="errorHandler"/>
<%
if(haveError){
out.println(errors.toString());
pageContext.include("GetName.jsp");
}else
pageContext.forward("NextPage.jsp");
%>
</BODY>
</HTML>
这里要注重haveError和errors必需每次都从头初始化,由于它们在声明的内部被初始化。
如今,假如一个毛病产生在blx:setProperty处置的历程,我们就显现这个毛病并再次回到GetName.jsp以利用户能够校订这个毛病。假如没有毛病产生,我们就主动让用户毗连到NextPage.jsp。
假如你仔细点你还能够发明表单仍有一个成绩,即“age”入手下手显现空而不是0。这个成绩我们能够经由过程增添“emptyInt=0”到blx:getProperty和blx:setProperty标记中,如许bean地区就被初始化为0了。假如键进的岁数不是一个无效的数值,那末我们就利用0来标记空字符。
别的一个小的成绩是假如有毛病呈现而且我们旧书包括“GetName.jsp”的时分,就失掉两个"<HTML>"标记。关于这个成绩一个完善的办理办法是往失落out.println,并按以下传送毛病:
<%
if(haveError){
request.setAttribute("errors",
errors.toString());
pageContext.forward("GetName.jsp");
}else
pageContext.forward("NextPage.jsp");
%>
那末我们能够在GetName.jsp实行“request.getAttribute”,而且假如前往数值为非空,就显现毛病。这个就留着作为本节教程的实习吧。
最初,再说说本节的实习吧,起首方才说的内容。还要浏览标记库文档中的SQL标记,然后创立一个数据库表格;再编写一个JSP文件,其上有一个FORM和表单上有一个选择框;接着利用SQL标记来依据数据库表格制造选择框
java主要分三块,j2se:java的基础核心语言。j2me:java的微型模块,专门针对内存小,没有持续电源等小型设备。j2ee:java的企业模块,专门针对企业数据库服务器的连接维护。 |
|