170 likes | 292 Views
西南科技大学网络教育系列课程 动态网页设计( JSP ). 第九章 Servlet 技术 ( 续 ). Jsp 与 Servlet 的角色划分. Jsp: 页面显示. Servlet: 逻辑处理. JSP 设计模式. JSP 设计模式包括两个: ( 1 ) Model1 , JSP+JavaBean 设计模式 ( 2 ) Model2 , MVC 设计模式. 模式一 JSP+JavaBean 模式. 在这种模式中, JSP 页面独自响应请求并将处理结果返回客户,所有的数据库操作通过 JavaBean 来实现。
E N D
西南科技大学网络教育系列课程 动态网页设计(JSP) 第九章 Servlet技术(续)
Jsp与Servlet的角色划分 • Jsp: • 页面显示 • Servlet: • 逻辑处理
JSP设计模式 • JSP设计模式包括两个: • (1)Model1,JSP+JavaBean设计模式 • (2)Model2,MVC设计模式
模式一JSP+JavaBean模式 • 在这种模式中,JSP页面独自响应请求并将处理结果返回客户,所有的数据库操作通过JavaBean来实现。 • 大量地使用这种模式,常会导致在JSP页面中嵌入大量的Java代码,当需要处理的商业逻辑非常复杂时,这种情况就会变得很糟糕。大量的Java代码使得JSP页面变得非常臃肿。前端的页面设计人员稍有不慎,就有可能破坏关系到商业逻辑的代码。 • 这种情况在大型项目中经常出现,造成了代码开发和维护的困难,同时会导致项目管理的困难。因此这种模式只适用于中小规模的项目。
模式二MVC模式 • “MVC”模式即是:“Model-View-Controller”模式。在这种模式中,通过JSP技术来表现页面,通过Servlet技术来完成大量的事务处理工作,实现用户的商业逻辑。 • 在这种模式中,Servlet用来处理请求的事务,充当了控制器(Controller即“C”)的角色,Servlet负责响应客户对业务逻辑的请求并根据用户的请求行为,决定将哪个JSP页面发送给客户。JSP页面处于表现层,也就是视图(View即“V”)的角色。JavaBean则负责数据的处理,也就是模型(Model即“M”)的角色
模式二MVC模式 • MVC处理过程: • 首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理 • 然后模型用业务逻辑来处理用户的请求并返回数据, • 最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户。
模式二MVC模式 • 为什么使用MVC: • 数据层代码和表示层代码混在一起 • MVC从根本上强制性的将其分开 • 多个视图能共享一个模型 • 模型返回的数据没有进行格式化,所以同样的构件能被不同界面使用 • MVC的应用程序的三个部件相互对立 • 可以使用控制器来联接不同的模型和视图去完成用户的需求
MVC在JSP中的实现模型 • 目前有两种实现模型: • (1)基于Bean的MVC模型。 • (2)基于Structs的MVC模型。
基于Bean的MVC模型 • Bean可以利用JavaBean实现,也可以利用EJB来实现,分别构成的系统是: • JavaBean(M)+JSP(V)+Servlet • EJB(M)+JSP(V)+Servlet(C)实现。
Struts概述 • Client browser(客户浏览器) 来自客户浏览器的每个 HTTP 请求创建一个事件。Web 容器将用一个 HTTP 响应作出响应。 • Controller(控制器) 控制器接收来自浏览器的请求,并决定将这个请求发往何处。就 Struts 而言,控制器是以 servlet 实现的一个命令设计模式。 struts-config.xml 文件配置控制器。 • 业务逻辑 业务逻辑更新模型的状态,并帮助控制应用程序的流程。就 Struts 而言,这是通过作为实际业务逻辑“瘦”包装的 Action 类完成的。 • Model(模型)的状态 模型表示应用程序的状态。业务对象更新应用程序的状态。ActionForm bean 在会话级或请求级表示模型的状态,而不是在持久级。JSP 文件使用 JSP 标记读取来自 ActionForm bean 的信息。 • View(视图) 视图就是一个 JSP 文件。其中没有流程逻辑,没有业务逻辑,也没有模型信息 -- 只有标记。标记是使 Struts 有别于其他框架(如 Velocity)的因素之一。
Struts实现MVC框架 Servlet/JSP容器 Struts-config.xml (模型) JavaBean EJB Action (控制器) ActionServlet Web 服务器 Action Bro (视图) JSP Action
用Jbuilder建立简单Struts实例 • 1.新建项目 • 2.新建Web应用 • 3.建立ActionForm • 4.新建Action • 5.新建并配置forward • 6.编程
用Jbuilder建立简单Struts实例 • 配置资源文件 • 修改ActionForm里的validate()方法 • 修改Action里的perform()方法 • 建立index.jsp和loginok.jsp文件
自定义JSP标记库 • 在JSP规范1.1版中增加了自定义标记库,允许开发人员在自定义的标记符中封装复杂的功能。定制标记使得JSP项目中很容易创建重用的代码模块
使用自定义标记库 • 在使用自定义标记库时,主要分为以下3个步骤: • (1)建立一个TLD(Tag Library Descriptor)文件,指定标记库中哪一个标记与哪一个处理程序相匹配。这是一种很简单的XML文件,TLD文件描述和说明了属性、信息和标记处理器文件位置等信息。JSP 容器使用这一文件来映射被调用标记库的位置和用法。 • (2)建立一个对标记的处理程序。处理程序本身也是一个Java类。这是标记库的真正核心。JSP页面把页面上设置的标记属性都传递给标记处理器,JSP页面上的标记标示的内容也是这样处理的。当标记处理器完成其处理过程,它就会把处理后的输出结果回送给JSP页面做进一步处理。 • (3)在JSP页面中使用标记。在JSP页面中首先声明标记库,然后再使用它。
创建并使用标记库 案例名称:TLD配置文件 程序名称:mytld.tld 案例名称:处理自定义标记的Java类 程序名称:MyTagLib.java 案例名称:使用自定义标记库的JSP页面 程序名称:exampletag.jsp