1、1. HTML 简介 HTML(HyperText Mark-up Language)即超文本标记语言 1.什么是 xml? 可扩展标记语言 JSP(JavaServer Pages 2.JSP 中如何设置 COOKIE? 3.Request 对象的主要方法 setAttribute(String name,Object):设置名字为 name 的 request 的参数值 getAttribute(String name):返回由 name 指定的属性值 getAttributeNames():返回 request 对象所有属性的名 字集合,结果是一个枚举的实例 getCookies():返
2、回客户端的所有 Cookie 对象,结果是一个 Cookie 数组 getCharacterEncoding():返回请求中的字符编码方式 getContentLength():返回请求的 Body 的长度 getHeader(String name):获得 HTTP 协议定义的文件头信息 getHeaders(String name):返回指定名字的 request Header 的所有值,结果是一个枚举的实例 getHeaderNames():返回所以 request Header 的名字,结果是一个枚举的实例 getInputStream():返回请求的输入流,用于获得请求中的数据 ge
3、tMethod():获得客户端向服务器端传送数据的方法 getParameter(String name):获得客户端传送给服务器端的有 name 指定的参数值 getParameterNames():获得客户端传送给服务器端的所有参数的名字,结果是一个枚举的实例 getParameterValues(String name):获得有 name 指定的参数的所有值 getProtocol():获 取客户端向服务器端传送数据所依据的协议名称 getQueryString():获得查询字符串 getRequestURI():获取发出请求字符串的客户端地址 getRemoteAddr():获取客户端
4、的 IP 地址 getRemoteHost():获取客户端的名字 getSession(Boolean create):返回和请求相关 Session getServerName():获取服务器的名字 getServletPath():获取客户端所请求的脚本文件的路径 getServerPort():获取服务器的 端口号 removeAttribute(String name):删除请求中的一个属性 4.Servlet 的生命周期? Servlet 的生命 周期可以分为加载、实例化、初始化、处理客户请求和卸载 五个阶段,体现在方法上主要是 init()、 service()和 destroy(
5、)三个方法。 生命周期的具体说明如下: Servlet 容器完成加载 Servlet 类和实例化一个 Servlet 对象 init()方法完成初始化工作,该方法由 Servlet 容器调用完成 service()方法处理客户端请求,并返回响应结果 destroy()方法在 Servlet 容器卸载 Servlet 之前被调用,释放一些资源 public ServletConfig getServletConfig() public String getServletInfo() public void init(ServletConfig config) public void servic
6、e(ServletRequest request,ServletResponse response) public void destroy() 5.在 JSP 中如何执行浏览重定向 ? response.sendRedirect(”http:/ 也能物理地改变 HTTP HEADER 属性,如下: 如何中 SERVLET 或 JSP 下载一个文件 (如: binarytextexecutable)? 现提供两个解决方案: A:使用 HTTP, B:在 Servlet 中,通过设置 ContentType 和使用 java.io 包的 Stream 等类可作到 .例如: response.se
7、tContentType(”application/x-msword”); JSP 如何获得客户浏 览器的信息? 使用 request.getHeader(String)即可 6.在 JSP 中如何写文本文件?使用 PrintWriter 对象, 7.pageEncoding 和 charset 有什么区别 pageEncoding 是 jsp 文件本身的编码 contentType 的 charset 是指服务器发送给客户端时的内容编码 8.如何避免 JSP 页面自动生成 session 对象?为什么要这么做? 9.如何防止在 JSP 或 SERVLET 中的输出不被 BROWSER 保存在
8、 CACHE 中 ? 把如下脚本加入到 JSP 文件的开始即可: 10 如何现实 servlet 的单线程模式 11.在 JSP 中如何删除一个 COOKIE? 12.在 JSP 中如何写文本文件? 使用 PrintWriter 对象,如: 13.在 servlets 和 JSP 之间能共享 session 对象吗? HttpSession session = request.getSession(true); session.putValue(”variable”,”value”); 14.在一 个 JSP 的请求处理中如何停止 JSP 的执行 15.有一个 jsp 页面 ,假设名字叫 li
9、st.jsp,部署在 tomcat 下 ,客户端通过浏览器访问这个页面 . 当客户在浏览器中输入 http:/www.list.jsp ,进行访问这个 jsp 页面 ,这个过程中浏览器是怎样和 tomcat 进行通信的 ? 1. 首先要知道 jsp 在 Tomcat 的加载机 制怎么回事 , 一个 jsp 页面 ,当 web 服务器启动后 ,web 容器都会将 jsp 转化成 Servlet 再 转化成 纯文本的 html/htm 文件 ,当浏览器访问 ,会直接从服务器找到 jsp 映射的纯文本文件 15.如果这个 jsp 页面改动了 ,为什么刷新浏览器就可以重新得到改变后的页面 ? 这个东西
10、是可以设置的 ,Tomcat也好 ,Weblogic 也好 默认就是将最新的 jsp转成纯文本文件 .只要一刷新就是最新的了 .但如果为了保证服务器的性能 ,通常会设置成不刷新 . 这样只有重新启动服务器才可以将这个 jsp 转成纯文本文件 . 16.有一张表 ,只有两个字段 ,比如 id,name 这个表中如果存有 100 条数据 ,1万条数据 ,100 万条数据 ,怎么样进行数据库访问才能速度更快 ,比如分页 ? 这要看数据的多少 ,如果数据少直接用 Statement 对象就可以了 ,如果数据很大并且频繁操作的话就应该使用 PreparedStatement 对象 ,因为如果查询被访问过
11、一次 ,后台的数据库就会记录下来 ,下次访问就会很快 ! 17.有两个页面 a.jsp 和 b.jsp,要从 a.jsp 传值到 b.jsp 有几种方法?分别是什么? a:最常用的方法是用 form 中的 text,,然后在b.jsp 页面中这样获取 String username=request.getParameter(“username“); b:直接在 Url 地址栏里面输入第一个页面的地址,在后加问号,然后把要传的参数及值写在后面,如有多个用 String username=request.getParameter(“password“); c:在 form 中放 hidden,如
12、:,获取方法同上 说明:传值的方法有很多种,以上是最常用最简单的几种方式 ,当然,如果传的值有中文的话,需另做处理 18.有三个页面, a.jsp,b.jsp 和 c.jsp,流程是: a.jsp-b.jsp-c.jsp,其中 a.jsp 中提交的 数据要在c.jsp 中访问,用最简单的方法 怎么做?注意不能放在 session 里 用隐藏表单域,即在 b.jsp 页面中用 N 个 hidden 把上一页面提交过来的信息保存下来,然后和当前一起提交 ,再到 c.jsp 里面获取 19. 事务特性与 acid? 原子性 (Atomicity)、一致性( Consistency)、隔离性( Iso
13、lation)、持久性 20. page/request/session/application 理解? page 范围 具有 page 范围的对象被绑定到 javax.servlet.jsp.PageContext 对象中。在这个范围内的对象,只能在创建对象的页面中访问。可以调用 pageContext 这个隐含对象的 getAttribute()方法来访问具有这种范围类型的对象( pageContext 对象还提供了访问其他范围对象的 getAttribute方法), pageContext 对象本身也属于 page 范围。当 Servlet 类的 _jspService()方法执行完毕,
14、属于 page 范围的对象的引用将被丢弃。 page 范围内的对象,在客户端每次请求 JSP 页面时创建,在页面向客户端发送回响应或请求被转发( forward)到其他的资源后被删除。 request 范围 具有 request 范围的对象被绑定到 javax.servlet.ServletRequest 对象中,可以调用 request 这个隐含对象的 getAttribute()方法来访问具有这种范围类型的对象。在调用 forward()方法转向的页面或者调用 include()方法包含的页面中,都可以访问这个范围内的对象。要注意的是,因为请求对象对于每一个客户请求都是不同的,所以对于每一
15、个新的请求,都要重新创建和删除这个范围内的对象 session 范围 具有 session 范围的对象被绑定到 javax.servlet.http.HttpSession 对象中,可以调用 session 这个隐含对象的 getAttribute()方法来访问具有这种范围类型的对象。 JSP 容器为每一次会话,创建一个 HttpSession 对象,在会话期间,可以访问 session 范围内的对象。 application 范围 具有 application 范围的对象被绑定到 javax.servlet.ServletContext 中,可以调用 application 这个隐含对象的
16、getAttribute()方法来访问 具有这种范围类型的对象。在 Web 应用程序运行期间,所有的页面都可以访问在这个范围内的对象 21. 了解 Threadlocal? ThreadLocal 是什么呢?它并不是一个 Thread,而是 threadlocalvariable(线程局部变量 )。也许把它命名为 ThreadLocalVar 更加合适。线程局部变量 (ThreadLocal)其实的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是 Java 中一种较为特殊的线程绑定机制,是每一个线程都可以独立地改变自己的副本,而不会和其它线程的副本冲 突。 从线程的角度看,
17、每个线程都保持一个对其线程局部变量副本的隐式引用,只要线程是活动的并且 ThreadLocal 实例是可访问的;在线程消失之后,其线程局部实例的所有副本都会被垃圾回收(除非存在对这些副本的其他引用)。 通过 ThreadLocal 存取的数据,总是与当前线程相关,也就是说, JVM 为每个运行的线程,绑定了私有的本地实例存取空间,从而为多线程环境常出现的并发访问问题提供了一种隔离机制。 ThreadLocal 是如何做到为每一个线程维护变量的副本的呢?其实实现的思路很简单,在ThreadLocal 类中有一个 Map,用于存储每一个线程的变量的副本。 概括起来说,对于多线程资源共享的问题,同步
18、机制采用了“以时间换空间”的方式,而ThreadLocal 采用了“以空间换时间”的方式。前者仅提供一份变量,让不同的线程排队访问,而后者为每一个线程都提供了一份变量,因此可以同时访问而互不影响。 22.事务的边界!要么全成功,要么全失败。 事务的作用是确保一个或多个操作是以最小工作单位的形式执行的。如果事务中的其中一个操作失败,则所有操作都将回退,以使应用程序恢复执行操作前的状态。视将业务流程逻辑设计 为无状态还是有状态(请参阅生成无状态和有状态业务流程),特定业务流程上下文中相应会有一个或多个事务 23.悲观锁与乐观锁? 为了得到最大的性能,一般数据库都有并发机制,不过带来的问题就是数据访
19、问的冲突。为了解决这个问题,大多数数据库用的方法就是数据的锁定。 度,也就是说假设数据肯定会冲突,所以在数据开始读取的时候就把数据锁定住。而乐观锁就是认为数据一般情况下不会造成冲突,所以在数据进行提交更新的时候,才会正式对数据的冲突与否进行检测,如果发现冲突了,则让用户返回错误的信息,让用户决定如何去做 先从悲观锁开始 说。在 SqlServer 等其余很多数据库中,数据的锁定通常采用页级锁的方式,也就是说对一张表内的数据是一种串行化的更新插入机制,在任何时间同一张表只会插 1条数据,别的想插入的数据要等到这一条数据插完以后才能依次插入。带来的后果就是性能的降低,在多用户并发访问的时候,当对一
20、张表进行频繁操作时,会发现响应效率很低,数据库经常处于一种假死状态。而 Oracle 用的是行级锁,只是对想锁定的数据才进行锁定,其余的数据不相干,所以在对 Oracle 表中并发插数据的时候,基本上不会有任何影响。 select * from test where id = 10 for update 通过这条检索语句锁定以后,再开另外一个 sql*plus 窗口进行操作,再把上面这条 sql 语句执行一便,你会发现 sqlplus 好像死在那里了,好像检索不到数据的样子,但是也不返回任何结果,就属于卡在那里的感觉。这个时候是什么原因呢,就是一开始的第一个 Session 中的 select
21、 for update 语句把数据锁定住了。由于这里锁定的机制是 wait 的状态 (只要不表示nowait 那就是 wait),所以第二个 Session(也就是卡住的那个 sql*plus)中当前这个检索就处于等待状态。当第一个 session 最后 commit 或者 rollback 之后,第二个 session 中的检索结果就是自动跳出来,并且也把数据锁定住。 第二种乐观锁的做法就是采用版本戳,这个在 Hibernate 中得到了使用。采用版本戳的话,首先需要在你有乐观锁的数据库 table 上建立一个新的 column,比如为 number 型,当你数据每更新一次的时候,版本数就会
22、往上增加 1。比如同样有 2 个 session 同样对某条数据进行操作。两者都取到当前的数据的版本号为 1,当第一个 session 进行数据更新后 ,在提交的时候查看到当前数据的版本还为 1,和自己一开始取到的版本相同。就正式提交,然后把版本号增加 1,这个时候当前数据的版本为 2。当第二个 session 也更新了数据提交的时候,发现数据库中版本为 2,和一开始这个 session 取到的版本号不一致,就知道别人更新过此条数据,这个时候再进行业务处理,比如整个 Transaction 都 Rollback 等等操作。在用版本戳的时候,可以在应用程序侧使用版本戳的验证,也可以在数据库侧采用
23、 Trigger(触发器 )来进行验证。不过数据库的 Trigger 的性能开销还是比较的大,所 以能在应用侧进行验证的话还是推荐不用 Trigger。 24.了解 servletcontextlistener (httpsessionlistener)(访问静态页面不会创那建 session)? 应用 ServletContextListener 接口,可以实现在 web 应用程序初始化时,自动运行一些初始化程序。 ServletContextListener 接口定义的方法 方法名称 调用 Void contextInitialized(ServletContextEvent sce) 在
24、 Web 应用程序的“初始阶 段”, Servlet 容器会调用 ServletContextListener 对象的contextInitialized()方法 Void contextDestroyed(ServletContextEvent sce) 在 Web 应用程序的“结束阶段”, Servlet 容器会调用 ServletContextListener 对象的contextDestoryed()方法 应用此接口时,要在 web.xml 文件内定义“监听器类”的名称,此时要注意: 在 Servlet 规范中并未限制一个 Web 应用程序只能对应一个“监听器类”,但是在 web.xm
25、l内定义 元素时得注意下列两点: 元素必须出现在任何 Context 起始参数(由 元素所定义)之后。 元素必须出现在任何 Servlet 实体(由 元素所定义)之前。 HttpSessionListener 事件监听器,则会调用 HttpSessionListener 事件监听器的 sessionCreated方法。相反,当这个浏览器访问结束超时的时候, J2EE 应 用服务器会销毁相应的 HttpSession对象,触发 HttpSession 销毁事件,同时调用所注册 HttpSessionListener 事件监听器的sessionDestroyed 方法。 可见,对应于一个用户访问的
26、开始和结束,相应的有 sessionCreated 方法和sessionDestroyed 方法执行。这样,我们只需要在 HttpSessionListener 实现类的 sessionCreated方法中让计数器加 1,在 sessionDestroyed 方法中让计数器减 1,就轻松实现了网站在线人数的统计功 能。 25.用 servlet 生成验证码? 生成随机的字符串并加入到图片中发到客户端? 26.url.uri.urn 的区别? URI(Uniform Resoure Identifier:统一资源标识符 ),URL(Uniform Resoure Location:统一资源定位器
27、 ),URN(Uniform Resource Name 统一资源名 ) 27.策略模式 ? 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。 优点: 1、 提供 了一种替代继承的方法,而且既保持了继承的优点 (代码重用 )还比继承更灵活(算法独立,可以任意扩展 )。 2、 避免程序中使用多重条件转移语句,使系统更灵活,并易于扩展。 3、 遵守大部分 GRASP 原则和常用设计原则,高内聚、低偶合。 缺点: 1、 因为每个具体策略类都会产生一个新类,所以会增加系统需要维护的类的数量。 28.了解 filter 对权限的控
28、制 session 的控制 ? 用 Filter 防止用户访问一些未被授权的资源 ,比如一个用户未登录就不允许访问网站的某些页面,并将页面重定向到需要用户登录 的页面 29.taglib 标签? 1. 标签的配置和使用 a) 配置 i. 将涉及到的 jar 或 class 拷贝到 web 项目中 ii. 将 tld(标签库描述文件)文件拷贝到 WEB-INF 或 WEB-INF 下的任意目录中 b) 使用 i. 采用 taglib 指令引入标签库 ii. 通过前缀访问 taglib 相应的属性 30 连接池的简单原理, 将数据库连接对象储存到集合中,例如: vector 对象中,一但数据库建立
29、连接后,不同的数据库访问请求就可以共享这些连接,这样通过复用这些连接,可以避免每次创建数据库连接带来的系统开 销 31.web services, soap() , axis bugzilla+cvs ? web services Web Services 主要利用 HTTP 和 SOAP 协议使商业数据在 Web 上传输, SOAP 通过 HTTP 调用商业对象执行远程功能调用, Web 用户能够使用 SOAP 和 HTTP 通过 Web 调用的方法来调用远程对象 . 基础的 Web Services 平台是 XML + HTTP。 HTTP 协议是最常用的因特网协议。 XML 提供了一种可
30、用于不同的平台和编程语言 之间的语言。 Web services 平台的元素: SOAP (简易对象访问协议 ) 简单对象访问协议( SOAP)是一种轻量的、简单的、基于 XML 的协议,它被设计成在 WEB 上交换结构化的和固化的信息。 SOAP 可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议( HTTP),简单邮件传输协议( SMTP),多用途网际邮件扩充协议( MIME)。它还支持从消息系统到远程过程调用( RPC)等大量的应用程序。 SOAP 包括三个部分: SOAP 封装:它定义了一个框架 , 该框 架描述了消息中的内容是什么,谁应当处理它以及它是可选的还是必须的。 S
31、OAP 编码规则:它定义了一种序列化的机制,用于交换应用程序所定义的数据类型的实例。 SOAP RPC 表示:它定义了用于表示远程过程调用和应答的协定。 UDDI (通用描述、发现及整合 ) Universal Description Discovery and Integration 即统一描述、发现和集成协议 WSDL (Web services 描述语言 ) web 服务 =wsdl+soap 用机器能阅读的方式提供一 个正式的描述文档。 Web service 描述语言 (WSDL)就是这样一个基于 XML 的语言,用于描述 Web service 及其函数、参数和返回值。因为是基于
32、XML 的,所以 WSDL 既是机器可阅读的,又是人可阅读的,这将是一个很大的好处。一些最新的开发工具既能根据你的 Web service 生成 WSDL 文档,又能导入 WSDL 文档,生成调用相应Web service 的代码。 32.显示树形结构 ? 在数据库中建一个树表 ,设主键,父结点 ID,是否为叶子结点,为几级目录等等 Jsp 方面 32、 forward 和 redirect 的区别 答: forward 是服务器请求资源,服务器直接访问目标地址的 URL,把那个 URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏
33、中还是原来的地址。 redirect 就是服务端根据逻辑 ,发送一个状态码 ,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以 session,request 参数都可以获取。 33、 jsp 有哪些内置对象 ?作用分别是什么 ? 答: JSP 共有以下 9 种基本内置组件(可与 ASP 的 6 种内部组件相 对应): request 用户端请求,此请求会包含来自 GET/POST 请求的参数 response 网页传回用户端的回应 pageContext 网页的属性是在这里管理 session 与请求有关的会话期 application servlet 正在执
34、行的内容 out 用来传送回应的输出 config servlet 的构架部件 page JSP 网页本身 exception 针对错误网页,未捕捉的例外 34、 jsp 有哪些动作 ?作用分别是什么 ? 答 :JSP 共有以下 6 种基本动作 jsp:include:在页面被请求的时候引入一个文件。 jsp:useBean:寻找或者实例化一个 JavaBean。 jsp:setProperty:设置 JavaBean 的属性。 jsp:getProperty:输出某个 JavaBean 的属性。 jsp:forward:把请求转到一个新的页面。 jsp:plugin:根据浏览器类型为 Jav
35、a 插件生成 OBJECT 或 EMBED 标记 35、 JSP 中动态 INCLUDE 与静态 INCLUDE 的区别? 答: 动态 INCLUDE 用 jsp:include 动作实现 它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数 静态 INCLUDE 用 include 伪码实现 ,定不会检查所含文件的变化,适用于包含静态页面 36、两种跳转方式分别是什么 ?有什么区别 ? 答: 有两种,分别为: 前者页面不会转向 include 所指的页面,只是显示该页的结果,主页面还是原来的页面。执行完后还会回来,相当于函数调用。并且可以带参数 .后者完全转向新页面,不会再回来
36、。相当于 go to 语句。 37、 JSP 的内置对象及方法。 答: request 表示 HttpServletRequest 对象。它包含了有关浏览器请求的信息,并且提供了几个用于获取 cookie, header, 和 session 数据的有用的方法。 response 表示 HttpServletResponse 对象,并提供了几个用于设置送回 浏览器的响应的方法(如 cookies,头信息等) out 对象是 javax.jsp.JspWriter 的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。 pageContext 表示一个 javax.servlet.jsp.
37、PageContext 对象。它是用于方便存取各种范围的名字空间、 servlet 相关的对象的 API,并且包装了通用的 servlet 相关功能的方法。 session 表示一个请求的 javax.servlet.http.HttpSession 对象。 Session 可以存贮用户的状态信息 applicaton 表示一个 javax.servle.ServletContext 对象。这有助于查找有关 servlet 引擎和servlet 环境的信息 config 表示一个 javax.servlet.ServletConfig 对象。该对象用于存取 servlet 实例的初始化参数。
38、page 表示从该页面产生的一个 servlet 实例 Servlet 方面 38、说一说 Servlet 的生命周期 ? 答 :servlet 有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由 javax.servlet.Servlet 接口的 init,service 和 destroy 方法表达。 Servlet被服务器实例化后,容器运行其 init 方法,请求到达时运行其 service 方法, service 方法自动派遣运行与请求对应的 doXXX 方法( doGet, doPost)等,当服务器决定将实例销毁的时候调用其 destroy 方法。
39、与 cgi 的区别在于 servlet 处于服务器进程中,它通过多线程方式运行其 service 方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而 CGI 对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于 servlet。 39、 JAVA SERVLET API 中 forward() 与 redirect()的区别? 答 :前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所 以,前者更加高效,在前者可以满足需要时,尽量使用 fo
40、rward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用 sendRedirect()方法。 40、 Servlet 的基本架构 答: public class ServletName extends HttpServlet public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException public void doGet(HttpServletRequest reque
41、st, HttpServletResponse response) throws ServletException, IOException 41、什么情况下调用 doGet()和 doPost()? 答: Jsp页面中的 form标签里的 method属性为 get时调用 doGet(),为 post时调 用 doPost()。 42、如何现实 servlet 的单线程模式 答: 43、页面间对象传递的方法 答: request, session, application, cookie 等 44、 JSP 和 Servlet 有哪些相同点和不同点,他们之间的联系是什么? 答: JSP 是
42、Servlet 技术的扩展,本质上是 Servlet 的简易方式,更强调应用的外表表达。JSP 编译后是 “类 servlet“。 Servlet 和 JSP 最主要的不同点在于, Servlet 的应用逻辑是在Java 文件中,并且完全从表示层中的 HTML 里分离开来。而 JSP 的情况是 Java 和 HTML可以组合成一个扩展名为 .jsp 的文件。 JSP 侧重于视图, Servlet 主要用于控制逻辑。 45、我们在 web 应用开发过程中经常遇到输出某种编码的字符,如 iso8859-1 等,如何输出 一 个某种编码的字符串? 答: Public String translate
43、 (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; 46、 Servlet 执行时一般实现哪几个方法? 答: public void init(ServletConfig config) public ServletConfig getServletConfig()
44、public String getServletInfo() public void service(ServletRequest request,ServletResponse response) public void destroy() 47、说出数据连接池的工作机制是什么 ? 答: J2EE 服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为忙。如果当前没有空闲连接,池驱动程序就 新建一定数量的连接,新建连接的数量有配置参数决定。当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使
45、用这个连接。 Xml 方面 48、你在项目中用到了 xml 技术的哪些方面 ?如何实现的 ? 答: 用到了数据存贮,信息配置两方面。在做数据交换平台时,将不能数据源的数据组装成XML 文件,然后将 XML 文件压缩打包加密后通过网络传送给接收者,接收解密与解压缩后再同 XML 文件中还原相关信息进行处理。在做软件配置时,利用 XML 可以很方便的进行,软件的各种配置参数都存贮在 XML 文件中。 49、 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 的顺