request是是代表与 Web 客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个 Web 组件(由于 forward 指令和 include 动作的关系)
9 G4 x5 y2 K) L; }6 E) D session是是代表与用于某个 Web 客户机的一个用户体验相关的对象和属性。一个 Web 会话可以也经常会跨越多个客户机请求) k# W+ H" D7 B8 ?) V; u$ S6 L
application是是代表与整个 Web 应用程序相关的对象和属性。这实质上是跨越整个 Web 应用程序,包括多个页面、请求和会话的一个全局作用域66、Request对象的主要方法:
( h( m2 Q1 T4 Y2 u& a4 a$ i* qsetAttribute(String name,Object):设置名字为name的request的参数值% d& o v1 B) N8 _! v0 l( e
getAttribute(String name):返回由name指定的属性值
" g$ K9 E* F3 N1 Z& ~# B, VgetAttributeNames():返回request对象所有属性的名字集合,结果是一个枚举的实例) N- R1 J/ G, t+ {
getCookies():返回客户端的所有Cookie对象,结果是一个Cookie数组. g, n( p/ y" v4 o+ @
getCharacterEncoding():返回请求中的字符编码方式
5 |, C' R- k# H5 n% N' K1 v' vgetContentLength():返回请求的Body的长度) D- Q% r8 V# h$ f7 a9 n
getHeader(String name):获得HTTP协议定义的文件头信息; v; g8 G: K9 e7 g; q. {: @
getHeaders(String name):返回指定名字的request Header的所有值,结果是一个枚举的实例 R" L1 P! ?, S( s! Q* t
getHeaderNames():返回所以request Header的名字,结果是一个枚举的实例( ] v. q6 ~0 e5 M
getInputStream():返回请求的输入流,用于获得请求中的数据
; Y1 v! F# k- ?) G# Q, L2 UgetMethod():获得客户端向服务器端传送数据的方法# X& F& ]/ i X# {. V
getParameter(String name):获得客户端传送给服务器端的有name指定的参数值) f7 Y4 E% z" }+ r, a
getParameterNames():获得客户端传送给服务器端的所有参数的名字,结果是一个枚举的实例
b' q+ W4 p" g R. \getParameterValues(String name):获得有name指定的参数的所有值
% `+ }- P5 Y! [& C4 ugetProtocol():获取客户端向服务器端传送数据所依据的协议名称
! [' J, _; ^$ _) pgetQueryString():获得查询字符串
, Y6 b% i8 q" r QgetRequestURI():获取发出请求字符串的客户端地址: j" I) O7 I5 i. c1 {/ ?9 d
getRemoteAddr():获取客户端的IP地址$ Y$ n4 u8 F4 ]8 S5 C
getRemoteHost():获取客户端的名字
( s- c8 m" {- }' CgetSession([Boolean create]):返回和请求相关Session
4 H$ b& h2 L3 `+ ugetServerName():获取服务器的名字
5 W4 n% M8 k: K; @3 ~0 s% [. {5 y3 v" FgetServletPath():获取客户端所请求的脚本文件的路径# f! Q6 ~0 {; r
getServerPort():获取服务器的端口号
& s. ^4 H5 ^- }' F; P$ O YremoveAttribute(String name):删除请求中的一个属性
W- o I9 J& s) T1 U3 r5 R# k9 ?0 `$ D7 ]& l% s: q
67、J2EE是技术还是平台还是框架?6 v8 p& g) K4 v2 B; ^
J2EE本身是一个标准,一个为企业分布式应用的开发提供的标准平台。
; ? G' {* l0 F& eJ2EE也是一个框架,包括JDBC、JNDI、RMI、JMS、EJB、JTA等技术。
$ j+ M' n7 f9 U5 }$ z( F' e& F5 ?, U
68、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串?
4 A" r1 K6 O! E; `: ~3 x4 M9 @6 E
& s: c: C' F: LPublic String translate (String str) {
- g/ b/ h: M5 j' Y5 CString tempStr = "";
# w6 Y( m4 A0 O X) Jtry {
) R- m: L- r/ S2 E% ~tempStr = new String(str.getBytes("ISO-8859-1"), "GBK");5 |0 ^. f7 W1 Z3 ]6 i6 ^8 ^
tempStr = tempStr.trim();* W. U$ l4 E" ], o/ e; N$ y, Y
}
4 ^. u/ J5 X6 F- n* q+ h' Y. U2 Dcatch (Exception e) {
0 D; T7 M9 u9 G* ?- J. Y- t! h% |System.err.println(e.getMessage());
, |0 f' R x. E% p0 G}
0 Q3 D; C* L) q$ Preturn tempStr;
* E5 V1 ?( R' ]9 R}
0 r9 r* A( m5 g" L- [5 z6 T. a% Z4 }
5 E+ C9 e- D u3 B( \
69、简述逻辑操作(&,|,^)与条件操作(&&,||)的区别。
) V# L6 e; E1 d" S 区别主要答两点:% w) c# F: d d0 K$ Q/ f5 J/ U
a.条件操作只能操作布尔型的,而逻辑操作不仅可以操作布尔型,而且可以操作数值型
9 ?0 k, r/ x7 |7 @b.逻辑操作不会产生短路
2 ~/ W) P( G+ z( Q3 S: K4 n/ J2 h' f! `: q# I C
70、XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?
9 c; F; e- |7 E/ S% x Z- Da: 两种形式 dtd schema,b: 本质区别:schema本身是xml的,可以被XML解析器解析(这也是从DTD上发展schema的根本目的),c:有DOM,SAX,STAX等 0 Z5 P+ y" I. c) _8 e
DOM:处理大型文件时其性能下降的非常厉害。这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存,适合对XML的随机访问( U- w$ N: c- b4 k% _8 y
SAX:不现于DOM,SAX是事件驱动型的XML解析方式。它顺序读取XML文件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文件,适合对XML的顺序访问 + B* A! S% N& x7 \: C7 J
STAX:Streaming API for XML (StAX)% W* c' B6 t# S4 N. f$ I! G! \; R# Z
% y+ e. k U, k8 I, q( W+ f# H* N+ N
71、简述synchronized和java.util.concurrent.locks.Lock的异同?
0 k9 D4 Y! B$ i" V/ w主要相同点:Lock能完成synchronized所实现的所有功能3 U+ V$ w( t5 h" ]" q# W
主要不同点:Lock有比synchronized更精确的线程语义和更好的性能。synchronized会自动释放锁,而Lock一定要求程序员手工释放,并且必须在finally从句中释放。
Q( M3 ^1 t$ U, X( O
3 u9 a( r3 X n72、EJB的角色和三个对象
) ]3 z" i6 H* ~, V 一个完整的基于EJB的分布式计算结构由六个角色组成,这六个角色可以由不同的开发商提供,每个角色所作的工作必须遵循Sun公司提供的EJB规范,以保证彼此之间的兼容性。这六个角色分别是EJB组件开发者(Enterprise Bean Provider) 、应用组合者(Application Assembler)、部署者(Deployer)、EJB 服务器提供者(EJB Server Provider)、EJB 容器提供者(EJB Container Provider)、系统管理员(System Administrator)0 X- o* N Z) i- D% l
三个对象是Remote(Local)接口、Home(LocalHome)接口,Bean类
# I( W$ a3 [8 ^& p( c9 M! F# n
+ o% @; P4 d$ r$ A( c" ~73、EJB容器提供的服务
; C9 b# E3 H- @* I; S主要提供声明周期管理、代码产生、持续性管理、安全、事务管理、锁和并发行管理等服务。9 H0 o" m! }; B
2 M: { _# D+ E& c9 s4 T
74、EJB规范规定EJB中禁止的操作有哪些?
* D* M) \! f' ?& X+ r3 Y% a1.不能操作线程和线程API(线程API指非线程对象的方法如notify,wait等),
- z0 Y; Q7 O! |9 @. E% M2.不能操作awt,
4 J8 W) B: r/ v- |. x2 w3.不能实现服务器功能,
% w [9 b4 n* `( c# e5 p& I! V4.不能对静态属生存取, |