jsp及Servlet面试题.docx
《jsp及Servlet面试题.docx》由会员分享,可在线阅读,更多相关《jsp及Servlet面试题.docx(17页珍藏版)》请在冰豆网上搜索。
jsp及Servlet面试题
jsp及Servlet面试题
2007-10-1123:
07
jsp及Servlet面试题
2007年10月11日星期四09:
34
1、jsp有哪些内置对象作用分别是什么
答:
JSP共有以下9种基本内置组件(可与ASP的6种内部组件相对应):
request用户端请求,此请求会包含来自GET/POST请求的参数
response网页传回用户端的回应
`pageContext网页的属性是在这里管理
session与请求有关的会话期
applicationservlet正在执行的内容
out用来传送回应的输出
configservlet的构架部件
pageJSP网页本身
exception针对错误网页,未捕捉的例外
2、jsp有哪些动作作用分别是什么
答:
JSP共有以下6种基本动作
jsp:
include:
在页面被请求的时候引入一个文件。
jsp:
useBean:
寻找或者实例化一个JavaBean。
jsp:
setProperty:
设置JavaBean的属性。
jsp:
getProperty:
输出某个JavaBean的属性。
jsp:
forward:
把请求转到一个新的页面。
jsp:
plugin:
根据浏览器类型为Java插件生成OBJECT或EMBED标记
3、JSP中动态INCLUDE与静态INCLUDE的区别?
答:
动态INCLUDE用jsp:
include动作实现
它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数
静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面
4、两种跳转方式分别是什么有什么区别
答:
有两种,分别为:
前者页面不会转向include所指的页面,只是显示该页的结果,主页面还是原来的页面。
执行完后还会回来,相当于函数调用。
并且可以带参数.后者完全转向新页面,不会再回来。
相当于goto语句。
57、JSP的内置对象及方法。
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实例
二、JSP&Servlet技术
1.描述JSP和Servlet的区别、共同点、各自应用的范围
2.在Web开发中需要处理HTML标记时,应做什么样的处理,要筛选那些字符(<>&“”)
3.在JSP中如何读取客户端的请求,如何访问CGI变量,如何确定某个Jsp文件的真实路径。
4.描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理。
5.列出Jsp中包含外部文件的方式,两者有何区别。
6.说明Jsp中errorPage的作用,应用范围。
7.介绍在Jsp中如何使用JavaBeans。
8.简单介绍JSP的标记库
9.Jsp和Servlet中的请求转发分别如何实现。
59、JSP的常用指令
isErrorPage(是否能使用Exception对象),isELIgnored(是否忽略表达式)
60、什么情况下调用doGet()和doPost()?
Jsp页面中的form标签里的method属性为get时调用doGet(),为post时调用doPost()。
61、servlet的生命周期
web容器加载servlet,生命周期开始。
通过调用servlet的init()方法进行servlet的初始化。
通过调用service()方法实现,根据请求的不同调用不同的do***()方法。
结束服务,web容器调用servlet的destroy()方法。
62、如何现实servlet的单线程模式
<%@pageisThreadSafe="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否是代表与一个页面相关的对象和属性。
一个页面由一个编译好的Javaservlet类(可以带有任何的include指令,但是没有include动作)表示。
这既包括servlet又包括被编译成servlet的JSP页面
request是是代表与Web客户机发出的一个请求相关的对象和属性。
一个请求可能跨越多个页面,涉及多个Web组件(由于forward指令和include动作的关系)
session是代表与用于某个Web客户机的一个用户体验相关的对象和属性。
一个Web会话可以也经常会跨越多个客户机请求
application是是代表与整个Web应用程序相关的对象和属性。
这实质上是跨越整个Web应用程序,包括多个页面、请求和会话的一个全局作用域
66、Request对象的主要方法:
setAttribute(Stringname,Object):
设置名字为name的request的参数值
getAttribute(Stringname):
返回由name指定的属性值
getAttributeNames():
返回request对象所有属性的名字集合,结果是一个枚举的实例
getCookies():
返回客户端的所有Cookie对象,结果是一个Cookie数组
getCharacterEncoding():
返回请求中的字符编码方式
getContentLength():
返回请求的Body的长度
getHeader(Stringname):
获得HTTP协议定义的文件头信息
getHeaders(Stringname):
返回指定名字的requestHeader的所有值,结果是一个枚举的实例
getHeaderNames():
返回所以requestHeader的名字,结果是一个枚举的实例
getInputStream():
返回请求的输入流,用于获得请求中的数据
getMethod():
获得客户端向服务器端传送数据的方法
getParameter(Stringname):
获得客户端传送给服务器端的有name指定的参数值
getParameterNames():
获得客户端传送给服务器端的所有参数的名字,结果是一个枚举的实例
getParameterValues(Stringname):
获得有name指定的参数的所有值
getProtocol():
获取客户端向服务器端传送数据所依据的协议名称
getQueryString():
获得查询字符串
getRequestURI():
获取发出请求字符串的客户端地址
getRemoteAddr():
获取客户端的IP地址
getRemoteHost():
获取客户端的名字
getSession([Booleancreate]):
返回和请求相关Session
getServerName():
获取服务器的名字
getServletPath():
获取客户端所请求的脚本文件的路径
getServerPort():
获取服务器的端口号
removeAttribute(Stringname):
删除请求中的一个属性
67.在jsp:
useBean语法中使用beanName有何好处?
beanName使用Beans.instantiate()初始化Bean
68、Servlet执行时一般实现哪几个方法?
publicvoidinit(ServletConfigconfig)
publicServletConfiggetServletConfig()
publicStringgetServletInfo()
publicvoidservice(ServletRequestrequest,ServletResponseresponse)
publicvoiddestroy()JSP
1、如何混合使用Jsp和SSI#include?
在JSP中可以使用如下方式包含纯HTML:
--#includefile="data.inc"-->
但是如果data.inc中包含JSPCODE,我们可以使用:
<%@includefile="data.inc"%>
2、如何执行一个线程安全的JSP?
只需增加如下指令
<%@pageisThreadSafe="false"%>
3、JSP如何处理HTMLFORM中的数据?
通过内置的request对象即可,如下:
<%
Stringitem=request.getParameter("item");
inthowMany=newInteger(request.getParameter("units")).intValue();
%>
4、在JSP如何包含一个静态文件?
静态包含如下:
<%@includefile="copyright.html"%>
动态包含如下:
includepage="copyright.html"flush="true"/>
5、在JSP中如何使用注释?
主要有四中方法:
1。
<%--与--%>
2。
//
3。
/**与**/
4。
--与-->
6、在JSP中如何执行浏览重定向?
使用如下方式即可:
response.sendRedirect("
也能物理地改变HTTPHEADER属性,如下:
<%
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
StringnewLocn="/newpath/index.html";
response.setHeader("Location",newLocn);
%>
7、如何防止在JSP或SERVLET中的输出不被BROWSER保存在CACHE中?
把如下脚本加入到JSP文件的开始即可:
<%
response.setHeader("Cache-Control","no-store");//HTTP1.1
response.setHeader("Pragma","no-cache");//HTTP1.0
response.setDateHeader("Expires",0);//preventscachingattheproxyserver
%>
8、在JSP中如何设置COOKIE?
COOKIE是作为HTTPHEADER的一部分被发送的,如下方法即可设置:
<%
Cookiemycookie=newCookie("aName","aValue");
response.addCookie(mycookie);
%>
9、在JSP中如何删除一个COOKIE?
<%
CookiekillMyCookie=newCookie("mycookie",null);
killMyCookie.setMaxAge(0);
killMyCookie.setPath("/");
response.addCookie(killMyCookie);
%>
10、在一个JSP的请求处理中如何停止JSP的执行
如下例:
<%
if(request.getParameter("wen")!
=null){
//dosomething
}else{
return;
}
%>
11、在JSP中如何定义方法
你可以定义方法,但是你不能直接访问JSP的内置对象,而是通过参数的方法传递。
如下:
<%!
publicStringhowBadFrom(HttpServletRequestreq){
HttpSessionses=req.getSession();
...
returnreq.getRemoteHost();
}
%>
<%
out.print("ingeneral,laoleeisnotbaddie");
%>
<%=howBadFrom(request)%>
12、如果BROWSER已关闭了COOKIES,在JSP中我如何打开SESSION来跟踪
使用URL重写即可,如下:
hello1.jsp
<%@pagesession="true"%>
<%
Integernum=newInteger(100);
session.putValue("num",num);
Stringurl=response.encodeURL("hello2.jsp");
%>
>hello2.jsphello2.jsp
<%@pagesession="true"%>
<%
Integeri=(Integer)session.getValue("num");
out.println("Numvalueinsessionis"+i.intValue());
%>
13、在JSP中能发送EMAIL吗
可以使用SUN的专用包:
.smtp包。
如下脚本使用SmtpClient类发送EMAIL。
<%@pageimport=".smtp.SmtpClient,java.io.*"%>
<%
Stringfrom="ybwen@";
Stringto="hewenjun@,lei@";
try{
SmtpClientclient=newSmtpClient("mail.xxxxx.xxx");
client.from(from);
client.to(to);
PrintStreammessage=client.startMessage();
message.println("To:
"+to);
message.println("Subject:
SendingemailfromJSP!
");
message.println("ThiswassentfromaJSPpage!
");
message.println();
message.println("Cool!
:
-)");
message.println();
message.println("GoodBoy");
message.println("Imin");
message.println();
client.closeServer();
}
catch(IOExceptione){
System.out.println("ERRORSENDINGEMAIL:
"+e);
}
%>
14、在SERVLET中我能调用一个JSP错误页吗
当然没问题,如下展示了如何在一个SERVLET控制逻辑单元内调用一个JSP错误页面。
protectedvoidsendErrorRedirect(HttpServletRequestrequest,
HttpServletResponseresponse,StringerrorPageURL,
Throwablee)
throwsServletException,IOException{
request.setAttribute("javax.servlet.jsp.jspException",e);
getServletConfig().getServletContext().
getRequestDispatcher(errorPageURL).forward(request,
response);
}publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse){
try{
//dosomething
}catch(Exceptionex){
try{
sendErrorRedirect(request,response,"/jsp/MyErrorPage.jsp",ex);
}catch(Exceptione){
e.printStackTrace();
}
}
}
15、JSP和APPLET如何通讯
JSP如何与EJBSessionBean通讯
下面的代码段作了很好的示范
<%@pageimport="javax.naming.*,javax.rmi.PortableRemoteObject,
foo.AccountHome,foo.Account"%>
<%!
//定义一个对SessionBeanHome接口实例的全局引用
AccountHomeaccHome=null;publicvoidjspInit(){
//获得Home接口实例
InitialContextcntxt=newInitialContext();
Objectref=cntxt.lookup("java:
comp/env/ejb/AccountEJB");
accHome=(AccountHome)PortableRemoteObject.narrow(ref,AccountHome.class);
}
%>
<%
//实例化SessionBean
Accountacct=accHome.create();
//调用远程方法
acct.doWhatever(...);
//如此等等
%>
16、当我使用一个结果集时,如何防止字段为"null"的字域显示在我的HTML输入文本域中?
可以定义一个简单的函数来达到目的,如下:
<%!
Stringblanknull(Strings){
return(s==null)?
"":
s;
}
%>然后在JSP的FORM中,可以这样使用
">
17、如何中SERVLET或JSP下载一个文件(如:
binary,text,executable)?
现提供两个解决方案:
A:
使用HTTP,
B:
在Servlet中,通过设置ContentType和使用java.io包的Stream等类可作到.例如:
response.setContentType("application/x-msword");
然后想输出缓冲中写一些东东即可。
18、使用useBean标志初始化BEAN时如何接受初始化参数
使用如下两标签即可:
getPropertyname="wenBean"property="someProperty"/>
setPropertyname="wenBean"property="someProperty"value="someValue"/>19、使用JSP如何获得客户浏览器的信息?
使用request.getHeader(String)即可
20、能象调用子程序一样调用JSP吗?
当然可以,用includepage="relativeURL"flush="true"/>
21、当我重编译我的JSP使用的一个类后,为什么JVM继续使用我的老CLASS?
<%@includefile="abc.jsp"%>与includepage="abc.jsp"/>之间的差别?
前一个为静态包含,而后一个为动态包含
22、JSP的缺点?
1。
对JAVA程序进行调试没有好东东
2。
因大多数的servlet引擎不支持connectionpooling
3。
Servlet引擎没有标准
4。
JSP与其它脚本语言的交互
23、JSP能进行递归调用吗?
当然可以,如对form的提交给本页
24、如何实现JSP的国际化?
为各种版本提供resourcebundles属性文件即可
25、在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());
}
%>
26、如何在JSP中包括绝对路径文件?
使用URLConnection即可。
27、在servlets和JSP之间能共享session对象吗?
当然可以,
HttpSessionsession=request.getSession(true);
session.putValue("variable","value");
28、JavaScript的变量能复制到JSP的SESSION中吗?
29、如何设置cookie在某一时间后过期?
用Cookie.setMaxAge(int)
30、如何获得当前的s