第4章 方法和作用域
- 格式:ppt
- 大小:86.00 KB
- 文档页数:15
第4章习题解析1. 答:使用请求对象(即HttpServletRequest接口)的getSession()方法。
2. 答:如果客户在指定时间内没有访问服务器,则该会话超时。
对超时的会话对象,服务器使其失效。
通过会话对象的setMaxInactiveInterval()方法设置会话最大超时时间。
web.xml文件使用<session-config>元素的子元素<session-timeout>设置最大超时时间,如下所示。
<session-config><session-timeout>20</session-timeout></session-config>这里的最大超时时间是对整个应用程序的所有会话有效,<session-timeout>元素指定的时间单位是分钟。
setMaxInactiveInterval()方法参数单位是秒。
3. 答:有些客户浏览器可能不支持Cookie或用户阻止所有的Cookie,此时不能用Cookie 实现会话。
4. 答:使用响应对象(即HttpServletResponse接口)的encodeURL()方法或encodeRedirectURL()方法。
5. 答:不能。
因为许多用户是通过代理服务器访问Internet的,此时服务器得到的是代理服务器的IP地址而不是实际用户的IP地址,因此这些用户的IP地址不唯一。
6. 答:D7. 答:A, B8. 答:A, D9. 答:C 10. 答:A,C 11. 答:C12. 答:C, D 13. 答:B,C 14. 答:C15. 答:B 16. 答:A 17. 答:C18. 答:A,B,D,F19. 答:具有很大的影响。
该应用程序将不能维护用户的状态。
Servlet容器将为每个客户的每次请求都创建一个新的会话。
修改这个问题的唯一方法是修改Servlet代码加入URL重写功能。
1.了解四个作用域(scope)的用处。
2.了解el(Expression Language)。
4.1. 何为作用域先让我们看看效果:大概流程是这样的,我们访问04-01/index.jsp的时候,分别对pageContext, request, session, application四个作用域中的变量进行累加。
(当然先判断这个变量是不是存在,如果变量不存在,则要把变量初始化成1。
)计算完成后就从index.jsp执行forward跳转到test.jsp。
在test.jsp里再进行一次累加,然后显示出这四个整数来。
从显示的结果来看,我们可以直观的得出结论:1.page里的变量没法从index.jsp传递到test.jsp。
只要页面跳转了,它们就不见了。
2.request里的变量可以跨越forward前后的两页。
但是只要刷新页面,它们就重新计算了。
3.session和application里的变量一直在累加,开始还看不出区别,只要关闭浏览器,再次重启浏览器访问这页,session里的变量就重新计算了。
4.application里的变量一直在累加,除非你重启tomcat,否则它会一直变大。
而作用域规定的是变量的有效期限。
1.如果把变量放到pageContext里,就说明它的作用域是page,它的有效范围只在当前jsp页面里。
从把变量放到pageContext开始,到jsp页面结束,你都可以使用这个变量。
2.如果把变量放到request里,就说明它的作用域是request,它的有效范围是当前请求周期。
所谓请求周期,就是指从http请求发起,到服务器处理结束,返回响应的整个过程。
在这个过程中可能使用forward的方式跳转了多个jsp页面,在这些页面里你都可以使用这个变量。
3.如果把变量放到session里,就说明它的作用域是session,它的有效范围是当前会话。
所谓当前会话,就是指从用户打开浏览器开始,到用户关闭浏览器这中间的过程。
第4章在XML⽂档中使⽤Schema补充第333章XML中的名称空间学习⽬标名称空间的⽬的是为了有效地区分名字相同的标记,当两个标记的名字相同时,可以通过⾪属于不同的名称空间相互区分。
通过本章学习,要了解名称空间的基本概念,掌握名称空间的声明⽅法和使⽤⽅法,熟悉默认名称空间的声明⽅法和使⽤⽅法,掌握名称空间的作⽤范围。
XML允许⾃定义标记,那么在⼤型⽽复杂的XML⽂档中,不可避免地会遇到标记名称相同但其代表的意义却不同的现象。
尤其是在将多个XML⽂档组合使⽤时,名字冲突的情况更会容易发⽣。
为了解决标记重名这⼀问题,XML规范提供了名称空间(Namespaces)机制。
333.1 名称空间的基本概念名称空间就是在逻辑上相关的任何⼀组名称,在名称空间中,每个名称都必须是惟⼀的,并且是按照名称空间的规则来构建的。
在具体介绍名称空间之前,让我们看⼀个简单的XML⽂档。
【例333-1】存储教⼯信息和家属信息的XML⽂档。
<教⼯资料><教⼯><姓名>苏青<性别>男<电话>12345678<职称>副研究员<家属><姓名>王静<电话>87654321在这个⽂件中,<姓名>和<电话>两个元素在不同的上下⽂中使⽤了两次,⼀次是作为教⼯的资料,另⼀次是作为家属的,这两个标记应⽤的范围不同,⽽标记名却⼀样,尽管我们可以轻松地识别出它们的区别,但却会造成电脑解析时的混淆。
1.名称空间的名字和前缀名称空间的⽬的是有效地区分名字相同的标记。
名称空间在XML⽂档中的具体应⽤是在标记名前添加⼀个全球惟⼀的标识符,在可能发⽣混淆的最外层标记中声明,这样相同的标记就因为有个惟⼀的标识符⽽可以区分了。
为了保证这个标识符的惟⼀性,W3C推荐使⽤统⼀资源标识符(Uniform Resource Identifier,URI)作为名称空间的名字。
4.1 总体设计的目标及任务1.软件总体设计是指软件总体结构设计和数据设计,该阶段主要任务不包括()。
A.设计软件的模块结构B.定义接口并建立数据结构C.模块内部细节设计D.生成概要设计规格说明2.概要设计过程是()A.先确定系统的实现方案,然后在结构设计阶段中确定软件的模块结构B.确定软件的模块结构,再设计出系统的所有程序和数据文件C.设计出系统的HIPO图并对所有模块进行描述D.规划出系统的后期设计总体结构3.通过总体设计阶段的工作,开发人员将划分组成系统的物理元素,例如程序、文件和等。
4.模块接口设计要简单,以便降低复杂程度和冗余度。
()5.软件概要设计包括软件系统结构设计以及数据结构和数据库细节设计。
()6.概要设计也称总体设计,其过程由确定设计方案和结构设计两个阶段组成。
()4.2 软件结构设计原理1.对软件进行分解,是为了()A.降低模块的复杂程度B.降低模块间接口的复杂程度C.降低模块的复杂程度,并降低模块间接口的复杂程度D.降低模块的复杂程度,并提高模块间接口的复杂程度2.耦合是对软件不同模块之间互连程度的度量。
各种耦合按从强到弱排列为()A.内容耦合,控制耦合,数据耦合,公共环境耦合B.内容耦合,控制耦合,公共环境耦合,数据耦合C.内容耦合,公共环境耦合,控制耦合,数据耦合D.控制耦合,内容耦合,数据耦合,公共环境耦合3.内聚程度最低的是()内聚。
A.偶然B.过程C.顺序D.时间4.内聚度标志一个模块内部各成分彼此结合的紧密程度,按其高低程度可分为七级,内聚度越低越好。
()4.3 软件结构设计工具4.4 软件结构设计启发式规则1.按照软件工程的原则,模块的作用域和模块的控制域之间的关系是()A.模块的作用域应在模块的控制域之内B.模块的控制域应在模块的作用域之内C.模块的控制域与模块的作用域互相独立D.以上说法都不对2.一个软件的深度是指软件结构中控制的层数,而软件的宽度是指软件结构中同层模块数的。
4.1 函数说明与返回值4.1.1 函数的类型说明4.1.2 返回语句4.2 函数的作用域规则4.2.1 局部变量4.2.2 全局变量4.2.3 动态存储变量4.2.4 静态存储变量4.3 函数的调用与参数4.3.1 形式参数与实际参数4.3.2 赋值调用与引用调用4.4 递归4.5 实现问题4.5.1 参数和通用函数4.5.2 效率4.6 函数库和文件4.6.1 程序文件的大小4.6.2 分类组织文件4.6.3 函数库4.7 视频教程'>c语言的预处理程序与注释 4.7.1 C语言的预处理程序4.7.2 #define4.7.3 #error4.7.4 # include4.7.5 条件编译命令4.7.6 #undef4.7.7 #line4.7.8 #pragma4.7.9 预定义的宏名4.7.10 注释4.8 程序应用举例在学习C语言函数以前,我们需要了解什么是模块化程序设计方法。
人们在求解一个复杂问题时,通常采用的是逐步分解、分而治之的方法,也就是把一个大问题分解成若干个比较轻易求解的小问题,然后分别求解。
程序员在设计一个复杂的应用程序时,往往也是把整个程序划分为若干功能较为单一的程序模块,然后分别予以实现,最后再把所有的程序模块像搭积木一样装配起来,这种在程序设计中分而治之的策略,被称为模块化程序设计方法。
在C语言中,函数是程序的基本组成单位,因此可以很方便地用函数作为程序模块来实现C语言程序。
利用函数,不仅可以实现程序的模块化,程序设计得简单和直观,提高了程序的易读性和可维护性,而且还可以把程序中普通用到的一些计算或操作编成通用的函数,以供随时调用,这样可以大大地减轻程序员的代码工作量。
函数是C语言的基本构件,是所有程序活动的舞台。
函数的一般形式是: type-specifierfunction_name(parameter list)parameter declarations{body of the function}类型说明符定义了函数中return语句返回值的类型,该返回值可以是任何有效类型。