javaweb面试题.docx
- 文档编号:8891267
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:12
- 大小:27.79KB
javaweb面试题.docx
《javaweb面试题.docx》由会员分享,可在线阅读,更多相关《javaweb面试题.docx(12页珍藏版)》请在冰豆网上搜索。
javaweb面试题
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(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException Service(Requestrequest,Responseresponse)调用的一个立即方法,带有指定HTTP请求和响应。
此方法实际上将请求导向doGet()、doPost()等等。
不应该覆盖此方法。
Voidservice(Requestrequest,Responseresponse)throwsServletException,IOException 将请求和响应对象置入其指定的HTTP子类,并调用指定HTTP的service()方法。
18、XML文档定义有几种形式?
它们之间有何本质区别?
解析XML文档有哪几种方式?
a:
两种形式dtdschema,
b:
本质区别:
schema本身是xml的,可以被XML解析器解析(这也是从DTD上发展schema的根本目的)。
c:
有DOM,SAX,STAX等
DOM:
处理大型文件时其性能下降的非常厉害。
这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存,适合对XML的随机访问;SAX:
不现于DOM,SAX是事件驱动型的XML解析方式。
它顺序读取XML文件,不需要一次全部装载整个文件。
当遇到像文件开头,文档结束,或者标
签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文件,适合对XML的顺序访问
STAX:
StreamingAPIforXML(StAX)
19、你在项目中用到了xml技术的哪些方面?
如何实现的?
用到了数据存贮,信息配置两方面。
在做数据交换平台时,将不能数据源的数据组装成XML文件,然后将XML文件压缩打包加密后通过网络传送给接收者,接收解密与解压缩后再同XML文件中还原相关信息进行处理。
在做软件配置时,利用XML可以很方便的进行,软件的各种配置参数都存贮在XML文件中。
20、说说JSP内置对象包含几部分,九大内置对象及其作用。
21.JSP乱码问题,post提交数据和get(url)传值,如何处理乱码问题。
1、jsp和servlet的区别、共同点、各自应用的范围?
?
JSP是Servlet技术的扩展,本质上就是Servlet的简易方式。
JSP编译后是“类servlet”。
Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。
而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。
JSP侧重于视图,Servlet主要用于控制逻辑。
在struts框架中,JSP位于MVC设计模式的视图层,而Servlet位于控制层.
2、cookie和session的作用、区别、应用范围,session的工作原理?
?
?
Cookie:
主要用在保存客户端,其值在客户端与服务端之间传送,不安全,存储的数据量有限。
Session:
保存在服务端,每一个session在服务端有一个sessionID作一个标识。
存储的数据量大,安全性高。
占用服务端的内存资源。
3、jstl是什么?
优点有哪些?
?
JSTL(JSPStandard Tag Library ,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,由四个定制标记库(core、format、xml和sql)和一对通用标记库验证器(ScriptFreeTLV和PermittedTaglibsTLV)组成。
优点有:
1、在应用程序服务器之间提供了一致的接口,最大程序地提高了WEB应用在各应用服务器之间的移植。
2、简化了JSP和WEB应用程序的开发。
3、以一种统一的方式减少了JSP中的scriptlet代码数量,可以达到没有任何scriptlet代码的程序。
在我们公司的项目中是不允许有任何的scriptlet代码出现在JSP中。
4、允许JSP设计工具与WEB应用程序开发的进一步集成。
相信不久就会有支持JSTL的IDE开发工具出现。
4、j2ee的优越性主要表现在哪些方面?
MVC模式
a、J2EE基于JAVA技术,与平台无关
b、J2EE拥有开放标准,许多大型公司实现了对该规范支持
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- javaweb 试题
![提示](https://static.bdocx.com/images/bang_tan.gif)