Java的Jdbc和Servlet&Jsp面试题

servlet的内容

2、HTTP 请求的 GET 与 POST 方式的区别

答:servlet 有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。 这个生存期由 javax.servlet.Servlet 接口的 init,service 和 destroy 方法表达。

3、解释一下什么是 servlet;

答:servlet 有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。 这个生存期由 javax.servlet.Servlet 接口的 init,service 和 destroy 方法表达。

4、说一说 Servlet 的生命周期?

答:servlet 有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。 这个生存期由 javax.servlet.Servlet 接口的 init,service 和 destroy 方法表达。
Servlet 被服务器实例化后,容器运行其 init 方法,请求到达时运行其 service 方法,service 方法自动派遣运行与请求对应的 doXXX 方法(doGet,doPost)等,当服务器决定将实例销 毁的时候调用其 destroy 方法。 web 容器加载 servlet,生命周期开始。通过调用 servlet 的 init()方法进行 servlet 的初始化。 通过调用 service()方法实现,根据请求的不同调用不同的 do***()方法。结束服务,web 容 器调用 servlet 的 destroy()方法。

5、Servlet 的基本架构

public class ServletName extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}

6、SERVLET API 中 forward() 与 redirect()的区别?

答:前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后 者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的 地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量 使用 forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳 转到一个其它服务器上的资源,则必须使用 sendRedirect()方法。

7、什么情况下调用 doGet()和 doPost()?

Jsp 页面中的 FORM 标签里的 method 属性为 get 时调用 doGet(),为 post 时调用 doPost()。

8、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):删除请求中的一个属性

9、forward 和 redirect 的区别

forward 是服务器请求资源,服务器直接访问目标地址的 URL,把那个 URL 的响应内容 读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从 哪儿来的,所以它的地址栏中还是原来的地址。 redirect 就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来 说浏览器会用刚才请求的所有参数重新请求,所以 session,request 参数都可以获取。

11. jsp 有哪些内置对象?作用分别是什么? 分别有什么方法?

答:JSP 共有以下 9 个内置的对象:
request 用户端请求,此请求会包含来自 GET/POST 请求的参数
response 网页传回用户端的回应
pageContext 网页的属性是在这里管理
session 与请求有关的会话期
application servlet 正在执行的内容
out 用来传送回应的输出
config servlet 的构架部件
page JSP 网页本身
exception 针对错误网页,未捕捉的例外

request 表示 HttpServletRequest 对象。它包含了有关浏览器请求的信息,并且提供了几 个用于获取 cookie, header, 和 session 数据的有用的方法。 response 表示 HttpServletResponse 对象,并提供了几个用于设置送回 浏览器的响应 的方法(如 cookies,头信息等) out 对象是 javax.jsp.JspWriter 的一个实例,并提供了几个方法使你能用于向浏览器回 送输出结果。 pageContext 表示一个 javax.servlet.jsp.PageContext 对象。它是用于方便存取各种范围 的名字空间、servlet 相关的对象的 API,并且包装了通用的 servlet 相关功能的方法。 session 表示一个请求的 javax.servlet.http.HttpSession 对象。Session 可以存贮用户的 状态信息 applicaton 表示一个 javax.servle.ServletContext 对象。这有助于查找有关 servlet 引擎 和 servlet 环境的信息 config 表示一个 javax.servlet.ServletConfig 对象。该对象用于存取 servlet 实例的初始 化参数。 page 表示从该页面产生的一个 servlet 实例

12. jsp 有哪些动作?作用分别是什么?

(这个问题似乎不重要,不明白为何有此题) 答:JSP 共有以下 6 种基本动作 jsp:include:在页面被请求的时候引入一个文件。 jsp:useBean:寻找或者实例化一个 JavaBean。 jsp:setProperty:设置 JavaBean 的属性。 jsp:getProperty:输出某个 JavaBean 的属性。 jsp:forward:把请求转到一个新的页面。 jsp:plugin:根据浏览器类型为 Java 插件生成 OBJECT 或 EMBED 标记

13、JSP 的常用指令

isErrorPage(是否能使用 Exception 对象),isELIgnored(是否忽略表达式)

14. JSP 中动态 INCLUDE 与静态 INCLUDE 的区别?

答:动态 INCLUDE 用 jsp:include 动作实现 <jsp:include page=included.jsp flush=true />它总是会检查所含文件中的变化,适合用于包含动 态页面,并且可以带参数 静态 INCLUDE 用 include 伪码实现,定不会检查所含文件的变化, 适用于包含静态页面 <%@ include file=included.htm %>

