分享
 
 
 

使用Struts提供的HTML标签库

王朝html/css/js·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

在本文系列的第一部分中,你已经学习了如何配置Struts提供的HTML标签库以及独立使用的标签;在第二部分中你学习了和form相关的标签;在第三部分中,你将学习如何在Login程序中使用HTML标签库。你可以点此下载该程序。如果你阅读过关于Struts的系列文章(包含六个部分),你会发现这个Longin程序是上次我们讨论过的Login程序的增强版。

图1. 应用程序目录结构

这个Login程序是一个简单的Struts程序,它将显示如何使用HTML标签库,尤其是和form相关的标签和用于错误处理的标签。其目录结构如图1中所示。

本文将介绍程序中每个类之间的关系以及它们所起的作用。注意,你必须自己将所有的库文件复制到WEB-INF/lib目录下;为了节省下载时间它们没有被包含在ZIP文件中。

视图

MVC范例中有三种作为视图的JSP页面:login.jsp、 mainMenu.jsp和viewSecret.jsp。login.jsp文件中包含一个用于用户登录的form,mainMenu.jsp中显示了两个链接(注销(log out)和查看公司机密),而viewSecret.jsp则用来显示一条机密消息。

这个程序的首页面是一个Login页面,它是一个包含两个输入框(userName和password)的form(见图2)。用户被要求在这两个输入框中输入正确的值。登录成功之后程序会显示mainMenu.jsp页面,它包含两个链接:一个是注销,另一个是查看公司机密账号(见图3)。

如果点击了“注销”链接,程序便会退出并重新显示Login页面。如果点击了“查看机密”链接,则会显示viewSecret.jsp 页面。如果注册失败,那么用户会被重新引导到Login页面以重新登录。

如果点击了“注销”链接,程序便会退出并重新显示Login页面。如果点击了“查看机密”链接,则会显示viewSecret.jsp 页面。如果注册失败,那么用户会被重新引导到Login页面以重新登录。

图2. Login页面

如果用户输入正确的用户名和密码,程序会建立一个session对象,并会有一个名为loggedIn的属性被添加到这个session对象中去。只有当程序能够在用户的session对象中查找到这个loggedIn属性时,用户才可以浏览Main Menu页面和Secret页面。所有缺少该属性或无效的session对象都会迫使用户登录。在这个程序中,正确的用户名是“john”,密码是“123”。这些值是程序中固定写死的以避免需要连接到数据库里或使用其他存储来完成用户验证。

当用户注销时,他或她的session对象将失效,同时Longin页面会重新显示。当用户点击链接要查看公司机密时,会弹出viewSecret.jsp页面(见图4)。

图3. 主页面

配置文件

Login程序有两个位于WEB-INF目录下的配置文件:作为部署描述符的web.xml文件(见列表1);以及作为Struts配置文件的truts-config.xml文件 (见列表2)。在列表1中,你需要特别注意action servlet配置中的<init-param元素: <init-param

<param-nameapplication</param-name

<param-valuecom.javapro.struts.

ApplicationResources

</param-value

</init-param

一个<init-param元素代表一个初始化参数,它会被包含在传送到action servlet中的ServletConfig对象里。带有名为“application”的初始化参数对action servlet来说具有特殊的意义:它定义了一个会被加载到缺省消息资源(message resource)中的属性文件。(我将在“消息资源”部分介绍这个属性文件)。在这个程序中,该属性文件被用于存贮整个程序中的错误消息。

部署描述符中需要注意的第二个地方是的<taglib元素,它包含<taglib-uri和<taglib-location元素。基本上,<taglib元素是用来告诉servlet容器如何使用一个标签库的,该标签库的TLD文件可以在<taglib-location元素指定的位置找到。

图4. 机密页面

注意在列表2中,<form-beans部分包含一个名为loginForm的form bean。我在关于Struts系列文章的第五部分中曾介绍过form bean。

WEB-INF目录中的最后一个文件是struts-html.tld文件,它是HTML标签库中的TLD文件。为了节省时间我将跳过对它的介绍,但你可以在ZIP文件中的WEB-INF目录下找到它。

Form

该form以com.javapro.struts.LoginForm类的形式显示(见列表3)。注意粗体的部分:它通过传入“error.missing.userName”和“error.missing.password”字符串来举例说明ActionError对象,这些字符串在消息资源中起关键字(key)的作用。

Action类

Action类分两种:LoginAction (见列表4)和LogoutAction(见列表5)。另外值得一提的是如何通过消息资源中的一个关键字来构建这个ActionError消息(在列表4中显示为粗体)。

HTML标签库的使用

列表6、列表7和列表8中分别包含了JSP文件。login.jsp页面(见列表6)中显示了如何在HTML库中使用这些标签(粗体部分)。我在本文系列的第一部分中介绍过这些标签,但通过看它如何在真正的程序中运行,你会对它们有更深入的了解。

消息资源

如我在“配置文件”部分简要介绍的那样,在WEB-INF/classes/com/javapro/struts目录下的ApplicationResources.properties 文件中包含配对的key/values,它们会被加载到缺省的消息资源中去。HTML标签库中的<errors标签会在该消息资源中查找到自定义的错误消息。想知道它是如何出错的,你可以试着用一个错误的用户名或密码来登录,看看显示的错误消息是什么。更改错误消息和编辑属性文件一样容易。看看如下的属性文件: errors.header=

<bError(s)!!!</b<ul

errors.footer=

</ul<hr

error.missing.userName=

<liA user name was not found.</li

error.missing.password=

<liA password was not found.</li

error.login.failed=

<liIncorrect user name and/or password.</li

如果你检查了程序的web.xml文件,你会看到这些对象是如何被加载的。消息资源通过将程序的参数传入ActionServlet来完成加载过程。在ActionServlet进行初始化时,它会将package文件夹中的ApplicationResources.properties属性解析为缺省的消息资源。如果在资源中更改一个消息并重新加载程序,它就会在整个程序中显示。在你的Login程序中,这个属性文件包含一些程序的类中所使用的错误消息。

本文介绍了如何在一个简单的Login程序中使用HTML标签库。它对程序进行了详细描述,包括视图、配置文件、form bean、action类以及用于JSP页面的代码。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有