24.在JSP中,test . jsp文件如下,试图运行时,将发生( )。 <% String str = null; %> str is <%= str%>
A 转译期有误
B 编译Servlet源码时发生错误 C 执行编译后的Servlet时发生错误 D 运行后,浏览器上显示:str is null
25.从HTTP请求中,获得请求参数,应该调用( )。
A request对象的getAttribute()方法 B
C D
request对象的getParameter()方法 session对象的getAttribute()方法 session对象的getParameter()方法
26.在一个Filter中,处理filter业务的是( )方法。
A dealFilter (ServletRequest request,ServletResponse response,FilterChain chain)
B C
dealFilter (ServletRequest request,ServletResponse response)
doFilter (ServletRequest request,ServletResponse response, FilterChain
chain)
D doFilter (ServletRequest request,ServletResponse response)
27.在J2EE中,给定某Servlet的代码如下,编译运行该文件,以下陈述正确的是( )。 Public class Servlet1 extends HttpServlet{ Public void init() throws ServletException{ }
}
Public void service(HttpServletRequest request,HttpServletResponse response) Throws ServletException,IOException{ } A B
编译该文件时会提示缺少doGet()或者dopost()方法,编译不能够成功通过
编译后,把Servlet1.class放在正确位置,运行该Servlet,在浏览器中会看到PrintWriter out = response.getWriter(); Out.println(“hello!”);
输出文字:hello!
C 编译后,把Servlet1.class放在正确位置,运行该Servlet,在浏览器中看不到任何输出的文字
D 编译后,把Servlet1.class放在正确位置,运行该Servlet,在浏览器中会看到运行期错误信息
28.Servlet 可以在以下( )三个不同的作用域存储数据。
A 请求、会话和上下文
B 响应、会话和上下文
C 请求、响应和会话 D 请求、响应和上下文
29 J2EE中,Servlet API 为使用Cookie,提供了( )类。
30.在JSP页面中,保存数据的范围由小到大依次是 ( )
A pageContext,request,application,session B pageContext,application,session,request C pageContext,request,session,application D pageContext,session,request,application
A B C D
Javax.servlet.http.Cookie
Javax.servlet.http.HttpCookie Javax.servlet. Cookie
Javax.servlet.http. HttpCookie
二、 简答题,共6题,每题5分,总共30分。
1. 说说你所熟悉或听说过的j2ee中的几种常用模式?及对设计模式的一些看法
2、简述synchronized和java.util.concurrent.locks.Lock的异同 ?
3、EJB的几种类型
4、列举出五个j2ee常用的设计模式?说明工厂模式
5、 EJB的角色和三个对象
6、JSP和Servlet有哪些相同点和不同点,它们之间的联系是什么?
三、 编程题,共10分。按要求写出程序实现的代码。
根据图片编写JSP程序,
<%@ page contentType=\<%@ page language=\
答案 选择:
1 C 11 A 21 C 简答:
2 D 12 D 22 A 3 B 13 A 23 C 4 C 14 A 24 D 5 A 15 C 25 B 6 B 16 A 26 C 7 A 17 B 27 B 8 A 18 A 28 A 9 C 19 A 29 A 10 A 20 A 30 C 1、Session Facade Pattern:使用SessionBean访问EntityBean
Message Facade Pattern:实现异步调用
EJB Command Pattern:使用Command JavaBeans取代SessionBean,实现轻量级访问 Data Transfer Object Factory:通过DTO Factory简化EntityBean数据提供特性 Generic Attribute Access:通过AttibuteAccess接口简化EntityBean数据提供特性 Business Interface:通过远程(本地)接口和Bean类实现相同接口规范业务逻辑一致性
EJB架构的设计好坏将直接影响系统的性能、可扩展性、可维护性、组件可重用性及开发效率。项目越复杂,项目队伍越庞大则越能体现良好设计的重要性。 。
2、主要相同点:Lock能完成synchronized所实现的所有功能
主要不同点:Lock有比synchronized更精确的线程语义和更好的性能。synchronized会自动释放锁,而Lock一定要求程序员手工释放,并且必须在finally从句中释放。
3、会话(Session)Bean ,实体(Entity)Bean 消息驱动的(Message Driven)Bean 会话Bean又可分为有状态(Stateful)和无状态(Stateless)两种
实体Bean可分为Bean管理的持续性(BMP)和容器管理的持续性(CMP)两种 4、Factory(工厂模式), Builder(建造模式), Factory Method(工厂方法模式),
Prototype(原始模型模式),Singleton(单例模式), Facade(门面模式), Adapter(适配器模式), Bridge(桥梁模式), Composite(合成模式), Decorator(装饰模式), Flyweight(享元模式), Proxy(代理模式), Command(命令模式), Interpreter(解释器模式), Visitor(访问者模式), Iterator(迭代子模式), Mediator(调停者模式), Memento(备忘录模式), Observer(观察者模式), State(状态模式), Strategy(策略模式), Template Method(模板方法模式), Chain Of Responsibleity(责任链模式) 工厂模式:工厂模式是一种经常被使用到的模式,根据工厂模式实现的类可以根据提供的数据生成一组类中某一个类的实例,通常这一组类有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的操作。首先需要定义一个基类,该类的子类通过不同的方法实现了基类中的方法。然后需要定义一个工厂类,工厂类可以根据条件生成不同的子类实例。当得到子类的实例后,开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实例。
5、一个完整的基于EJB的分布式计算结构由六个角色组成,这六个角色可以由不同的
开发商提供,每个角色所作的工作必须遵循Sun公司提供的EJB规范,以保证彼此之间的兼容性。这六个角色分别是EJB组件开发者(Enterprise Bean Provider) 、应用组合者(Application Assembler)、部署者(Deployer)、EJB 服务器提供者(EJB Server Provider)、EJB 容器提供者(EJB Container Provider)、系统管理员(System Administrator)
三个对象是Remote(Local)接口、Home(LocalHome)接口,Bean类。
6、JSP是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。
JSP编译后是“类servlet”。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。
编程
多选型列表框
<%= request.getParameter(\ 的职业是
<%
//取得job控制项的输出值, 输出值为一字串矩阵
String jobAry[] = request.getParameterValues(\//取得矩阵的长度
int jobArylen = java.lang.reflect.Array.getLength(jobAry);
//利用for循环将jobAry矩阵中的元素取出, 并利用if判断语句进行比对 for(int i = 0; i < jobArylen; i++) { }
%>
<%
//利用if语句比对jobAry字串矩阵中的值 if (jobAry[i].equals(\ out.println(\学生\
else if (jobAry[i].equals(\ out.println(\教师\ else if (jobAry[i].equals(\ out.println(\程序员\ else if (jobAry[i].equals(\ out.println(\医生\else if (jobAry[i].equals(\ out.println(\技术员\ %>
(序号: <%= jobAry[i] %> )
<%