15、两种跳转方式分别是什么?有什么区别?

(下面的回答严重错误,应该是想问 forward 和 sendRedirect 的区别,毕竟出题的人不是专 业搞文字艺术的人,可能表达能力并不见得很强,用词不一定精准,加之其自身的技术面也 可能存在一些问题,不一定真正将他的意思表达清楚了,严格意思上来讲,一些题目可能根 本就无人能答,所以,答题时要掌握主动,只要把自己知道的表达清楚就够了,而不要去推 敲原始题目的具体含义是什么,不要一味想着是在答题) 答:有两种,分别为: <jsp:include page=included.jsp flush=true> <jsp:forward page= nextpage.jsp/> 前者页面不会转向 include 所指的页面,只是显示该页的结果,主页面还是原来的页面。执 行完后还会回来,相当于函数调用。并且可以带参数.后者完全转向新页面,不会再回来。 相当于 go to 语句。

16、页面间对象传递的方法

request,session,application,cookie 等

17、JSP 和 Servlet 有哪些相同点和不同点,他们之间的联系是什么?

JSP 是 Servlet 技术的扩展,本质上是 Servlet 的简易方式,更强调应用的外表表达。 JSP 编译后是"类 servlet"。Servlet 和 JSP 最主要的不同点在于,Servlet 的应用逻辑是 在 Java 文件中,并且完全从表示层中的 HTML 里分离开来。而 JSP 的情况是 Java 和 HTML 可以组合成一个扩展名为.jsp 的文件。JSP 侧重于视图,Servlet 主要用于 控制逻辑。

18、MVC 的各个部分都有那些技术来实现?如何实现?

答:MVC 是 Model-View-Controller 的简写。Model 代表的是应用的业务逻辑(通过 JavaBean,EJB 组件实现), View 是应用的表示面(由 JSP 页面产生),Controller 是提供 应用的处理过程控制(一般是一个 Servlet),通过这种设计模型把应用逻辑,处理过程和显 示逻辑分成不同的组件实现。这些组件可以进行交互和重用。

19、我们在 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; 
	 	  }  

21、以下是关于 HttpServlet 类中 doGet()、doPost()、doDelete()、doPut()、 service()方法的描述

答:BC
A. HttpServlet 中没有 doDelete()这个方法。
B. doGet()、doPost()、service()这些方法都不是线程安全的。
C. 客户端来的 get 请求将调用 doGet(),客户端来的 post 请求将调用 doPost() 方法。客户端来的所有请求都调用 service()方法。
D. 以上说法都不对。

22、在服务器的网络编程中,解决会话跟踪的方法有:

答:ABC
A. 使用 Cookie。 B. 使用 URL 重写。 C. 使用隐藏的表单域。 D. 以上方法都不能单独使用。

23、在以下哪些情况下 session 会话将结束生命周期

答:ABC
A. 客户端关闭浏览器。 B. 会话超时。 C. 服务器调用了 HttpSession 的 invalidate()方法。 D. 客户端没有访问本应用而连接到别的应用上。

24、以下是用户请求访问 Servlet 的过程的描术,哪些是错误的:

答:BCD
A. servlet 容器将创建一个 ServletRequest 对象和 ServletResponse 对象。

Copyright Tarena Corporation,2009.All rights reserved

B. 在 ServletResponse 对 象 中 封 装 了 用 户 请 求 信 息 , 然 后 ServletServletResponse 对象和 ServletRequest 对象传给用户所请求的 Servlet。

C.Servlet 把响应结果写到 ServletRequest 中,然后由 Servlet 容器把响应结 果传给用户。 D.以上都没错

25、关于 Cookie 和 HttpSession 的说法错误的是:

答:D
A. 缺省的 Session 实现机制采用的是 Cookie 技术
B. 通常以一个 PC 机作为同一个 Session 的衡量标志
C. 如果浏览器的安全级别设置的非常高,Cookie 可能就用不了了
D. 当 Cookie 不能用时,Session 就肯定用不了了

26、下列 EJB2.0 中描述正确的有:

答:BC
A. 远程接口继承自 EJBObject,远程接口只是规定了客户机与 EJB 间的约定。
B. 本地接口继承自 EJBHome,本地接口提供创建、查找、删除 EJB 实例。
C. 远程接口与本地接口均是方法定义没有方法实现。
D. 远程接口与本地接口均有方法实现。

