JSP由浅入深(11)标记库

JSP 1.1提出了一种扩展的JSP标志的方法,这种方法命名为“标志库”。这些库允许另外的一些类似于jsp:include 或者jsp:forward的标志,但是它们不是以jsp:为前缀的并且还附件一些特性。

  为了介绍标志库,在本教程中我们使用Blazix标志库作为例子。这个标志库只能用在Blazix服务器中,这个服务器你可以免费下载。

每一个标志库都有它自己的标志库特殊的文档。为了使用标志库,你可以使用"taglib" directive来指出标志库“description”处在什么地方。对于Blazix标志库而言,directive如下:

<%@ taglib prefix="blx" uri="/blx.tld" %>

上面者句中“uri”就是指出了标志库描述所在的地方。标志库的前缀是不同的。这个指令的意思是说我们可以使用blx:来使用库中的标志。Blazix标志库提供了一个blx:getProperty标志。这个标志可以允许用户编辑表单数据。现在,在GetName.jsp文件中,我们增加一个jsp:useBean并且将表单放置在blx:getProperty中: 数据挖掘研究院

<%@ taglib prefix="blx" uri="/blx.tld" %>

<jsp:useBean id="user" class="UserData" scope="session"/> 数据挖掘论坛


<HTML>


<BODY>


<blx:getProperty name="user" property="*"> 数据挖掘实验室


<FORM METHOD=POST ACTION="SaveName.jsp"> 数据挖掘论坛


What"s your name? <INPUT TYPE=TEXT NAME=username SIZE=20><BR>


What"s your e-mail address? <INPUT TYPE=TEXT NAME=email SIZE=20><BR> 数据挖掘实验室


What"s your age? <INPUT TYPE=TEXT NAME=age SIZE=4>


<P><INPUT TYPE=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:

<%@ taglib prefix="blx" uri="/blx.tld" %>
数据挖掘交友

<%!


boolean haveError;

数据挖掘交友


数据挖掘论坛

StringBuffer errors; 数据挖掘交友


数据挖掘工具



public void errorHandler( String field, 数据挖掘论坛


数据挖掘论坛

String value,


数据挖掘实验室

Exception ex ) 数据挖掘交友


{ 数据挖掘实验室


数据挖掘实验室

haveError = true;


数据挖掘论坛

if ( errors == null )

数据挖掘交友


errors = new StringBuffer(); 数据挖掘工具


else


数据挖掘实验室

errors.append( "<P>" ); 数据挖掘研究院


数据挖掘论坛

errors.append( "<P>Value for field "" +


数据挖掘研究院

field + "" is invalid." );

数据挖掘工具


数据挖掘论坛

if ( ex instanceof java.lang.NumberFormatException )


errors.append( " The value must be a number." );


数据挖掘工具

}


数据挖掘工具

%>

数据挖掘论坛


<%


数据挖掘交友

// Variables must be initialized outside declaration! 数据挖掘交友


haveError = false; 数据挖掘工具


数据挖掘工具

errors = null;


数据挖掘研究院

%> 数据挖掘研究院


数据挖掘工具

---------------

数据挖掘工具


<BODY>

数据挖掘工具


数据挖掘实验室

<jsp:useBean id="user" class="UserData" scope="session"/>

数据挖掘交友


数据挖掘实验室

<blx:setProperty name="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标志来根据数据库表格制作选择框。

数据挖掘研究院

[数据挖掘专家] [数据挖掘研究院] [数据挖掘论坛] [数据挖掘实验室]
上一篇:JSP由浅入深(12)表单编辑
下一篇:JSP语法(6)——Page指令
最新评论共有 0 位网友发表了评论 , 查看所有评论
发表评论( 不能超过250字,需审核,请自觉遵守互联网相关政策法规。 )
匿名?
数据挖掘网站导航 数据挖掘论坛导航
  • 数据挖掘工具
  • 数据挖掘论坛
  • DataCruncher - Cognos
  • MineSet - MathSoft
  • Intelligent Miner - GainSmarts
  • Sqlserver - SAS - Clementine
  • CART - Weka - WizSoft
  • NeuroShell - ModelQuest
  • data mining tools - Darwin
  • 数据挖掘交友
  • 数据挖掘博客
  • 数据挖掘工具
  • 数据挖掘资源
  • 数据挖掘技术算法
  • 数据挖掘相关期刊、会议
  • 研究院联盟合作专区
  • 数据挖掘基础与相关技术
  • 数据挖掘厂商与就业
  • 数据挖掘研究者乐园
  • 知名厂商数据挖掘工具资料
  • 国内数据挖掘实验室
  • Foreign Data Mining Lab
  • 热点关注
  • Java学生成绩管理系统源代码
  • Servlet动态产生JPEG图像的例子
  • JSP数据导出到EXCEL简便方法
  • JSP像乌云般挡住了JSF的光芒
  • Java EE5.0时代来临,金蝶Apusic抢先撞线!
  • JSP不是简化的Java
  • 在JSP中如何实现MD5加密
  • JSP/Servlet/JSF:标签库的深入研究
  • jsp计数器制作手册
  • jsp页面显示数据导出到excel表中
  • 论坛最新话题
  • Foundations of Statistical Natural Langu
  • Game Theory meet Data Mining: A Recent P
  • System Building: How does it help or hin
  • 数据挖掘与Clementine培训
  • 新手报到
  • 求 SASEM 客户流失预测分析
  • 数据挖掘工程师/搜索研究院—北京——无线
  • 数据挖掘入门介绍(如何着手数据挖掘)
  • Information Overload Survey Results
  • The INEX 2005 Workshop on Element Retrie
  • 相关资讯
  • Java EE5.0时代来临,金蝶Apusic抢先撞线!
  • JSP像乌云般挡住了JSF的光芒
  • jsp计数器制作手册
  • 面向对象编程,我的思想(5)
  • jsp读取大对象CLOB并生成xml文件示例
  • JSP开发前菜鸟设置篇
  • JRun3.0配合IIS的安装全过程
  • win2000下jsp平台搭建的简单过程
  • IIS6和Tomcat5的整合
  • Windows下JSP开发环境的配置
  • 数据挖掘实验室资料
  • 数据挖掘博客地址
  • 数据挖掘实验室网站地址
  • Prepare for Medicare audits by using dat
  • 注册成为SAS用户与爱好者俱乐部会员
  • 水南梅
  • 明日烟
  • 新人报道
  • 下载
  • 厦门服务器托管,450元/月—0592-5177319 高
  • 买空间送域名--0592-5177319 高静