join.jsp的活动
显示打开的输入网页。从表单参数中读取email的值。验证email地址。如果email地址有效:将该地址添加到数据库中。重定向到下一个网页。如果email地址无效:设置错误消息。重新显示含有错误消息的join.jsp。单页方法的后果
HTML和Java强耦合在一起
JSP文件的编写者必须既是网页设计者,又是Java开发者。其结果通常要么是很糟的Java代码,要么是难看的网页,有时甚至Java代码和网页都很糟。的不足
随着网页逐渐变大,很容易想到实现一些JavaScript。当网页中出现JavaScript时,这种脚本就可能与Java代码产生混淆。可能产生混淆的一个例子是使用客户端的JavaScript来验证email域。
内嵌的流程逻辑
要理解应用程序的整个流程,您必须浏览所有网页。试想一下拥有100个网页的网站的错综复杂的逻辑。调试困难
除了很糟的外观之外,HTML标记、Java代码和JavaScript代码都集中在一个网页中还使调试变得相当困难。强耦合
更改业务逻辑或数据可能牵涉相关的每个网页。美学
在很大的网页中,这编码样式看起来杂乱无章。我过去进行MicrosoftASP开发时,我经常看到有1000行的网页。即使有彩色语法显示,阅读和理解这些代码仍然比较困难。请别在我的HTML中加入太多的Java代码
在清单1中,不是Java代码中有大量的HTML,而是在HTML文件中有大量的Java代码。从这个观点来看,除了允许网页设计人员编写Java代码之外,我实际上没做什么。但是,我们并不是一无所有;在JSP1.1中,我们获得一种称为“标记”的新特性。
JSP标记只是将代码从JSP文件中抽取出来的一种方式。有人将JSP标记看作是JSP文件的宏,其中用于这个标记的代码包含在servlet中。(宏的观点在很大程度上是正确的。)出于同样的原因,我不希望在Java代码中看到HTML标记,我也不希望在JSP文件中看到Java代码。JSP技术的整个出发点就是允许网页设计人员创建servlet,而不必纠缠于Java代码。标记允许Java程序员将Java代码伪装成HTML来扩展JSP文件。图3显示了从JSP网页中抽取代码并将它们放入JSP标记中的一般概念。
图3.JSP标记
清单2是用来说明Struts标记的功能的一个例子。在清单2中,正常的HTMLform标记被用Strutsform:form标记替换。清单3显示了浏览器接收到的结果HTML。浏览器获得HTMLform标记,但带有附加代码,如JavaScript。附加的JavaScript激活email地址域。服务器端的form:form标记代码创建适当的HTML,并使网页设计人员不再接触JavaScript。
清单2.Struts的form标记
form:formaction=join.dofocus=email
form:textproperty=emailsize=30maxlength=30/
form:submitproperty=submitvalue=Submit/
/form:form
清单3.发送给浏览器的结果HTML
formname=joinFormmethod=POSTaction=join.do;jsessionid=ndj71hjo01
inputtype=textname=emailmaxlength=30size=30value=
inputtype=submitname=submitvalue=Submit
/form
scriptlanguage=JavaScript
!--
document.joinForm.email.focus
//--
/script有关JSP标记的注意事项:
JSP标记需要一个运行JSP1.1或更高版本的容器。JSP标记在服务器上运行,而不像HTML标记那样由客户机解释。JSP标记提供了适当的代码重用机制。可以使用一种称为include的JSP机制将HTML和JavaScript添加到网页中。但是,开发人员常常会创建巨大的JavaScript库文件,这些库文件被包含在JSP文件中。结果返回给客户机的HTML网页要比必需的HMTL网页大得多。include的正确用法是仅将它用于生成诸如页眉和页脚这类内容的HTML代码段。通过抽取出Java代码,JSP标记使开发角色更加专业化。模型-视图-控制器(MVC)
JSP标记只解决了部分问题。我们还得处理验证、流程控制和更新应用程序的状态等问题。这正是MVC发挥作用的地方。MVC通过将问题分为三个类别来帮助解决单一模块方法所遇到的某些问题:
Model(模型)
模型包含应用程序的核心功能。模型封装了应用程序的状态。有时它包含的唯一功能就是状态。它对视图或控制器一无所知。View(视图)
视图提供模型的表示。它是应用程序的外观。视图可以访问模型的读方法,但不能访问写方法。此外,它对控制器一无所知。当更改模型时,视图应得到通知。
Controller(控制器)
控制器对用户的输入作出反应。它创建并设置模型。(未完待续)(编辑:keji)
信息网络传播视听节目许可证:1906152
大洋网违法和不良信息举报电话:举报邮箱:
推荐:
网友评论 ()条 查看