27、J2EE 规范只认可的事务性资源类型有: ABC

A. JDBC 数据库 B. JMS 消息队列服务器

C. 其它通过 JCA 访问的事务性服务 D. JCX 事务

28、关于 EJB 的 Home 接口和 Remote 接口,描述错误的是: D

A.Remote 接口定义了业务方法,用于 EJB 客户端调用业务方法
B.Home 接口是 EJB 工厂,用于创建、移除、查找 EJB 实例
C.JNDI 树上绑定的是 Remote 接口
D.JNDI 树上绑定的是 Home 接口

29、关于 EJB 的描述错误的是:

答:CD
A.SessionBean 分为 Stateful 和 Stateless 两种
B.EntityBean 分为 BMP 和 CMP 两种
C.Message-Driven Bean 相当于 JMS 应用中的消息生产者
D.假设 EJB 由容器管理事务,在 EJB 方法中需要会滚的话执行如下代码: ctx.getUserTransaction().rollback();(假设 ctx 为该 EJB 的 Context)

jdbc的内容

1.说说 jdbc 连接数据库的步骤

1.注册驱动 Class.forName(“”);

2.获得连接 Connection conn=DriverManager.getConnection(“”);

3.创建声明

4.执行 sql 语句,获得结果集,进行结果集的处理

5.关闭结果集

6.关闭声明

7.关闭连接,释放资源

2. statement 和 preparedstatement 的区别

1.statement 是 preparedstatemnet 的父类

2.statement 是直接发送 sql 语句到数据库,事先没有进行预编译,这样会导致 恶意注入 sql 语句的问题出现.prepatedstatement 会将 sql 进行预编译,当 sql 语句要重 复执行时,数据库会调用以前编译好的 sql,所以 preparedstatement 在性能方面会更好 3.preparedstatement 在执行 sql 时,对传入的参数进行强制类型转换,以保证数据格式 与底层数据库格式一致。

4.PreparedStatement 相对于 Statemnet 要安全一些,可以有效防止 sql 注入. 5.PreparedStatement 能够执行批处理,而 Statement 不行.
另: CallableStatement 是用来调用存储过程的

3.数据库数据如何提高查询速度?

1. jdbc setFetchSize(); 2. 数据库:索引
3. 把大表可以拆分成多个小表 4. dba 对表进行分区

4.解析一个 XML 文档有哪些方式?

解析有:dom 和 sax 两种 dom:把整个 XML 文档放入内存,适合 XML 随机访问,占用内存资源大 sax:事件驱动型的 XML 解析方式,顺序读取,不用一次装载整个文件, 遇到标签会触发一个事件,适和对 XML 的顺序访问,占用内存资源稍小

5.XML 文档定义有几种形式?

a: 两种形式dtd schema
b: 本质区别:schema 本身是xml 的,可以被XML 解析器解析(这 也是从 DTD 上发展 schema 的根本目的)
c:有 DOM,SAX,STAX 等

6.Java 连接数据库有几种模式(方式)?

1.直接连接 JDBC(瘦连接) 2.通过客户端(胖连接) 3.使用桥连接 ODBC(桥接)

7.分页?

  1. 缓存分页(假分页) 特点: 第一次取全部数据时比较慢.(可能非常慢)以后每次都从缓存中取数据,比较快. 只访问数据库一次.内存压力大.如果需求是一般只查看前几页,浪费内存资源.

  2. 数据库分页(查询分页) 特点:每次只向数据库查询并返回一页的数据频繁的数据库访问. 每次查询的时间都差不多.没有缓存压力.

  3. 两者比较: 基于缓存的方式,适合小表,全部查看 基于查询的方式,适合大表,只查询部分数据

Servlet&Jsp 部分:

1. MVC 的各个部分都有那些技术来实现?如何实现?

M-Model 模型 模型的职责是负责业务逻辑。包含两部分:业务数据和业务处理逻辑。 例如:实体类、DAO、Service 等都属于模型层 V-View 试图 试图的职责是负责显示界面和用户交互(收集用户信息)。 属于视图的类是不包含业务逻辑和控制逻辑的 JSP(如果 JSP 页面中有<% %>就不能 算是视图层的类,或者 JSP 中更有转发和重定向的控制逻辑也是不可以的)。 C-Controller 控制器 控制器是模型层 M 和视图层 V 之间的桥梁,用于控制流程。 比如我们之前项目中写的 Action 或 Servlet

