Chap3 JSP 概述 |
3.1 servlet存在的问题 |
(1)应用程序较大时(多个页面,使用数据库等外部资源,多个选项,支持多种类型的client),设计网站的方式对于能否适应新需求、能否演化非常重要。Jsp能适用于简单到复杂的web应用。 |
(2)纯基于servlet的途径存在下列问题:1>需要全面的java编程知识来开发和维护应用程序的各个方面,因为处理代码和html元素搅在了一起;2>改变程序的外观或需要支持新的client类型,需要更新并重新编译servlet代码;3>设计程序界面时,很难利用页面开发工具。需要将生成的html手工添加到servlet代码中,效率低,易出错。 |
(3)由纯servlet转变为:Servlet负责请求处理;jsp负责表示(presentation);JavaBean负责业务逻辑。 |
(4)分工:java程序员实现请求处理(servlet)和业务逻辑(JavaBean);页面作者实现用户界面。 |
(5)上面的开发模型,使得页面作者即使不会编程,也能开发出具有很多动态特性的web应用。因为他可以利用jsp标准actions和jstl库,还能利用开源或商业性的java组件。 |
3.2 JSP分解 |
(1)JSP页面包括JSP元素和template text。页面中只要不是JSP元素,就是template text。Template text可以是任何文本,不光可以是html;通常直接传递给浏览器。 |
(2)处理jsp页面请求时,将template text + JSP元素产生的动态内容一起,作为response传给浏览器 |
3.3 JSP处理 |
(1)JSP容器:负责截获对JSP页面的请求。首先,将JSP页面转变成servlet(即JSP page implementation class);然后,编译serlet class。该阶段即translation phase。[注]一般是收到对页面的第一次请求时,启动translation phase。可以采用precompilation。 JSP容器还负责调用产生的servlet。即“请求处理阶段”。除了第一次请求,以后的请求都只需要经历“请求处理阶段”。 |
(2)通常将JSP容器实现为一个servlet。Servlet容器和JSP容易通常合并为一个web容器。 |
(3)可见,jsp事实上是另外一种写servlet的方法。除了translation phase,JSP页面就像一个servlet一样被处理。 |
3.3.1 JSP元素 |
(1)三类jsp元素:directive,action,scripting |
(2)directive元素:指定页面自身的信息,这些信息对于各次请求都是相同的。包括:<%@ page…>,<%@ include …>,<%@ taglib ...> |
(3)标准action元素:对于每次请求相关的信息,执行一些action。包括:<jsp: usebean>,<jsp: getProperty>,<jsp: setProperty>,<jsp: include>,<jsp: forward>,<jsp: param>,<jsp: plugin> |
(4)自定义的action元素:通过jsp规范包含的一个java api实现,可扩展jsp语言。 |
(5)JSTL(JSP standard tag library)就是一种上述扩展。它由sun公司制定,可用于jsp程序常用的处理,例如条件处理、数据库访问等。 |
(6)除了jstl,还可以通过扩展api自定义action元素。 |
(7)scripting元素:可用于在jsp页面中添加小段(java)代码。不鼓励使用;如果页面中大量使用代码,会造成维护问题。 |
(8)javabean组件:遵循特定编码规范的java类;通常用于描述应用程序实体信息(例如客户、订单)的容器。 |
3.4 使用MVC,进行JSP应用程序设计 |
(1)MVC设计模型(Model-View-Controller) |
(2)在服务器程序中,通常把程序分成3部分:业务逻辑;表示;请求处理 |
(3)业务逻辑:表示如何处理数据 |
(4)表示:应用程序的数据如何显示给客户 |
(5)请求处理:如何把“业务逻辑”和“表示”联系在一起。 |
(6)MVC中,Model对应业务逻辑和数据;View对应“表示”;Controller 对应请求处理 |
(7)使用MVC模型的原因:1>应用程序的Model(应用程序+逻辑)是程序中最稳定的部分,而View(表示)却经常变化;2>需要把数据以不同的语言、或把数据的不同部分显示给不同的用户,每个client都需要不同的显示格式。 |
Chap3 JSP 概述
最新推荐文章于 2020-01-06 18:14:21 发布