javaWeb知识总结 - 图文(4)

2020-06-07 12:58

6.2 设计模式——装饰模式

模式名称:装饰者(Decorator),也叫包装器,是23种的设计模式之一

模式定义:动态的给一个对象添加一些额外的职责(或功能),就增加对象功能来说,装饰模式比继承方式实现更为灵活。装饰模式是一种对象结构型模型。

6.2.1 装饰模式的优点和缺点

1)装饰模式与类继承的目的都是要扩张对象的功能,但装饰类可以提供比类继承更多的灵活性

2)通过使用不同的具体装饰类以及这些装饰类的排列组合,就可以创造出不同行为的组合。

3)这种比类继承更为灵活机动的特性,也同时意味着装饰模式比类继承更加容易出错(如果两个包装类出现排斥,能组合,但逻辑矛盾,不能一起用)。

模式使用场景:

1) 在不影响其他对象的情况下,以动态/透明方式给单个对象添加职责,需要动态地给一个对象增加功能,这些功能可以被动态的撤销。

2) 在不能采用类继承方式进行扩展功能时(一种情况是可能有大量独立的扩展,每一种组合将产生大量的子类,使得子类数量爆炸性增长。另一种情况可能是因为类定义不能继承(final类),或类不能用于生成子类。)

需要注意的问题:

1) 一个装饰类的接口必须与被装饰类的接口相同;

2) 尽量保持具体装饰类作为一个“轻”类(方法少),也就是是装饰类里不要有太多的代码逻辑和状态,可以通过装饰类对其进行扩展。

7.1 JSP认识

Servlet的缺陷:

? 他的代码/部署/调试任务非常繁琐。 ? 生成动态网页繁琐,不利于项目分工。 采用jsp技术编写动态网页:

? 由HTML语句和嵌套在其中的Java代码组成的一个普通文本文件 ? JSP页面的扩展名必须为.jsp

JSP(Java Server Pages Java服务器页面):

? 运行在服务器上

? 有一定的规范标准(JSP2.0)

? 是在HTML页面中嵌入JAVA代码段的页面,扩展名为.JSP Jsp本质是一个简化的servlet设计

7.2 JSP生命周期

? ? ? ? ? ? ?

由JSP引擎将JSP页面翻译成JAVA代码 将JAVA代码编译成class字节码文件 加载到容器

由容器实例化对象

初始化阶段相关的方法是jspInit()

请求到达,调用服务器阶段相关的方法是_japService() 销毁阶段相关的方法是jspDestroy()

7.3 JSP语法和语义

JSP网页主要由元素(Element)和模板数据(Template Date)两部分组成 1.模板数据是JSP的静态部分,WEB容器不处理,不需要翻译

2.元素则是必须由WEB容器解释,且都是以XML作为语法基础,并且大小写一致。 WEB容器支持两种不同格式的JSP语法:普通格式和XML兼容格式 1.普通JSP语法是设计给开发者用的 2.XML兼容JSP语法是设计用来

元素分为三个部分:脚本元素、指令、动作(标准)

脚本元素组成及语法:声明<%!声明%>、scriptlet<%代码%>、脚本表达式<%=表达式%> 使用脚本元素,在模板数据块之间嵌入Java代码。

Scriptlet:提供直接插入Java代码片段到模板数据中的方法。一个scriptlet只能是Java程序,必须符合Java规范,格式为<%java代码片段%>

声明:用在JSP页面中声明合法的变量和方法,格式为<%!声明>

脚本表达式:输入动态web生成的结果,与Servlet的out.println()作用相同,合适为<%=脚本表达式%>

JSP页面注释种类:

1)HTML/XHTML注释:这种注释和HTML中的注释很像,唯一不同之处就是可以在这个注释中使用脚本表达式。

语法:

2)隐藏注释:这种注释写在JSP程序中不发给客户端浏览器,同时不会显示在JSP翻译的JAVA源代码中。

语法:<%-- 注释 -->

3)Scriplet注释:由于Scriplet包含的是java代码,所以Java中的注释规则在Scriplet中也使用。常用的java注释使用 单行注释:“//” 2.多行注释“/* */” 该注释在JSP页面

<%-- 这是隐藏注释,客户端不可见,Java源代码也不可见 --%> <% //这是java的单行注释(客户端不可见,Java源代码可见) /*这是java的多行注释(客户端不可见,Java源代码可见)*/%>