2.servlet 的生命周期

web 容器加载 servlet,生命周期开始。 通过调用 servlet 的 init()方法进行 servlet 的初始化。 通过调用 service()方法实现,根据请求的不同调用不同的 doGet()或者 doPost()方法。 结束服务,web 容器调用 servlet 的 destroy()方法。

3.jsp与servlet的区别及联系

JSP 是Servlet 技术的扩展,本质上是Servlet 的简易方式,更强调应用的外表表达。 JSP编译后是"类servlet"。Servlet 和JSP 最主要的不同点在于,Servlet 的应用逻辑是在 Java文件中,并且完全从表示层中的HTML 里分离开来。而JSP 的情况是Java 和HTML 可以 组合成一个扩展名为.jsp 的文件。 JSP 侧重于视图,Servlet 主要用于控制逻辑。

4. 数据库连接池的工作机制:

J2EE 服务器启动的时候,会创建一定数量的池连接,并维持不少于此数量的池连接。 程序需要时,池驱动程序会返回一个未使用的池连接并将其标记为忙。 如果当前没有空闲连接,池驱动会新建一批,数量由配置参数决定。 当调用池连接完成后,池驱动将此连接标记为空闲,其他调用就可以使用这个连接。

5 .jsp 有哪些内置对象?作用分别是什么?

答:JSP 共有以下 9 种基本内置组件(可与 ASP 的 6 种内部组件相对应): page jsp 网页本身 pageContext 网页的属性是在这里管理 request 客户端请求,此请求会包含来自 GET/POST 请求的参数 session 与请求有关的会话期,只要浏览器不关闭,保存在 session 里面的值都存在. application servlet 正在执行的内容 config servlet 的构架部件 response 网页传回用户端的回应 out 用来传送回应的输出 exception 针对错误网页,未捕捉的例外

6.forward(转发) 和 redirect(重定向)的区别

答:forward 是服务器请求资源,服务器直接访问目标地址的 URL,把那个 URL 的响应内容 读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来 的,所以它的地址栏中还是原来的地址。 redirect 就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说 浏览器会用刚才请求的所有参数重新请求。

7.Jsp 的四种会话范围

page 是代表与一个页面相关的对象和属性。作用域在当前页. request 是代表与Web客户机发出的一个请求相关的对象和属性。 session 只要访问的浏览器不关闭,作用域就一直存在。 application 只要访问的服务器不关闭,作用域就一直存在。

8. 什么是 B/S 结构,C/S 结构?

C/S 是 Client/Server 的缩写。服务器通常采用高性能的 PC、工作站或小型机,并采用大 型数据库系统,如 Oracle、Sybase、Informix 或 SQL Server。客户端需要安装专用的客户端 软件。 B/S 是 Brower/Server 的缩写,客户机上只要安装一个浏览器(Browser),如 Netscape Navigator 或 Internet Explorer,服务器安装 Oracle、Sybase、Informix 或 SQL Server 等数据库。 在这种结构下,用户界面完全通过 WWW 浏览器实现,一部分事务逻辑在前端实现,但是 主要事务逻辑在服务器端实现。浏览器通过 Web Server 同数据库进行数据交互。

9. 编码格式转换问题:

String str=new String(“中国”.getBytes(“ISO-8859-1”),“GBK”).trim();

10.URL 和 URI 的区别?

URL:统一资源定位符, 指的是 Internet 文件在网上的地址, 用在客户程序和服务器上, 定位客户端连接服务器所需要的信息,它不仅定位了这个信息资源,而且定义了如何找到这 个资源. URI:统一资源标识符,Web 上可用的每种资源 :HTML 文档、图像、视频片段、程序 等„是由一个通过通用资源标志符(Universal Resource Identifier, 简称"URI")进行 定位,不局限于客户端服务器. URI 一般由三部分组成: 1.访问资源的命名机制。 2.存放资源的主机名。 3.资源自身的名称,由路径表示。

URL 是 URI 的一个子集。

11、get 和 post 的区别?【基础】

答:Form 中的 get 和 post 方法,在数据传输过程中分别对应了 HTTP 协议中的 GET 和 POST 方法。二者主要区别如下:

1)Get 是用来从服务器上获得数据,而 Post 是用来向服务器上传递数据;

2)Get 将表单中数据按照 variable=value 的形式,添加到 action 所指向的 URL 后面,并且两者使用“?”连接,而各个变量之间使用“&”连接;Post 是将 表单中的数据放在 form 的数据体中,按照变量和值相对应的方式,传递到 action 所指向 URL;

3)Get 是不安全的,因为在传输过程,数据被放在请求的 URL 中;Post 的 所有操作对用户来说都是不可见的;

4)Get 传输的数据量小,这主要是因为受 URL 长度限制;而 Post 可以传输 大量的数据,所以在上传文件只能使用 Post;

5)Get限制Form表单的数据集必须为ASCII字符,而Post支持整个ISO10646 字符集; 6)Get 是 Form 的默认方法。

12、什么情况下调用 doGet()和 doPost()?

答:Jsp 页面中的 form 标签里的 method 属性为 get 时调用 doGet(),为 post 时调用 doPost()。

13、如何从 form 表单中得取 checkbox 的值;

答:可在页面把 checkbox 的 name 属性取同一个,value 属性取每个条目的 id, 后台用 getParamter(“name”)能取到 checkbox 的一组值。

15、javascript 常用的方面;【基础】

答:常用于数据输入校验和页面特殊效果等。

18、JSP 和 Servlet 有哪些相同点和不同点,他们之间的联系是什么?

答:JSP 是 Servlet 技术的扩展,本质上是 Servlet 的简易方式,更强调应用的 外表表达。JSP 编译后是"类 servlet"。

Servlet 和 JSP 主要的不同点在于

Servlet 的应用逻辑是在 Java 文件中,并且完全从表示层中的 HTML 里分离开来。 而 JSP 的情况是 Java 和 HTML 可以组合成一个扩展名为.jsp 的文件。JSP 侧重于 视图,Servlet 主要用于控制逻辑。

19、jsp 的四种范围?

答:a.page 是代表与一个页面相关的对象和属性。一个页面由一个编译好的 Java servlet 类(可以带有任何的 include 指令,但是没有 include 动作) 表示。这既包括 servlet 又包括被编译成 servlet 的 JSP 页面 b.request 是代表与 Web 客户机发出的一个请求相关的对象和属性。一个 请求可能跨越多个页面,涉及多个 Web 组件(由于 forward 指令和 include 动 作的关系) c.session 是代表与用于某个 Web 客户机的一个用户体验相关的对象和属 性。一个 Web 会话可以也经常会跨越多个客户机请求 d.application 是代表与整个 Web 应用程序相关的对象和属性。这实质上 是跨越整个 Web 应用程序,包括多个页面、请求和会话的一个全局作用域。

20、Request 对象的主要方法?

答:setAttribute(String name,Object):设置名字为 name 的属性值 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):删除请求中的一个属性

21、如何实现 servlet 的单线程模式?

答:<%@page isThreadSafe=”false”%>

22、页面间对象传递的方法。【基础】

答:request,session,application,cookie 等。

23、详细描述 MVC。【基础】

答:基于 Java 的 Web 应用系统采用 MVC 架构模式,即 model(模型)、view(视 图)、control(控制)分离设计;这是目前 WEB 应用服务系统的主流设计方向。

​ Model:即处理业务逻辑的模块,每一种处理一个模块; View:负责页面显示,显示 MODEL 处理结果给用户,主要实现数据到页面转 换过程; Control:负责每个请求的分发,把 FORM 数据传递给 MODEL 处理,把处理结 果的数据传递给 VIEW 显示。

24、MVC 的各个部分都有那些技术来实现?如何实现? 【基础】

答:MVC 是 Model-View-Controller 的简写。“Model” 代表的是应用的业务逻 辑(通过 JavaBean,EJB 组件实现), “View” 是应用的表示面(由 JSP 页面产 生),“Controller” 是提供应用的处理过程控制(一般是一个 Servlet),通 过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组 件可以进行交互和重用。

25、应用服务器有那些?【基础】

答:BEA WebLogic Server, IBM WebSphere Application Server, Oracle9i Application Server, JBoss, Tomcat。

26、Servlet 执行时一般实现哪几个方法?【基础】

答:public void init(ServletConfig config) public ServletConfig getServletConfig() public String getServletInfo() public void service(ServletRequest request,ServletResponse response) public void destroy()

27、struts 的入口类?【基础】

答:是 ActionServlet,所有的 struts 请求都经由该类转发处理。

28、STRUTS 的应用(如 STRUTS 架构)?【基础】

