常见的JavaWeb(J2EE)面试试题及答案_第1页
常见的JavaWeb(J2EE)面试试题及答案_第2页
常见的JavaWeb(J2EE)面试试题及答案_第3页
常见的JavaWeb(J2EE)面试试题及答案_第4页
常见的JavaWeb(J2EE)面试试题及答案_第5页
已阅读5页,还剩6页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本文格式为Word版,下载可任意编辑第第页常见的JavaWeb(J2EE)面试试题及答案常见的JavaWeb(J2EE)面试试题及答案

1、JSP页面是如何被执行的?JSP执行效率比Servlet低吗?

当客户端向一个JSP页面发出请求时,WebContainer将JSP转化成Servlet的源代码(只在第一次请求时),然后编译转化后的Servlet并加载到内存中执行,执行的结果Response到客户端。

JSP只在第一次执行的时候会转化为Servlet,以后每次执行Web容器都是直接执行编译后的Servlet,所以JSP和Servlet只是在第一次执行的时候不一样,JSP慢一点,以后的执行都是相同的。

2、JSP如何处理运行时异样(run-time)exceptions?

可以使用页面的errorPage属性捕获没有处理的运行时异样,然后自动转向到一个错误处理页面,代码如下:

%@pageerrorPage='error.jsp'%

假如在页面请求时出现运行时异样是,以上代码会把页面转向到JSP页面error.jsp,在error.jsp里面,可以通过以下代码定义这个页面是错误处理页:

%@pageisErrorPage='true'%

这样描述错误信息的Throwable对象就可以在error.jsp页面里面访问到。

3、假如jsp表单元素的值为空,如何避开null出如今页面上?

可以写一个简洁的函数对空值进行处理,推断值是否为空,假如是空就返回空字符串。实例代码如下:

%!Stringblanknull(Strings){return(s==null)?"':s;}%

在你的JSP里面,可以使用以上函数输出文本框或者其他页面元素的值,实例代码如下:

4、如何避开JSP页面自动生成session对象?为什么要这么做?

在默认状况下,在对一个JSP页面发出请求时,假如session还没有建立,JSP页面会自动为请求建立一个session对象,但是session是比较消耗资源的,假如没必要保持和使用session,就不应当创建session,例如一些只是用来宣扬产品的网站,往往没必要使用session来保存信息,可以使用jsp页面指令session='false'来避开JSP页面为每个请求都自动创建session.实例代码如下:

%@pagesession='false'

5、在servlets和JSP之间能共享session对象吗?

当然可以,

HttpSessionsession=request.getSession(true);

session.putValue('variable','value');

6、Servlet都有哪些方法?主要作用是什么?

HttpServlet类包含init()、destroy()、service()等方法。其中init()和destroy()方法是继承的。

(1)init()方法

在Servlet的生命期中,仅执行一次init()方法。它是在服务器装入Servlet时执行的。可以配置服务器,以在启动服务器或客户机首次访问Servlet时装入Servlet。无论有多少客户机访问Servlet,都不会重复执行init()。

缺省的init()方法通常是符合要求的,但也可以用定制init()方法来覆盖它,典型的是管理服务器端资源。例如,可能编写一个定制init()来只用于一次装入GIF图像,改进Servlet返回GIF图像和含有多个客户机请求的性能。另一个示例是初始化数据库连接。缺省的init()方法设置了Servlet的初始化参数,并用它的ServletConfig对象参数来启动配置,因此全部覆盖init()方法的Servlet应调用super.init()以确保照旧执行这些任务。在调用service()方法之前,应确保已完成了init()方法。

(2)service()方法

service()方法是Servlet的核心。每当一个客户请求一个HttpServlet对象,该对象的service()方法就要被调用,而且传递给这个方法一个"请求'(ServletRequest)对象和一个"响应'(ServletResponse)对象作为参数。在HttpServlet中已存在service()方法。缺省的服务功能是调用与HTTP请求的方法相应的do功能。例如,假如HTTP请求方法为GET,则缺省状况下就调用doGet()。Servlet应当为Servlet支持的HTTP方法覆盖do功能。因为HttpServlet.service()方法会检查请求方法是否调用了适当的处理方法,不必要覆盖service()方法。只需覆盖相应的do方法就可以了。

=当一个客户通过HTML表单发出一个HTTPPOST请求时,doPost()方法被调用。与POST请求相关的参数作为一个单独的HTTP请求从浏览器发送到服务器。当需要修改服务器端的数据时,应当使用doPost()方法。

=当一个客户通过HTML表单发出一个HTTPGET请求或直接请求一个URL时,doGet()方法被调用。与GET请求相关的参数添加到URL的后面,并与这个请求一起发送。当不会修改服务器端的数据时,应当使用doGet()方法。

Servlet的响应可以是以下几种类型:

一个输出流,浏览器根据它的内容类型(如text/HTML)进行解释。

一个HTTP错误响应,重定向到另一个URL、servlet、JSP。

(3)destroy()方法

destroy()方法仅执行一次,即在服务器停止且卸装Servlet时执行该方法。典型的,将Servlet作为服务器进程的一部分来关闭。缺省的destroy()方法通常是符合要求的`,但也可以覆盖它,典型的是管理服务器端资源。例如,假如Servlet在运行时会累计统计数据,则可以编写一个destroy()方法,该方法用于在未装入Servlet时将统计数字保存在文件中。另一个示例是关闭数据库连接。

当服务器卸装Servlet时,将在全部service()方法调用完成后,或在指定的时间间隔过后调用destroy()方法。一个Servlet在运行service()方法时可能会产生其它的线程,因此请确认在调用destroy()方法时,这些线程已终止或完成。

(4)GetServletConfig()方法

GetServletConfig()方法返回一个ServletConfig对象,该对象用来返回初始化参数和ServletContext。ServletContext接口提供有关servlet的环境信息。

(5)GetServletInfo()方法

GetServletInfo()方法是一个可选的方法,它提供有关servlet的信息,如、版本、版权。

当服务器调用sevlet的Service()、doGet()和doPost()这三个方法时,均需要"请求'和"响应'对象作为参数。"请求'对象提供有关请求的信息,而"响应'对象提供了一个将响应信息返回给浏览器的一个通信途径。javax.servlet软件包中的相关类为ServletResponse和ServletRequest,而javax.servlet.http软件包中的相关类为HttpServletRequest和HttpServletResponse。Servlet通过这些对象与服务器通信并最终与客户机通信。Servlet能通过调用"请求'对象的方法获知客户机环境,服务器环境的信息和全部由客户机提供的信息。Servlet可以调用"响应'对象的方法发送响应,该响应是预备发回客户机的。

7、JavaServlet的主要功能和作用是什么?

Servlet通过创建一个框架来扩展服务器的能力,以提供在Web上进行请求和响应服务。当客户机发送请求至服务器时,服务器可以将请求信息发送给Servlet,并让Servlet建立起服务器返回给客户机的响应。当启动Web服务器或客户机第一次请求服务时,可以自动装入Servlet。装入后,Servlet继续运行直到其它客户机发出请求。Servlet的功能涉及范围很广。例如,Servlet可完成如下功能:

(1)创建并返回一个包含基于客户请求性质的动态内容的完好的HTML页面。

(2)创建可嵌入到现有HTML页面中的一部分HTML页面(HTML片段)。

(3)与其它服务器资源(包括数据库和基于Java的应用程序)进行通信。

(4)用多个客户机处理连接,接收多个客户机的输入,并将结果广播到多个客户机上。例如,Servlet可

以是多参与者的游戏服务器。

(5)当允许在单连接方式下传送数据的状况下,在浏览器上打开服务器至applet的新连接,并将该连

接保持在打开状态。当允许客户机和服务器简洁、高效地执行会话的状况下,applet也可以启动客户浏览器和服务器之间的连接。可以通过定制协议或标准(如IIOP)进行通信。

(6)对特殊的处理接受MIME类型过滤数据,例如图像转换和服务器端包括(SSI)。

(7)将定制的处理提供给全部服务器的标准例行程序。例如,Servlet可以修改如何认证用户。

8、Request对象的主要方法有哪些?

setAttribute(Stringname,Object):设置名字为name的request的参数值

getAttribute(Stringname):返回由name指定的属性值

getAttributeNames():返回request对象全部属性的名字集合,结果是一个枚举的实例

getCookies():返回客户端的全部Cookie对象,结果是一个Cookie数组

getCharacterEncoding():返回请求中的字符编码方式

getContentLength():返回请求的Body的长度

实例

getInputStream():返回请求的输入流,用于获得请求中的数据

getMethod():获得客户端向服务器端传送数据的方法

getParameter(Stringname):获得客户端传送给服务器端的有name指定的参数值

getParameterNames():获得客户端传送给服务器端的全部参数的名字,结果是一个枚举的实例

getParameterValues(Stringname):获得有name指定的参数的全部值

getProtocol():获取客户端向服务器端传送数据所依据的协议名称

getQueryString():获得查询字符串

getRequestURI():获取发出请求字符串的客户端地址

getRemoteAddr():获取客户端的IP地址

getRemoteHost():获取客户端的名字

getSession([Booleancreate]):返回和请求相关Session

getServerName():获取服务器的名字

getServletPath():获取客户端所请求的脚本文件的路径

getServerPort():获取服务器的端口号

removeAttribute(Stringname):删除请求中的一个属性

9、使用JSP连接到数据库连接缓冲池的最好方法是什么?

1.使用JDBC2。0中带有此服务的Driver

2.使用提供有此服务的Applicationserver

3.自己写

10、在JSP中如何写文本文件?

使用PrintWriter对象,如:

%@pageimport='java.io.*'%

%Stringstr="printme';StringnameOfTextFile="/usr/anil/imp.txt';try{PrintWriterpw=newPrintWriter(newFileOutputStream(nameOfTextFile));pw.println(str);pw.close();}catch(IOExceptione){out.println(e.getMessage());}%

11、JSP的缺点?

1.对JAVA程序进行调试没有好东东

2.因大多数的servlet引擎不支持connectionpooling

3.Servlet引擎没有标准

4.JSP与其它脚本语言的交互

12、在JSP中如何删除一个COOKIE?

%CookiekillMyCookie=newCookie('mycookie',null);killMyCookie.setMaxAge(0);killMyCookie.setPath('/');response.addCookie(killMyCookie);%

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

%@pageisThreadSafe='false'%

14、说出Servlet和CGI的区分?

与cgi的区分在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。

15、Servlet的生命周期?

Servlet是一种可以在Servlet容器中运行的组件,那么理所当然就应当有一个从创建到销毁的过程,这个过程我们可以称之为Servlet生命周期。Servlet的生命周期可以分为加载、实例化、初始化、处理客户请求和卸载五个阶段,表达在方法上主要是init()、service()和destroy()三个方法。生命周期的具体说明如下:

Servlet容器完成加载Servlet类和实例化一个Servlet对象

init()方法完成初始化工作,该方法由Servlet容器调用完成

service()方法处理客户端请求,并返回响应结果

destroy()方法在Servlet容器卸载Servlet之前被调用,释放一些资源

16、介绍一下javax.servlet.Servlet接口及其主要方法?

Servlet接口的主要作用是提供Servlet生命周期的init()、service()和destroy()方法。

servlet接口中的主要方法有:

voidinit(ServletConfitconfig)throwsServletException

在servlet被载入后和实施服务前由servlet引擎进行一次性调用。假如init()产生溢出UnavailableException,则servle退出服务。

ServletConfiggetServletConfig()

返回传递到servlet的init()方法的ServletConfig对象

voidservice(ServletRequestrequest,ServletResponseresponse)throwsServletException,IOException

处理request对象中描述的请求,使用response对象返回请求结果

StringgetServletInfo()

返回描述servlet的一个字符串

voiddestory()

当servlet将要卸载时由servlet引擎调用,销毁Servlet实例。

17、HttpServlet类中的主要方法都有哪些?各自的作用是什么?

HttpServlet的主要方法有doGet,doPost,doPut,doDelete,doTrace等等

VoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException

由servlet引擎调用用处理一个HTTPGET请求。输入参数、HTTP头标和输入流可从request对象、response头标和response对象的输出流中获得。

VoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException

由servlet引擎调用用处理一个HTTPPOST请求。输入参数、HTTP头标和输入流可从request对象、response头标和response对象的输出流中获得。

VoiddoPut(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException

由servlet引擎调用用处理一个HTTPPUT请求。本方法中请求URI指出被载入的文件位置。

VoiddoDelete(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException

由servlet引擎调用用处理一个HTTPDELETE请求。请求URI指出资源被删除。

VoiddoOptions(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException

由servlet引擎调用用处理一个HTTPOPTIONS请求。返回一个Allow响应头标说明此servlet支持的HTTP方法。一个servlet不需要覆盖此方法,因为HttpServlet方法已经实现规范所需的功能。

VoiddoTrace(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException

由servlet引擎调用用处理一个HTTPTRACE请求。使得请求头标被反馈成响应关标。一个servlet不需要覆盖此方法,因为HttpServlet方法已经实现HTTP规范所需的功能。

Voidservice

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论