1.企业级应用程序通常应具备快速适应性、分布式、高安全性、可扩展性和集成化 等特性。P(6)
2.两层体系结构由 客户层 和 服务器层 构成,即所谓的 C/S 模式。P(7)
3.三层体系结构通常包括 客户层 、 服务器层 和 应用服务器层 三个层次。P(7)
4.典型Java EE 应用包括:客户层、表示层(Web层)、业务逻辑层和企业信息系统层四个层次。P(8)
5.Java EE技术框架大致包括 组件技术 、 服务技术 和 通信技术 三个部分。P(11)
6.Java EE组件主要包括 客户端组件 、 Web组件 和 EJB组件 三大类。P(10)
7.按打包粒度从小至大的顺序,Java归档包的类型分别是 JAR 、WAR 和 EAR 。(PPT)
8.程序错误可分为 语法错 、 语义错 和 逻辑错 三类。P(20)
9.JSP指令元素主要包括 include 、 page 和 taglib 三个。P(34)
10.include指令的基本语法为 <%@ include file=”URL” %> 。P(34)
11.taglib指令的基本语法为 <%@ taglib uri=”taglibURI” prefix=”pre” %> 。P(35)
12.JSP参数标记的基本语法为
P(39)
13.读取request单值参数的方法是 getParameter() ,读取多值参数的方法是 getParameterValues() 。获取所有参数名称的方法是 getParameterNames() 。P(44)
14.request作用范围变量可以通过 setAttribute() 和 getAttribute() 方法设置和读取变量的数据。P(45)
15.调用 response 对象的 addCookie(Cookie cookie) 方法可将一个Cookie对象传回客户端保存。P(48)
16.调用 request 对象的 getCookies() 方法可以读取保存在客户端的所有Cookie对象。P(48)
17.在web.xml文件中定义Web应用初始化参数的标记是
18.读取Web应用初始化参数的相关方法有 getInitParameter(String name) 和 getInitParameterNames() 。P(61)
19.HttpServlet处理客户端请求的方法是 doGet() 和 doPost() 。P(62)
20.Servlet的生命周期大致分为 初始化阶段 、 处理请求阶段 和 销毁阶段 三个阶段。P(62)
21. 22.MVC模式的三个基本部分是 模型(Model) 、 视图(View) 和 控制器(Controller) 。P(105) 23.JSF应用的主控制器是 FacesServlet ,它需要在 web.xml 文件中进行配置,其URL映射通常配置为 * . faces 。P(119) 24.MyEclipse的JSF工具面板包括 Core标签 和 HTML标签 两类JSF标签,使用这些标签的页面需要使用JSP指令 taglib 导入标签库。P(134) 25.JSF标签 26.JSF标签 loadBundle 用于装载资源文件,其常用属性是 basename 和 var 。P(137) 27.JSF标签 selectItem 用于为选择类标签提供选项,属性 itemLabel 用于设置显示文本, itemValue 设置对应的数据值。P(139) 28.JSF 29.JSF dataTable 标签用于显示数据库表数据,其 value 属性通常绑定辅助Bean的ResultSet类型属性,另外还须设置 var 属性以便在列子标签中访问该记录集的数据。P(146) 30.JSF column 标签通常不须设置属性,而是通过嵌入 facet 子标签定义表头,并利用 outputText 或 inputText 子标签设置记录集的列。P(146) 31.JSF事件可分为 实时事件 、 动作事件 、 值变事件 和生命周期事件4类。P(163) 32.EJB 3的开发通常涉及到 业务接口 、 Bean类 以及 辅助类 3种文件。P(173) 33.EJB3的Bean类分为 会话Bean 、 实体Bean 和 消息驱动Bean 3大类。P(174) 34.JMS消息由 消息头字段 、 一组可选属性 以及 消息体 组成。P(181) 35.JMS提供 点对点方式 和 发布-订阅方式 两种类型的消息服务。P(182) 36.有状态会话Bean的生命周期包括 不存在状态 、 准备就绪状态 和 挂起状态 三种状态。P(186) 37.JPA的配置文件名默认为 persistence.xml ,标签 38.Web服务架构的三类角色是服务的 提供者 、 请求者 和 注册中心 。(源于PPT) 39.Web服务架构的三种基本操作是 发布 、 查找 和 绑定 。(源于PPT) 40.Struts 2框架由 核心控制器FilterDispatcher 、 业务控制器 和 用户业务逻辑组件 3部分组成。P(256) 41.Action的配置文件为 struts.xml ,通过 42.Struts 2的Action类通常可继承系统类 ActionSupport 或实现 Action 接口,它们约定的关键业务方法是 execute() 。P(259) 43.Struts 2标记库中用于显示验证错误信息的标记主要有 44.Hibernate包括 SessionFactory 、 Session 、 Query和Criteria 、Transaction和Configuration 5个核心接口。P(268) 45.Hibernate框架提供的查询语言为 HQL ,相关的查询接口有 Query 和 Criteria 。P(275) 46.Hibernate框架的主配置文件为 hibernate. cfg.xml ,对象关系映射配置文件为一系列 47.Spring容器相关的核心接口是 BeanFactory 和 ApplicationContext ,默认的配置文件是 applicationContext.xml 。P(287) 48.Spring配置文件中的 49.Spring容器配置Bean的作用域包括 singleton 、 prototype 、 request 、session和globalsession 五种。P(288) 50.Spring提供了 设值注入 和 构造注入 两种依赖注入方式访问容器配置的Bean实例。P(290) 51.使用Ext的Web页面需要引入 ext-all.css 、 ext-base.js 和 ext-all.js 3个Ext库文件。P(322) 二、判断题 ( )1.程序中的语法错误可以在编译时立即发现。√ ( )2.程序中的逻辑错误可以在编译时立即发现。× ( )3.JSP程序运行在客户端浏览器中。× p32 ( )4.Servlet程序运行在服务器Web容器中。√ ( )5.Applet运行在客户端浏览器中。√ ( )6.Tomcat是一款免费、开源且全面支持Java EE规范的应用服务器。× p22 ( )7.Glassfish是一款免费、开源、全面支持Java EE规范的应用服务器。√ p23 ( )8.数据库连接池是由应用程序创建和管理的。√ ( )9.include指令用于执行静态文件包含。√P34 ( )10.include动作标记用于执行动态文件包含。√ ( )11.page指令用于设置JSP页面的属性,包括设置错误跳转页面。√ ( )12.page指令用于设置JSP页面的属性,但不包括导入Java类库。× ( )13.taglib指令用于在JSP页面中引入JSP扩展标记库。√ ( )14. ( )15. ( )16. ( )17. ( )18.HTML注释内容会返回到客户端浏览器,但不会显示出来。√ ( )19.JSP注释内容会返回到客户端浏览器,但不会显示出来。×p40 ( )20.JSP页面可直接使用9个JSP隐含对象而不须手动创建。√ ( )21.标准JavaBean必须是一个public类。√ ( )22.JSTL的核心标记库引用指令的prefix属性取值必须是c。√p95 ( )23.JSTL的SQL标记库引用指令的prefix属性取值必须是sql。× ( )24.JSTL的XML标记库引用指令的prefix属性取值必须是xml。× ( )25.JSTL的国际化标记库引用指令的prefix属性取值必须是fmt。√ ( )26.JSTL的函数标记库引用指令的prefix属性取值必须是fn。√ ( )27.编译好的Servlet应该与JSP文件放在同一个文件夹下。× ( )28.编译好的Servlet应该放在Web站点的WEB-INF\\classes下。√ ( )29.页面表单/参数可以通过request对象的相应方法取得。√ ( )30.页面表单/参数可以通过response对象的相应方法取得。× ( )31.设置Cookie可通过response对象的相应方法实现。√ ( )32.设置Cookie可通过request对象的相应方法实现。× ( )33.获取Cookie可通过request对象的相应方法实现。√ ( )34.获取Cookie可通过response对象的相应方法实现。× ( )35.使用response的sendRedirect()方法页面跳转会重建request对象。×p52 ( )36.使用response的sendRedirect()方法页面跳转会导致地址栏改变。√p52 ( )37.使用RequestDispatcher的forward()方法页面跳转会重建request对象。√p52 ( )38.使用RequestDispatcher的forward()方法页面跳转会导致地址栏改变。×p52 ( )39. ( )40. ( )41.JSF实现库(JAR包)的消息文件优先于JSF本地消息文件。 ( )42.JSF页面标签的message属性设置优先于消息文件设置。 ( )43.JMS消息服务属于异步通信。√ p181 ( )44.点对点消息模型接收者和发送者之间存在时间上的依赖关系,必须双方同时在线才能进行。× p182 ( )45.消息驱动Bean不需要客户端程序主动调用。√ p184 ( )46.实体管理器的merge()方法将一个新建的实体对象保存到数据库表中。√p213 ( )47.实体管理器的persist()方法将以持久化实体对象的属性值更新数据库表的对应记录。√p213 ( )48.执行实体管理器的contains()方法后实体将成为被管理的。×p213 ( )49.执行实体管理器的refresh()不会更新数据库记录值。×p213 ( )50.执行实体管理器的refresh()可能会更新被管理实体是的属性值√。p213 ( )51.执行实体管理器的refresh()可能会改变一个实体的被管理状态。×p213 ( )52.执行实体管理器的clear()方法会改变实体的被管理状态。√p213 ( )53.浏览器访问JSF页面时的扩展名必须是faces。√ ( )54.JSF Converter接口的getAsString方法的第3个参数为Object类型。√p151 ( )55.JSF Converter接口的getAsString方法执行Object至String的类型转换。√p151 ( )56.JSF Converter接口的getAsObject方法执行String至Object的类型转换。√p151 ( )57.EJB3的业务接口可以是普通的Java接口。×p173 ( )58.EJB3的会话Bean不再需要home接口。√p173 三、名词解释 1.Annotation:标注,是Java EE 5中引入的一项小特性,也是一项十分有效的新特性。标注本质上是一种元数据,通过在 Java 代码中加入元数据信息(Meta Data),从而指导工具和库对代码的处理。P(2) 2.泛型:Java EE 5通过引入泛型,允许约定集合元素的类型来获得强类型检查,避免等到运行时出现类型转换错误,也可免除显式的强制类型转换(cast)。P(4) 3.自动装箱:自动装箱(Auto-boxing)和自动拆箱(Auto-unboxing)机制解决了简单类型和包装类型之间的自动转换问题。自动装箱特性让Java自动包装一个简单数据类型(例如int)到对应的包装类型(Integer)中。P(4) 4.自动拆箱:自动拆箱是相反的过程,即将一个包装类型(例如 Integer) 自动转换为它所对应的简单数据类型(int)。P(4) 5.静态导入:Java EE 5引入静态导入,即直接导入类的静态成员,从而允许直接通过静态成员的名字来访问它们,无需再给出他们的类名。P(6) 6.C/S模式:两层体系结构由客户层(Client)和服务器层(Server)构成,即所谓的 C/S 模式。P(7) 7.B/S模式:三层体系结构在二层体系结构应用程序的客户层与服务器层之间添加了一个第三层——应用服务器层,形成客户层、应用服务层和数据服务层三个层次。与两层体系结构的应用相比,三层体系结构应用程序的客户层功能大大减弱,只用来实现人机交互,原来由客户端实现的应用逻辑、数据访问职能都迁移到应用服务器层上。 这种“瘦客户层”通常可采用浏览器(Browser)实现,因此这种体系结构又被称作 B/S 模式 或“瘦客户机”模式。P(7) 8.JNDI:所谓 JNDI,即 Java 名字目录接口(Java Naming and Directory Interface),是 Java EE 提供的命名服务。Web 容器会为连接池数据源等各种对象分配一个唯一的 JNDI 名,应用程序可通过 javax.naming.Context 接口提供的方法查找获得 JNDI 命名对象。P(92) 9.JDBC:(Java Database Connectivity)是 Java 环境中访问 SQL 数据库的一组 API。它包括一 些用 Java 语言编写的类和接口,能更方便地向任何关系型数据库发送 SQL 命令。P(81) 10.JTA:Java 事务 API(JTA)是由Web容器提供的,允许应用程序执行分布式事务处理的服务,能确保事务的ACID(原子性、一致性、隔离性和持久性)特性。(PPT) 11.JDK:(Java Development Kit,Java 开发工具包)是用于构建发布在 Java 平台上的组 件和应用程序的开发环境。它是一切 Java 应用程序的基础,所有的 Java应用程序都是构 建在JDK之上。P(16) 12.动态网页:动态网页的关键内容是在服务器端动态生成。相对于静态网页,动态网页最本质的区别在于它会被服务器当作一个程序来执行,页面中嵌入的脚本代码会被服务器识别并执行, 执行结果与页面静态内容合并后送往客户端浏览器显示。P(31) 13.Servlet:是 Java 服务器端的小程序,是 Java 环境下实现动态网页的基本技术。Servlet 程序能够调用 JavaBean、JDBC、其它 Servlet、RMI、EJB、SOAP 和 JNI 等程序完成指定 的功能,计算结果以 HTML/XML 等形式返回给客户端。P(60) 14.JSP:即 Java Server Pages 的简写,是由 Sun 公司和多家公司共同建立的一种基于Java语言的动态网页技术标准。JSP 采用先编译后运行的方式,有效地提高了执行效率,已成为Internet 动态页面的主流方式。P(31) 15.HTML:(HyperText Markup Language,超文本标记语言)不是程序设计语言,而是一组标 记,便于网页设计人员把文本、图像、动画等制作成有一定效果的网页,资源间通过超链 接联结成为一个有机的整体。P(33) 16.JSTL:全称是 JSP 标准标记库(JSP Standard Tag Library,JSTL),它是 SUN 公司为简化 JSP 页面设计而提出的一种技术规范。JSTL 使用一套新的标准标签库取代原来的 scriptlet(代 码嵌入<% %>中)进行 JSP 页面开发,使页面代码的可读性有了显著提高。P(95) 17.Cookie:Cookie 或称 Cookies,在 Web 技术中指 Web 服务器暂存在客户端浏览器内存或硬盘文 件中的少量数据。Web 服务器通过 HTTP 报头来获得客户端中的 cookie 信息P(47) 18.JSF:即 Java Server Faces,是 JPC(Java Community Process)推出的一种用于组件化 构成 Web 应用的新技术,后被 SUN 正式纳入 Java EE 规范中。JSF 技术框架能让开发工具 拥有可视化拖曳组件构建服务端 Web 页面,并为组件提供事件编程机制。P(114) 19.EJB:EJB 是 Enterprise JavaBeans 的缩写,又称为企业 Bean,是一种 Java 服务器端组件模型。 EJB 提供了服务器上的自治、企业级和分布式功能,并能帮助开发者在不同粒度级别上定 义和封装系统功能。P(172) 20.JMS:Java 消息服务(JMS,Java Message Service)是一种消息标准,它允许 Java EE 应用程序 组件生成、发送、接收和读取消息,能够进行分布式、松耦合、可靠和异步的信息交流。P(181) 21.JPA:(Java Persistence API,Java 持久化 API),是 Java EE 5 规范中用于对象/关系映射(O/R)的一组 API,它是 SUN 官方的对象/关系映射模型。JPA 规范详细阐述了实体 Bean 的定义、实体 Bean 支持的注释、全新的查询语言、实体管理接口、容器实现规范等内容。P(1) 22.Web Service:为了解决分布式计算中异构应用之间互操作的问题,W3C(万维网联盟)提出了 Web Service(Web 服务)架构。简单来说,Web 服务就是一个向外界暴露接口的,能够通过网络进 行远程调用的应用程序。P(241) 23.XML:可扩展标记语言主(eXtensible Markup Language,XML)是 Web 服务技术架构的基石,它是 Web 服务中数据表示的基本格式。但XML 并没有规范数据的具体类型。P(242) 24.SOAP:简单对象访问协议(Simple Object Aecess Protocol,SOAP)提供了标准的远程过程调用协议(RPC)用于调用 Web 服务,是一种中立的信息传递协议,通常采用HTTP协议发送请求的SOAP消息和回应SOAP消息。P(242) 25.WSDL:Web 服务描述语言(Web Services Description Language,WSDL)是一种基于 XML 的,用 于描述 Web 服务及其操作、参数和返回值的语言。P(242) 26.UDDI:统一描述、发现和集成协议(Universal Description Discovery Integration,UDDI)是 Web 服务架构下核心的服务描述、发现和集成机制,其目的是在网上自动查找 Web 服务。P(243) 27.ORM:对象/关系映射(ORM),简单地说就是将面向对象语言的对象映射到关系数据库的表,成为面向对象编程语言与关系数据库之间协作的桥梁。(P267) 28.IoC:依赖注入,又称为控制反转(IoC),指的是一种通过描述创建对象的编程方式。即在程序代码中不直接与对象和服务连接,而是在配置文件中描述组件需要依赖的对象或服务。(P287) 29.AOP:(Aspect Orient Programming),也就是面向切面编程,也称作面向方面编程。AOP作为面向对象编程(OOP)的一种补充,已经成为一种较成熟的编程思想。面向对象编程是从静态角度考虑程序结构,面向切面编程则从动态角度考虑程序运行过程。(P293) 30.RIA:RIA(Rich Internet Applications)即富网络应用,或基于 Internet 的富客户端应用。(P311) 31.AJAX:AJAX(Asynchronous JavaScript + XML,异步 JavaScript 和 XML),是一种用于创建快速响应动态网页的技术。通过在后台与服务器进行少量数据交换,AJAX 可以让网页实现异步更新,即在不重新加载整个网页的情况下对网页的局部进行更新。(P311) 四、问答题 1.列举Java EE的主要新特性。 标注, EJB3.0 ,JPA , 提供了更简单、更广泛的 Web Service 支持,依赖注入。 泛型(Generics),自动装箱和自动拆箱,枚举类型,增强的 for 循环,可变参数, 静态导入(P2) 2.简述企业级应用程序的基本特点。 分布性,高速反应性,高安全性,可扩展性,集成性 3.简述企业级应用体系结构的演变。 企业级应用程序的体系结构经历了从两层结构到三层结构再到多层结构的演变过程。 4.简述典型Java EE 应用程序的构成。 典型的 Java EE 结构的应用程序包括四层:客户层、表示层(Web 层)、、业务逻辑层和企业信息系 统层 5.Java EE规范标准包括哪两方面的内容? 1Java EE 规范了分布式组件开发的标准。 2Java EE 规范了分布式组件运行环境——容器提供的服务的标准。 6.简述Java EE三类组件的构成及运行环境。 客户端组件:可以是一个 Web 浏览器、一个 Applet,也可以是一个普通的客户端Java 应用程序。 Java EE Web 组件主要包括: Servlet 和 JSP,Web 容器还可以调用 JavaBean 进行业务处理。 EJB 组件:Session Bean(会话 Bean),Entity Bean(实体 Bean)和 Message-Driven Bean(消息驱动 Bean)。 7.简述Java EE应用的打包与部署方式。 Java EE 应用打包与部署是指将一个 Java EE 应用中的相关组件打包到一个单元(通常称为包)中,并将它部署到符合 Java EE 规范的应用服务器上。 8.Java EE模块主要有哪4种基本类型?简述其构成。 EJB 模块:包含企业 Bean 的类文件和一个 EJB 配置描述文件。EJB 模块包装成扩展名为.jar 的 JAR 文件。 Web 模块:包括 JSP 文件、Servlet 类文件、HTML 文件、图形文件和一个 Web 配置描 述文件。Web 模块被打包成扩展名为.war 的 WAR(Web Archive File,Web 应用档案) 文件。 资源适配器模块:包含所有的 Java 接口、类、本地库、其他文档和资源适配器配置描 述 文 件 。它 们 是 实 现 了 某 个 特定 EIS 的 连接器 体 系 结 构 ( Java EE Connector Architecture)。资源适配器模块被包装成扩展名为.jar 的 JAR 文件。 应用程序客户端模块:包含类文件和一个应用程序客户端配置描述符。应用程序客户 端模块被包装成扩展名为.jar 的 JAR 文件。 9.简述JAR文件与ZIP文件的异同。 与ZIP文件不同的是,JAR文件不仅用于压缩和发布,而且还用于部署和封装库、组件和插件程序,可提供给编译器和JVM直接使用。 10.通常需要为JDK设置哪些环境变量?如何设置? 通常需要设置JAVA_HOME、CLASSPATH和PATH三个系统环境变量 ◆JAVA_HOME = D:\\Java\\jdk ◆PATH = %JAVA_HOME%\\bin 或 D:\\Java\\jdk\\bin ◆CLASSPATH = .;%JAVA_HOME%\\jre\\lib\\rt.jar; 或 .;D:\\Java\\jdk\\jre\\lib\\rt.jar; 11.简述Servlet与JSP的联系和区别。 a)Servlet向客户端返回的内容需要用out.print()输出,不便于网页版面的设计和修改。为了解决这个问题,Sun制订了JSP技术规范,JSP网页版面的设计与维护可通过DreamWeaver等工具软件来实现,比Servlet要直观和容易。 b)JSP页面最终会被JSP服务器编译成一个Servlet程序来运行。 c) 12.简述response的sendRedirect()与RequestDispatcher的forward()两种方法执行页面跳转的异同点。 第一点区别,过程不同:第一种方式相当于浏览器接收到了响应之后又向服务器发送了一次请求,所以相当于两次请求。第二种方式相当于方法调用,在执行当前文件的过程中转向执行目标文件,两个文件(当前文件和目标文件)属于同一次请求,最本质的特点就是两次请求共享了reques对象和response对象。 第二点区别,地址栏不同:第一种方式下用户在浏览器地址栏中看到的是目标文件的地址,第二种方式下用户在浏览器地址栏中看到的是当前文件的地址。 13.导致session生命期结束的主要因素有哪些? 导致session生命期结束的主要因素有: 1客户端关闭浏览器窗口,主动结束一次会话; 2Web服务器关闭,session对象及其属性将被注销; 3用户长时间没有访问请求,导致session超时,session对象将被删除; 4程序调用session.invalidate()方法主动结束会话,session对象将被删除。 14.简述Servlet 编程的基本步骤。 a)Servlet 编程过程大致分为三步:代码编辑与编译、部署和重载Web应用。 b)代码编辑与编译 1Servlet程序一般直接继承HttpServlet类,根据情况选择适当的doXXX()方法进行重置,实现期望的功能。 c)部署Servlet 1部署Servlet程序是指在WEB-INF\\web.xml中书写Servlet部署信息。web.xml文档对大小写敏感。 d)重载Web应用 1Tomcat启动时会自动发布已经注册的Web应用或webapps文件夹下的各个Web应用。 2此后如果重新编译或生成了新的Servlet程序类*.class,需要重载Web应用来实现重新加载、更新*.class到Servlet容器中。 3关闭Tomcat后重启,也可实现重载Web应用。 4也可以管理员角色登录Tomcat,然后进入管理页面重新加载Web应用。 15.列举JDBC编程常用的接口和类。 a)java.sql.Driver接口 b)java.sql.DriverManager类 c)java.sql.Connection接口 d)java.sql.Statement接口 e)java.sql.ResultSet接口 16.列举java.sql.Connection接口的常用方法。 ◆createStatement():创建一个 Statement 对象,用于发送SQL 语句给数据库服务器。 ◆prepareStatement(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability):为一条带参数的SQL语句生成PreparedStatement对象(预编译对象)。 ◆commit():提交事务,这个方法只有在手动事务提交模式下才有效。 ◆close():关闭数据库连接,释放资源。 17.列举java.sql.ResultSet接口的5种以上常用方法: 1next()、last()等:移动记录指针。 2getString(String column Name)/getString(int columnIndex)、getByte()、getDate()、getTime()等:读取当前记录的指定字段值。 3updateString(String columnName, String x)等:更新当前记录指定字段值。 4updateRow():用当前记录的新值更新数据库数据。 5deleteRow():删除当前记录。 18.JSTL标记库主要包括哪几类?各举两例。 ⏹JSTL核心标记库 JSTL核心标记库提供了控制流、循环语句、异常处理、信息输出、变量定义等动作。 ⏹SQL标记库 提供与数据库操作相关的指令。 ⏹XML标记库 XML标记库用于访问XML数据的流程控制 。主要标签有 19.简述JSF应用的基本组成部分。 JSF应用也需要运行在Servlet容器中,通常包含以下几个组成部分: a)包含UI标签的页面(JSP页面); b)辅助Bean类,用于传递数据和执行处理; c)验证器、转换器、事件; d)其它JavaBean组件; e)应用配置文件(web.xml、faces-config.xml)。 20.简述JSF应用开发的基本步骤和主要内容。 不管是否使用IDE开发环境,使用JSF框架开发Web应用通常遵循以下三个步骤: (1) 视图设计 利用开发工具,可视化地快速构建Web用户界面,并将页面组件与后台JavaBean绑定。 (2) 模型设计 JSF框架实现了应用程序逻辑和表示的完全分离。在模型设计部分是编写称为辅助Bean(又叫受管Bean)的JavaBean,完成应用的相关业务逻辑代码。 (3) 控制器设计 JSF的控制器由web.xml和faces-config.xml两个配置文件(均在WEB-INF目录下)完成。web.xml文件用于设置应用主控制器;Faces-config.xml文件设置页面导航,控制页面间的跳转流程。 21.列举4种以上JSF UI组件的常用公共属性。 a)id——标签所代表组件的唯一标识,方便其它组件引用。 b)style——为标签指定CSS样式。 c)styleclass——为标签指定CSS样式表类。 d)value——指定标签要显示的文本,常通过EL表达式绑定某个辅助Bean属性; 22.列举JSF标签 1常用属性是value,用于设置输入域的值变量,通常使用延迟计算EL表达式,绑定到某个Bean属性。例如: 2另一个常用是required,设为true时,要求用户必须输入才可提交,否则将在message或messages标签处显示错误信息。 3requiredMessage属性可用于指定错误信息。 4其它属性还有validator和converter,用于指定验证器和转换器,相应的validatorMessage和converterMessage可指定验证及转换的错误信息,在没中文化错误信息文件时这是一个不错的方法。 23.列举JSF标签 1value属性,设置按钮文字 2id属性,唯一标识 3image属性,设置显示图形按钮,其值为图形文件URL。 4由action属性,指定点击按钮执行的事件动作,通常为EL延时执行表达式,调用执行一个Bean方法。action属性也可直接设置为某个导航目标字符串。 5type属性,设置命令按钮的类型,有效取值为button、submit和reset,默认为submit,即提交表单。 24.简述JSF自定义转换器的编程步骤。 自定义转换器编程的基本步骤是: 1创建实现javax.faces.convert.Converter接口的类,并编程实现接口的getAsObject()和getAsString()方法。 2在JSF配置文件(faces-config.xml)中注册转换器。 3通过页面JSF标签的converter属性调用转换器。 25.简述JSF自定义验证器的实现方法及编程步骤。 自定义验证器的方法有两种: 1通过辅助Bean的验证方法实现。该方法首先在辅助Bean创建一个约定参数的验证器方法,然后在配置文件(faces-config.xml)中注册辅助Bean,最后就可在页面中设置标签的validator属性引用辅助Bean的验证器方法。 2通过实现Validator接口的验证器类实现。该方法首先创建实现javax.faces.validator.Validator接口的验证器类,然后在配置文件(faces-config.xml)中注册验证器,最好就可在页面中通过validator子标签设置验证器。 26.JSF设置错误消息的方法有哪些?消息文件如何命名? 实际上,有如下多种设置错误信息的方法: a)使用JSF实现库(JAR包)的Messages文件 b)使用本地Messages文件(放于应用的classes文件夹中) c)设置标签的xxxMessage属性 d)抛出异常时指定FacesMessage对象 27.简述JSF应用的生命周期。 1)构建视图(Restore View) 根据请求访问的视图ID(页面地址),重建JSF 组件DOM树。如果JSF页面是 第一次访问,也即是试图ID在内存中没没有存根,那么JSF会在内存中构建JSF组件的DOM树。但是组件并没有值,只是一个模子。 2)应用请求值(Apply Request Values) JSF组件获取请求中的属于自己的值,包括Local值,和submit值.同时处理转换,转换成功,更新local值(submit转换结果),当然过程没有那么简单,JSF处理器有自己的一套解码过程。 3)处理验证 如果组件注册验证器,依次执行验证. 4)更新模型值:如果所有的组件本地值转换验证等均成功,此时JSF就会根据EL处理关联的bean,并更新bean绑定值.在此处JSF会根据EL绑定加载配置的后台bean。 5)调用应用:调用注册的侦听器,然后执行事件驱动,获取下一个视图。侦听器此时可以有效的侦听到UI组件的各项数据,事件驱动部分即action可以有效的获取被更新的后台bean数据。执行自己的业务逻辑。 6)呈现响应(Render Response) 到此请求处理结束,根据导航规则,渲染响应的页面.依次执行… 28.简述JSF生命周期事件的编程方法。 JSF从请求到响应的完整过程通常会经历6个阶段,在每个阶段的前后将会引发Phase事件(javax.faces. event.PhaseEvent)。如果希望在每个阶段的前后捕捉这个事件以便进行一些处理,则可以实现javax.faces.event.Phase Listener接口,并向 javax.faces.lifecycle.Lifecycle注册这个。 (1)创建类AllPhaseListener:AllPhaseListener类必须实现PhaseListener接口,并在getPhaseId方法返回PhaseId.ANY_ PHASE,即监听所有PhaseId事件。 (2)注册类:打开faces-config.xml,点击Outline视图的lifecycle图标,然后选择Add Phase Listener…菜单,在弹出的对话框的phase-listener栏中输入前面创建的Phase类jxust.jsf.event. AllPhaseListener,最后点击 (3)测试Phase的执行情况:在浏览器中打开前面的任意JSP页面,然后提交表单,同时观察控制台输出。尝试数据转换、验证失败等各种情况,观察控制台输出以加深对JSF生命周期的理解。 29.JSF动作事件主要有哪几种实现方法?它们有什么不同? a)常见的动作事件由命令按钮/链接标签的action属性绑定到一个Bean方法实现,这是JSF框架提供的一种简化的事件处理模型。在这种简化模型中,由JSF配置文件设置页面导航,根据动作方法(Action Method)执行的结果来决定转向的页面。 b)此外,命令按钮/链接标签还可通过actionListener属性绑定辅助Bean的一个动作方法,不同的是这个方法的返回值不能用于页面导航。 30.简述JSF值变事件的两种编程方法。 a)值变事件的处理方法通常可带一个值变事件类(javax.faces. event.ValueChangeEvent)的对象作参数,ValueChange Event类有三个非常有用的方法,getSource方法用于访问事件源(即触发事件的页面组件),getOldValue方法用于取得组件修改之前的值,getNewValue方法则用于取得组件修改后的值。 b)另一种处理值变事件的方法是使用valueChangeListener子标签,可为一个输入类组件添加多个valueChangeListener子标签。valueChangeListener标签包含一个type属性可用来绑定一个实现了值变事件监听接口(javax.faces.event.valueChange Listener)的类。接下来要做的就是编写接口约定的值变事件处理方法processValueChange(ValueChangeEvent ve) 。 c) 31.列举JMS API的主要接口。 a)ConnectionFactory:连接工厂接口。用来为客户端程序创建一个连接的管理对象。通常由服务器管理员创建,并绑定到JNDI树上。客户端通过JNDI找到它,然后建立JMS连接。 b)Connection:连接接口。代表一个客户端到JMS提供者之间的一个活动连接。每个客户端都使用一个单独的JMS连接。一个JMS连接可以连接多个JMS目的。 c)Destination:目的接口,封装了消息源和消息存储位置。 d)Session:会话接口。代表客户端与JMS服务器之间的会话状态,它定义了消息的顺序。 e)MessageProducer:消息生产者接口。由Session创建,用于将消息发送到目的。 f)MessageConsumer:消息消费者接口。由Session创建,用于从目的接收消息。 32.简述JMS消息发送编程的基本步骤。 1配置消息服务器; 2通过JNDI获得对连接工厂的引用; 3通过连接工厂创建一个连接; 4通过连接创建会话; 5通过会话获得一个目的; 6通过会话和目的创建消息的生产者; 7使用连接创建一个待发送的消息实例; 8使用连接的一个队列发送器或主题公布器发送消息。 33.简述JPA主要优点。 a)JPA使创建复杂的DAO(Data Access Object)变得简单; b)JPA提供高效安全的事务管理功能; c)提供与几乎所有关系数据库的访问接口; d)可使用类名和属性方法作为查询语言,避免直接使用SQL语句; e)可使用POJO(Plain Old Java Objects)简单对象,提高程序的可扩展性和可移殖性; f)JPA还可用于桌面应用程序的持久化开发。 34.列举5种以上JPA映射配置标注符并说明其作用。 @Entity @Entity标注用于实体类声明语句之前,指出该Java类为实体类,将映射到指定的数据库表。 @Table 当实体类与其映射的数据库表名不同名时需要使用@Table标注说明,该标注与@Entity标注并列使用,置于实体类声明语句之前,可写于单独语句行,也可与声明语句同行。 @Id @Id标注用于声明一个实体类的属性映射为数据库的主键列。该属性通常置于属性声明语句之前,可与声明语句同行,也可写在单独行上。 @Column 当实体的属性与其映射的数据库表的列不同名时需要使用@Column标注说明,该属性通常置于实体的属性声明语句之前,还可与@Id标注一起使用。 @OneToMany @OneToMany标注用于声明一对多关联关系。 @ManyToOne @ManyToOne标注用于声明多对一关联关系。 35.简述JPA常用接口/类并说明其相互关系。 1)Persistence类是用于获得实体管理器工厂的引导类。该类包含一个名为createEntityManagerFactory的静态方法可用于获得实体管理器工厂。 2)EntityManagerFactory接口主要用来创建实体管理器。 3)EntityManager接口用于建立持久上下文环境和管理所有实体及其生命周期。 4)Query接口封装了执行数据库查询的相关方法。调用实体管理器的createQuery、create NamedQuery及createNative Query方法可以获得查询对象,进而可调用Query接口的相关方法来执行查询操作。 36.列举5个以上EntityManager接口的常用方法。 a)persist (Object entity) 1持久化一个新的对象实例,并使其处于被管理状态,即将对象实例保存到与其映射的数据库表中,并建立与此实体记录的关联。 b)merge (T entity) 1更新持久化对象实例,即以新的属性值更新数据库表的原记录。 返回被更新的实体。 c)remove (Object entity) 1删除实例。如果实例是被管理的,即与数据库实体记录关联,则同时会删除关联的数据库记录。 d)find (Class 1根据主键查询实体。找到了则返回找到的实体实例,未找到则返回null。第一个参数为被查询的实体类,第二个参数为待查找实体的主键值。 e)getReference (Class 1根据主键获取实例,常用于延迟加载的情况。 37.列举5个以上Query接口的主要方法。 a)int executeUpdate() 1用于执行update或delete语句。如果Query对象的查询语句为select将抛出IllegalStateException异常,如果事务不存在将抛出TransactionRequiredException异常。 b)List getResultList() 1用于执行select语句并返回结果集实体列表。如果Query对象的查询语句为update或delete将抛出IllegalStateException异常。 c)Object getSingleResult() 1用于执行只返回单个结果实体的select语句。如果查询语句为update或delete则抛出IllegalStateException异常;如果没有得到返回结果将抛出EntityNotFoundException异常;如果返回多于一个结果将抛出NonUniqueResultException异常; d)Query setFirstResult(int startPosition) 1用于设置从哪个实体记录开始返回查询结果。如果参数为负数将抛出IllegalArgumentException异常。 e)Query setMaxResults(int maxResult) 1用于设置返回结果实体的最大数。如果参数为负数将抛出IllegalArgumentException异常。与setFirstResult结合使用可实现分页查询。 38.简述实体生命周期的4种状态 a)新建态(new):实体刚创建时,尚未与持久化环境建立联系(O/R映射),也没有唯一的标识(Identity)。 b)被管理态(managed):对新建实体执行persist()方法,它将与持久化环境建立关联,并获得一个唯一标识(Identity),映射到数据库中的一个记录。contains()方法可用来检查实体是否是被管理的。 c)分离态(detached):当实体管理器被关闭或执行了clear()方法后,原先被管理的实体将成为游离态的实体,尽管它依然拥有持久标识。 d)删除态(removed):对管理态的实体执行remove()方法后它将处于删除态,在事务提交时或执行flush()时,与其关联的数据库记录将被删除。 39.列举与实体生命周期有关的实体管理器方法。 与实体状态转化有关的实体管理器方法: a)contains():检查实体是否是被管理的。 b)clear():清除持久环境,使原先被管理的实体全部转化为分离态实体,不再与持久化环境关联。 c)merge():使分离的实体重新成为被管理的,即重新与数据库记录建立关联,并在事务提交或执行flush()时更新数据库记录。 d)persist():使新建态的实体或已删除的实体重新成为被管理的,并在事务提交或执行flush()时向数据库插入新记录。 e)remove():使一个被管理态的实体成为删除状态,并在事务提交或执行flush()时删除数据库中的关联记录。 f)refresh():不改变实体的管理态,但会使实体对象与数据库关联记录保持一致。在多用户环境中,当别的用户修改了数据库时,有必要使用该方法进行刷新。 40.简述在MyEclipse环境中创建JPA-JSF应用的基本步骤。 a)创建Web项目并为其添加JPA和JSF支持; b)在数据库透视图中创建数据库表; c)通过反向工程自动生成实体类和DAO类; d)编辑实体类; e)修改、完善DAO方法; f)编写JSF辅助Bean; g)编写JSF页面; h)配置页面导航。 41.何谓Web Service?它具备哪些基本特征? a)简单来说,Web服务就是一个向外界暴露接口的,能够通过网络进行远程调用的应用程序。 b)从使用者的角度看,Web服务是一种部署在Web上的对象或组件,它具备以下特征: 1完好的封装性。对于Web服务使用者而言,它能且仅能看到Web服务提供的功能列表。 2松散耦合。对于Web服务使用者来说,只要Web服务的调用界面不变,Web服务实现的任何变更对他们来说都是透明的,用户无须知道。 3使用标准协议规范。Web服务的所有操作完全使用开放的标准协议进行描述、传输和交换。 4高度集成性。由于Web服务采取简单的、易理解的标准协议,完全屏蔽了不同软件平台的差异,无论是CORBA、MTS还是EJB都可以通过这种标准的协议进行互操作,实现了最高的可集成性。 42.简述MyEclipse环境中基于JAX-WS的Web服务开发过程。 (1) 创建Web服务项目 (2) 创建Web服务类 (3) 发布和测试Web服务 (4) 创建Web服务客户端 43.简述MyEclipse环境中Struts2应用开发的基本过程。 (1)首先使用MyEclipse建立一个Web项目Struts2Demo。 (2) 配置环境 在项目Struts2Demo上右击,选择"MyEclipse|Add Struts Capabilities"菜单,在弹出的对话框中选择Struts版本为Struts 2.1,URL模板为/* (也可以选*.do或*.action)。点 (3) 创建Action类 Action是Struts应用的核心,Action类包含了用户请求的处理逻辑,它是MVC应用的控制器。 (4) 配置Action 在struts.xml文件的 (5) 设计JSP页面 44.简述Struts 2 数据验证的两种方法。 a)通过实现com.opensymphony.xwork2.ActionSupport接口的validate()方法; b)通过Xxx-validate.xml文件配置验证器,Xxx为Action类名。 45.简述Struts 2国际化消息文件的设置和使用方法。 (1)使用国际化信息的第一步就是要建立国际化消息文件,通常由不同语言环境的多个属性文件(*.properties)构成。通过struts.xml的 缺省消息文件及其对应的其它语言环境消息文件都应放在应用的src目录下,最终将被部署至WEB-INF\\classes目录中。 (2)设置了国际化消息文件后,就可在Action类、验证器及页面访问消息文件的键值了。 1)页面中访问国际化消息的相应标签是 2)字段标签 3)在Action类中,可以调用ActionSupport接口的getText(key)方法访问国际化消息的键值。 46.简述Spring的功能特性。(PPT) a)轻量级:完整的Spring框架可以使用一个大小只有1M多的JAR包发布,而且它所需的处理开销很小,而且是非侵入式的(Spring应用中的对象不依赖于Spring的特定类)。 b)控制反转与松耦合:Spring通过一种所谓控制反转(IoC)技术实现松耦合。与JNDI相反,IoC不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。 c)面向切面编程(AOP,又称为面向方面):Spring提供对面向切面编程的良好支持,允许通过分离应用的业务逻辑与系统级服务(如日志、审计、事务管理)进行内聚性的开发。 d)轻量级容器:在某种意义上Spring也是一种容器,它提供对应用对象的配置和生命周期管理,可以配置每个bean如何被创建以及它们之间的关联。 Spring容器不同于传统的重量级EJB容器那样庞大而笨重。 e)框架集成:作为一个框架,Spring可以将简单的组件配置、组合成为复杂的应用。应用对象可以被声明式地组合。 47.何谓设值注入?何谓构造注入?它们如何实现?(P290、291) (1)设值注入方式由Spring容器根据属性setter方法向调用者注入被依赖的对象实例。这是广泛采用的依赖注入方式。 (2)构造注入方式使用构造器来注入被依赖的对象。 (3)设值注入方式下,调用类中需要设置一个被调用Bean 类的属性,并为其创建setter方法 (并不需要直接创建被调用类的对象实例)。Spring容器则通过 构造注入方式需要在调用类中创建一个构 造方法,并以被调用 Bean 类为参数完成初始化。Spring 容器则通 48.何谓AJAX?它有什么优势?(P311) 全称为Asynchronous JavaScript +XML,即异步JavaScript和XML,是一种用于创建和快速响应动态网页的技术。 归纳起来,AJAX应用程序有以下几方面优势: ●通过异步模式,提升用户体验; ●优化了浏览器和服务器之间的传输,减少不必要的数据往返,减少了带宽占用; ●AJAX 引擎在客户端运行,承担了一部分本来由服务器承担的工作,从而减少了大 ●用户量的服务器负载。