7.3.2 JSP指令

指令的作用是用来提供整个JSP页面的相关信息,用于JSP页面程序与Web容器之间的

通信,JSP指令有三种方式,分别是Page(页面指令)、include(包含)指令和taglib(标签)指令。

1)Page指令:该指令用来定义JSP页面中的全局属性,如页面类型、字符集编码等方式,其格式为<%@page%>。无论吧page指令放置于JSP页面的任何位置,其作用范围都是整个JSP页面,良好的编程习惯是放在文件的顶部。

<%@ page language=\ info=\页面指令\ contentType=\%>

<%@ page import=\ %> <%@ page errorPage=\%> <%@ page isThreadSafe=\%> <%@ page session=\%>

2)include指令:该指令表示在JSP编译时插入一个包含文本或代码文件,把文件的文本静态地包含到当前的JSP页面中。

格式:<%@ include file=“文件名”%>

由于使用include指令可以把一个复杂的JSP页面分成若干简单的部分们这样大大增加了JSP页面的管理性。当要对页面进行修改时,只需要修改对应的部分即可。通常情况吧页面分成多个区域。

3)taglib指令:该指令允许包含和访问自定义标签库。在JSP规范里,标签库得到不断加强,JSP2.0规范中增加了JSTL标准标签库。

7.3.3 JSP动作

动作的作用是用来处理页面与页面或页面与组件之间的通信。如从一个页面转达到另一个页面。

动作:包含动态或静态文件

动作:将请求转发发给另一个JSP页面、Servlet或者静态文件。

Include指令(静态包含)和JSP:include动作(动态包含)的区别: 1)从属性方面进行区别

Include指令通过file属性来制定被包含的页面,include指令将file属性看作一个实际存在的文件路径,所以该属性不支持任何脚本表达式。若在file属性值中应用JSP的脚本表达式,会抛出异常。

Include动作通过page属性来制定被包含的页面,该属性支持JSP的脚本表达式。

2)从处理方式方面进行区别

使用include指令,被包含的文件会固定不变的插入到包含页面中使用该指令的位置,然后JSP编译器再对这个合成的文件进行翻译然后编译,所以在JSP页面中使用include指令来包含另一个JSP页面,最终编译后的文件只有一个。

使用include动作包含文件时,服务器会将请求转发到(注意是转发不是重定向)被包含的页面,并将执行结果输出到浏览器中,然后返回包含页面继续执行后面的代码,因为服务器执行的是两个文件,所以JSP编译器会分别对两个文件进行编译

3)重包含方式方面进行区别 使用include指令包含文件,最终服务器执行的是将两个文件合成后由JSP编译器编译

成一个class文件,所以被包含的文件的内容是固定不变的,若改变了被包含的文件,则主文件的代码也会发生变化,因此服务器会重新编译主文件,include指令的这种被称为静态包含。

使用include动作通常是包含那些经常需要改动的文件,此时服务器执行的是两个文件被包含的文件改变不会影响到主文件,因此服务器不会对主文件重新编译,只需要重新编译被包含的文件即可,而对被包含文件的编译时在执行时进行的,也就是说,只有当include动作被执行时,使用该包含的目标文件才会被编译,否则被包含的文件不会被编译,所以这种包含称为动态包含。

7.4 JSP隐式对象,JSP4中属性范围:

在JSP中为了简化用户的开发,提供了9个隐式对象(内置对象)。这些对象将由容器为用户进行实例化,用户直接使用即可,而不用像在java中必须通过关键字NEW进行实例化对象后才能使用。

pageContext对象:他是javax.servlet.PageContext类的实例,主要表示一个JSP页面的上下文。当离开该JSP页面,pageContext对象将被销毁。

JSP4中属性范围:

在JSP中提供了4中属性的保存范围。所谓的属性保存范围,指的是一个隐藏(或内置)对象,可以在多少个页面中保存和使用其中的属性。

Page:只在一个页面中保存属性,跳转页面后失效。

Requst:只在一次请求中保存属性,请求转发后依然有效。

Session:只在一次会话范围中保存属性,无论何种跳转都可以使用,知道session失效才无效。

Application:在整个服务器上保存,所有用户都可以使用,知道服务器关闭或终止后无效。

7.5 JSP分页功能


javaWeb知识总结 - 图文(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:Grade7 Unit 1-3

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: