JAVA面试总汇(6)

59 JSP 的常用指令
<%@page language="java" contenType="text/html;charset=gb2312" session="true" buffer="64kb" autoFlush="true" isThreadSafe="true" info="text" errorPage="error.jsp" isErrorPage="true" isELIgnored="true" pageEncoding="gb2312" import="java.sql.*"%>
isErrorPage(
是否能使用 Exception 对象 ) isELIgnored( 是否忽略表达式 )
<%@include file="filename"%>
<%@taglib prefix="c"uri=" http://......"%>
60
、什么情况下调用 doGet() doPost()
Jsp
页面中的 form 标签里的 method 属性为 get 时调用 doGet() ,为 post 时调用 doPost()
61
servlet 的生命周期
web
容器加载 servlet ,生命周期开始。通过调用 servlet init() 方法进行 servlet 的初始化。通过调用 service() 方法实现,根据请求的不同调用不同的 do***() 方法。结束服务, web 容器调用 servlet destroy() 方法。
62
、如何现实 servlet 的单线程模式
<%@ page isThreadSafe="false"%>
63
、页面间对象传递的方法
request
session application cookie
64
JSP Servlet 有哪些相同点和不同点,他们之间的联系是什么?
JSP
Servlet 技术的扩展,本质上是 Servlet 的简易方式,更强调应用的外表表达。 JSP 编译后是 " servlet" Servlet JSP 最主要的不同点在于, Servlet 的应用逻辑是在 Java 文件中,并且完全从表示层中的 HTML 里分离开来。而 JSP 的情况是 Java HTML 可以组合成一个扩展名为 .jsp 的文件。 JSP 侧重于视图, Servlet 主要用于控制逻辑。
65
、四种会话跟踪技术
会话作用域 ServletsJSP 页面描述
page
否是代表与一个页面相关的对象和属性。一个页面由一个编译好的 Java servlet 类(可以带有任何的 include 指令,但是没有 include 动作)表示。这既包括 servlet 又包括被编译成 servlet JSP 页面
request
是是代表与 Web 客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个 Web 组件(由于 forward 指令和 include 动作的关系)
session
是是代表与用于某个 Web 客户机的一个用户体验相关的对象和属性。一个 Web 会话可以也经常会跨越多个客户机请求
application
是是代表与整个 Web 应用程序相关的对象和属性。这实质上是跨越整个 Web 应用程序,包括多个页面、请求和会话的一个全局作用域
66
Request 对象的主要方法:
setAttribute(String name,Object)
:设置名字为 name request 的参数值
getAttribute(String name)
:返回由 name 指定的属性值
getAttributeNames()
:返回 request 对象所有属性的名字集合,结果是一个枚举的实例
getCookies()
:返回客户端的所有 Cookie 对象,结果是一个 Cookie 数组
getCharacterEncoding()
:返回请求中的字符编码方式
getContentLength()
:返回请求的 Body 的长度
getHeader(String name)
:获得 HTTP 协议定义的文件头信息
getHeaders(String name)
:返回指定名字的 request Header 的所有值,结果是一个枚举的实例
getHeaderNames()
:返回所以 request Header 的名字,结果是一个枚举的实例
getInputStream()
:返回请求的输入流,用于获得请求中的数据
getMethod()
:获得客户端向服务器端传送数据的方法
getParameter(String name)
:获得客户端传送给服务器端的有 name 指定的参数值
getParameterNames()
:获得客户端传送给服务器端的所有参数的名字,结果是一个枚举的实例
getParameterValues(String name)
:获得有 name 指定的参数的所有值
getProtocol()
:获取客户端向服务器端传送数据所依据的协议名称
getQueryString()
:获得查询字符串
getRequestURI()
:获取发出请求字符串的客户端地址
getRemoteAddr()
:获取客户端的 IP 地址
getRemoteHost()
:获取客户端的名字
getSession([Boolean create])
:返回和请求相关 Session
getServerName()
:获取服务器的名字
getServletPath()
:获取客户端所请求的脚本文件的路径
getServerPort()
:获取服务器的端口号
removeAttribute(String name)
:删除请求中的一个属性
67
J2EE 是技术还是平台还是框架?
     J2EE
本身是一个标准,一个为企业分布式应用的开发提供的标准平台。
     J2EE
也是一个框架,包括 JDBC JNDI RMI JMS EJB JTA 等技术。
68
、我们在 web 应用开发过程中经常遇到输出某种编码的字符,如 iso8859-1 等,如何输出一个某种编码的字符串?
   Public String translate (String str) {
     String tempStr = "";
     try {
       tempStr = new String(str.getBytes("ISO-8859-1"), "GBK");
       tempStr = tempStr.trim();
     }
     catch (Exception e) {
       System.err.println(e.getMessage());
     }
     return tempStr;
   }
69
、简述逻辑操作 (&,|,^) 与条件操作 (&&,||) 的区别。
区别主要答两点: a. 条件操作只能操作布尔型的 , 而逻辑操作不仅可以操作布尔型 , 而且可以操作数值型
b.
逻辑操作不会产生短路
70
XML 文档定义有几种形式?它们之间有何本质区别?解析 XML 文档有哪几种方式?
a:
两种形式 dtd   schema b: 本质区别 :schema 本身是 xml 的,可以被 XML 解析器解析 ( 这也是从 DTD 上发展 schema 的根本目的 ) c: DOM,SAX,STAX
     DOM:
处理大型文件时其性能下降的非常厉害。这个问题是由 DOM 的树结构所造成的,这种结构占用的内存较多,而且 DOM 必须在解析文件之前把整个文档装入内存 , 适合对 XML 的随机访问
SAX:
不现于 DOM,SAX 是事件驱动型的 XML 解析方式。它顺序读取 XML 文件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理 XML 文件,适合对 XML 的顺序访问
     STAX:Streaming API for XML (StAX)
71
、简述 synchronized java.util.concurrent.locks.Lock 的异同
主要相同点: Lock 能完成 synchronized 所实现的所有功能
主要不同点: Lock 有比 synchronized 更精确的线程语义和更好的性能。 synchronized 会自动释放锁,而 Lock 一定要求程序员手工释放,并且必须在 finally 从句中释放。
72
EJB 的角色和三个对象
一个完整的基于 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
73
EJB 容器提供的服务
主要提供声明周期管理、代码产生、持续性管理、安全、事务管理、锁和并发行管理等服务。

你可能感兴趣的:(java,jsp,面试,servlet,ejb)