答:Struts 是采用 Java Servlet/JavaServer Pages 技术开发 Web 应用程序的 开放源码的framework。 采用Struts能开发出基于MVC(Model-View-Controller) 设计模式的应用构架。 Struts 有如下的主要功能:

1)包含一个 controller servlet,能将用户的请求发送到相应的 Action 对象;

2)JSP 自由 tag 库,并且在 controller servlet 中提供关联支持,帮助开发 人员创建交互式表单应用;

3)提供了一系列实用对象:XML 处理、通过 Java reflection APIs 自动处理 JavaBeans 属性、国际化的提示和消息。

29、几种会话跟踪技术?【基础】

答:cookie、URL 重写、设置表单隐藏域。

31、过滤器有哪些作用?【基础】

答:可以验证客户是否来自可信的网络,可以对客户提交的数据进行重新编码, 可以从系统里获得配置的信息,可以过滤掉客户的某些不应该出现的词汇,可以 验证用户是否登录,可以验证客户的浏览器是否支持当前的应用,可以记录系统 的日志等等。

32、过滤器的用法?(对客户端的请求统一编码和对客户端进行认证)

答:首先要实现(implements)Filter 接口,同时覆盖 Filter 接口的三个方法: init(FilterConfig config) //用于获得 FilterConfig 对象; doFilter(ServletRequest request, ServletResponse response, FilterChain chain) //进行过滤处理一些业务; destroy() //销毁 Filter。

33、简述 HttpSession 的作用、使用方法,可用代码说明。

答:HttpSession 中可以跟踪并储存用户信息,把值设置到属性中,有 2 个方法: setAttribute(),getAttrribute(); 例如:在一个方法中用 session.setAttribute(“student”,student);在 session 中设置一个属性名为 student,值为一个名为 student 的对象。而后可在 同一 session 范围内用 getAttribute(“student”)取出该属性,得到 student 对象。

34、介绍在 JSP 中如何使用 JavaBeans?

答:在 JSP 中使用 JavaBean 常用的动作有: 1)<jsp:useBean />:用来创建和查找 bean 对象; 2)<jsp:setProperty />:用来设置 bean 的属性,即调用其 setXxx()方法; 3)<jsp:getProperty />:用来获得 bean 的属性,即调用其 getXxx()方法。

35、JSP 和 Servlet 中的请求转发分别如何实现?

答:JSP 中的请求转发可利用 forward 动作实现:<jsp:forward />; Serlvet 中实现请求转发的方式为: getServletContext().getRequestDispatcher(path).forward(req,res)。

36、Web.Xml 的作用?

答:用于配置 web 应用的信息;如 listener、filter 及 servlet 的配置信息等。

37、写出熟悉的 JSTL 标签。

答:<c:if>、<c:choose>、<c: when>、<c: otherwise>、<c:forEach>、<c:set>。

38、说出 struts 中的标签。【基础】

答:<bean:message /> <html:errors /> <bean:include /> <html:messages /> <bean:define /> html:html <bean:write /> html:form <bean:resource /> html:link <bean:cokkie /> html:text <bean:heder /> <logic:present /> <bean:parameter /> <logic:equal /> <bean:size />

39、JSP 标签的作用?如何定义?【中等难度】

答:作用:分离 jsp 页面的内容和逻辑; 业务逻辑开发者可以创建自定义标签; 封装业务逻辑; 可重用并且易维护; 易于手工修改、易于工具维护; 提供简洁的语法; 定义: 写标签处理器; 写 tld 文件; 讲标签处理器和 tld 文件放到同一个包里面; 把 jsp 页面和标签库配置部署在一起。

41、javascript 的优缺点和内置对象;【中等难度】

答:1)优点:简单易用,与 Java 有类似的语法,可以使用任何文本编辑工具编 写,只需要浏览器就可执行程序,并且事先不用编译,逐行执行,无需进行严格 的变量声明,而且内置大量现成对象,编写少量程序可以完成目标; 2)缺点:不适合开发大型应用程序; 3)Javascript 有 11 种内置对象: Array、String、Date、Math、Boolean、Number、 Function、Global、Error、RegExp、Object。

七、EJB 及 Spring 部分:

162、EJB 与 JAVA BEAN 的区别?

答:Java Bean 是可复用的组件,对 Java Bean 并没有严格的规范,理论上讲, 任何一个 Java 类都可以是一个 Bean。但通常情况下,由于 Java Bean 是被容器 所创建(如 Tomcat)的,所以 Java Bean 应具有一个无参的构造器,另外,通 常 Java Bean 还要实现 Serializable 接口用于实现 Bean 的持久性。Java Bean 实际上相当于微软COM模型中的本地进程内COM组件,它是不能被跨进程访问的。 Enterprise Java Bean 相当于 DCOM,即分布式组件。它是基于 Java 的远程方 法调用(RMI)技术的,所以 EJB 可以被远程访问(跨进程、跨计算机)。但 EJB 必须被布署在诸如 Webspere、WebLogic 这样的容器中,EJB 客户从不直接访问 真正的 EJB 组件,而是通过其容器访问。EJB 容器是 EJB 组件的代理,EJB 组件 由容器所创建和管理。客户通过容器来访问真正的 EJB 组件。

163、EJB 的几种类型?【基础】

答:会话(Session)Bean、实体(Entity)Bean、消息驱动的(Message Driven) Bean;会话 Bean 又可分为有状态(Stateful)和无状态(Stateless)两种;实 体 Bean 可分为 Bean 管理的持续性(BMP)和容器管理的持续性(CMP)两种。

164、remote 接口和 home 接口主要作用?【基础】

答:remote 接口定义了业务方法,用于 EJB 客户端调用业务方法; home 接口是 EJB 工厂用于创建和移除查找 EJB 实例。

165、客服端口调用 EJB 对象的几个基本步骤?【基础】

答:设置 JNDI 服务工厂以及 JNDI 服务地址系统属性,查找 Home 接口,从 Home 接口调用 Create 方法创建 Remote 接口,通过 Remote 接口调用其业务方法。

166、EJB 的角色和三个对象?【中等难度】

答:一个完整的基于 EJB 的分布式计算结构由六个角色组成,这六个角色可以由 不同的开发商提供,每个角色所作的工作必须遵循 Sun 公司提供的 EJB 规范,以 保证彼此之间的兼容性。这六个角色分别是 EJB 组件开发者(Enterprise Bean Provider) 、应用组合者(Application Assembler)、部署者(Deployer)、 EJB 服务器提供者(EJB Server Provider)、EJB 容器提供者(EJB Container Provider)、系统管理员(System Administrator),这里面,EJB 容器是 EJB之所以能够运行的核心。EJB 容器管理着 EJB 的创建,撤消,激活,去活,与数 据库的连接等等重要的核心工作;三个对象是 Remote(Local)接口、Home (LocalHome)接口,Bean 类。

167、EJB 是基于哪些技术实现的?并说出 SessionBean 和 EntityBean 的区别

StatefulBean 和 StatelessBean 的区别。【中等难度】 答:EJB 包括 Session Bean、Entity Bean、Message Driven Bean,基于 JNDI、 RMI、JTA 等技术实现。 SessionBean 在 J2EE 应用程序中被用来完成一些服务器端的业务操作,例 如访问数据库、调用其他 EJB 组件。EntityBean 被用来代表应用系统中用到的 数据。 对于客户机,SessionBean 是一种非持久性对象,它实现某些在服务器上运 行的业务逻辑。 对于客户机,EntityBean 是一种持久性对象,它代表一个存储在持久性存 储器中的实体的对象视图,或是一个由现有企业应用程序实现的实体。 Session Bean 还可以再细分为 Stateful Session Bean 与 Stateless Session Bean ,这两种的 Session Bean 都可以将系统逻辑放在 method 之中执 行,不同的是 Stateful Session Bean 可以记录呼叫者的状态,因此通常来说, 一个使用者会有一个相对应的 Stateful Session Bean 的实体。Stateless Session Bean 虽然也是逻辑组件,但是他却不负责记录使用者状态,也就是说 当使用者呼叫 Stateless Session Bean 的时候,EJB Container 并不会找寻特 定的 Stateless Session Bean 的实体来执行这个 method。换言之,很可能数 个使用者在执行某个 Stateless Session Bean 的 methods 时,会是同一个 Bean 的 Instance 在执行。从内存方面来看, Stateful Session Bean 与 Stateless Session Bean 比较, Stateful Session Bean 会消耗 J2EE Server 较多的内存,然而 Stateful Session Bean 的优势却在于他可以维持使用者的 状态。

168、bean 实例的生命周期?【中等难度】

答:对于 Stateless Session Bean、Entity Bean、Message Driven Bean 一般 存在缓冲池管理,而对于 Entity Bean 和 Statefull Session Bean 存在 Cache 管理,通常包含创建实例,设置上下文、创建 EJB Object(create)、业务方 法调用、remove 等过程,对于存在缓冲池管理的 Bean,在 create 之后实例并不 从内存清除,而是采用缓冲池调度机制不断重用实例,而对于存在 Cache 管理的 Bean 则通过激活和去激活机制保持 Bean 的状态并限制内存中实例数量。

169、EJB 的激活机制?【中等难度】

答:以 Stateful Session Bean 为例:其 Cache 大小决定了内存中可以同时存 在的 Bean 实例的数量,根据 MRU 或 NRU 算法,实例在激活和去激活状态之间迁 移,激活机制是当客户端调用某个 EJB 实例业务方法时,如果对应 EJB Object 发现自己没有绑定对应的 Bean 实例则从其去激活 Bean 存储中(通过序列化机制 存储实例)回复(激活)此实例。状态变迁前会调用对应的 ejbActive 和 ejbPassivate 方法。

170、EJB 包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理 事务的?

答:SessionBean:Stateless Session Bean 的生命周期是由容器决定的,当客 户机发出请求要建立一个 Bean 的实例时,EJB 容器不一定要创建一个新的 Bean 的实例供客户机调用,而是随便找一个现有的实例提供给客户机。当客户机第一 次调用一个 Stateful Session Bean 时,容器必须立即在服务器中创建一个新 的 Bean 实例,并关联到客户机上,以后此客户机调用 Stateful Session Bean 的 方法时容器会把调用分派到与此客户机相关联的 Bean 实例。EntityBean:Entity Beans 能存活相对较长的时间,并且状态是持续的。只要数据库中的数据存在, Entity beans 就一直存活。而不是按照应用程序或者服务进程来说的。即使 EJB 容器崩溃了,Entity beans 也是存活的。Entity Beans 生命周期能够被容器或 者 Beans 自己管理。EJB 通过以下技术管理事务:对象管理组织(OMG)的对象 实务服务(OTS),Sun Microsystems 的 Transaction Service(JTS)、Java Transaction API(JTA),开发组(X/Open)的 XA 接口。

171、EJB 的事务是如何实现的?何时进行回滚;

答:是通过使用容器或 Bean 自身管理事务的; 当产生一个系统异常时容器就自动回滚事务。

172、EJB 容器提供的服务?

答:主要提供生命周期管理、代码产生、持续性管理、安全、事务管理、锁和并 发行管理等服务。

173、EJB 需直接实现它的业务接口或 Home 接口吗?请简述理由。

答:远程接口和 Home 接口不需要直接实现,他们的实现代码是由服务器产生的, 程序运行中对应实现类会作为对应接口类型的实例被使用。

175、J2EE 是什么?【中等难度】

答:J2EE 是 Sun 公司提出的多层(multi-diered),分布式(distributed),基于组 件(component-base)的企业级应用模型(enterpriese application model).在这 样的一个应用系统中,可按照功能划分为不同的组件,这些组件又可在不同计算 机上,并且处于相应的层次(tier)中。所属层次包括客户层(clietn tier)组 件,web 层和组件,Business 层和组件,企业信息系统(EIS)层。

176、J2EE 是技术还是平台还是框架?【中等难度】

答:J2EE 本身是一个标准,一个为企业分布式应用的开发提供的标准平台; J2EE 也是一个框架,包括 JDBC、JNDI、RMI、JMS、EJB、JTA 等技术。

177、请写出 spring 中 I0C 的三种实现机制。【中等难度】

答:三种机制为:通过 setter 方法注入、通过构造方法注入和接口注入。

178、写出你熟悉的开源框架以及各自的作用。【中等难度】

答:框架:hibernate、spring、struts; Hibernate 主要用于数据持久化; Spring 的控制反转能起到解耦合的作用; Struts 主要用于流程控制。

179、EJB 规范规定 EJB 中禁止的操作有哪些?【较难】

1)不能操作线程和线程 API(线程 API 指非线程对象的方法,如 notify,wait 等);
2)不能操作 awt;
3)不能实现服务器功能;
4)不能对静态属性存取;
5)不能使用 IO 操作直接存取文件系统;
6)不能加载本地库;
7)不能将 this 作为变量和返回;
8)不能循环调用。

发布了33 篇原创文章 · 获赞 50 · 访问量 2673

猜你喜欢

转载自blog.csdn.net/qq_43107323/article/details/103692942