JavaWeb期末考试题必过宝典.docx
《JavaWeb期末考试题必过宝典.docx》由会员分享,可在线阅读,更多相关《JavaWeb期末考试题必过宝典.docx(67页珍藏版)》请在冰豆网上搜索。
![JavaWeb期末考试题必过宝典.docx](https://file1.bdocx.com/fileroot1/2023-8/3/8c707492-931c-4b06-a352-71c69901aa2a/8c707492-931c-4b06-a352-71c69901aa2a1.gif)
JavaWeb期末考试题必过宝典
JAVAWEB
期末考试必过宝典
版权所有·简圣光
JavaWeb考试题
1、说出Servlet的生命周期,并说出Servlet和CGI的区别?
【基础】
答:
Web容器加载Servlet并将其实例化后,Servlet生命周期开始,容器运行
其init方法进行Servlet的初始化,请求到达时运行其service方法,service
方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决
定将实例销毁的时候调用其destroy方法。
与cgi的区别在于servlet处于服务
器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请
求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后
就销毁,所以效率上低于servlet。
2、Servlet的基本架构。
【基础】
答:
publicclassServletNameextendsHttpServlet{
publicvoiddoPost(HttpServletRequestrequest,
HttpServletResponseresponse)
throwsServletException,IOException{
}
publicvoiddoGet(HttpServletRequestrequest,
HttpServletResponseresponse)
throwsServletException,IOException{
}
}
4、JSP中动态INCLUDE与静态INCLUDE的区别?
【基础】
答:
动态INCLUDE用jsp:
include动作实现〈jsp:
includepage="included.jsp”
flush="true"/〉它总是会检查所含文件中的变化,适合用于包含动态页面,并
且可以带参数;静态INCLUDE用include伪码实现,它不会检查所含文件的变化,
适用于包含静态页面<%@includefile="included。
htm”%>
6、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
可以存贮用户的状态信息。
application表示一个javax.servle.ServletContext对象.这有助于查找
有关servlet引擎和servlet环境的信息。
config表示一个javax.servlet。
ServletConfig对象。
该对象用于存取
servlet实例的初始化参数.
page表示从该页面产生的一个servlet实例。
7、JSP的常用指令?
【基础】
答:
<%@pagelanguage=”java"contenType=”text/html;charset=gb2312”
session=”true”buffer="64kb”autoFlush=”true”isThreadSafe=”true”
info=”text”errorPage=”error。
jsp”isErrorPage=”true”isELIgnored=”
true"pageEncoding=”gb2312”import=”java.sql.*"%>
isErrorPage:
是否能使用Exception对象;isELIgnored:
是否忽略EL表达式;
〈%@includefile="filename”%>
〈%@taglibprefix=”c”uri=”http:
//……"%>
8、jsp有哪些动作?
作用分别是什么?
【基础】
答:
JSP共有以下6种基本动作:
jsp:
include:
在页面被请求的时候引入一个文件;
jsp:
useBean:
寻找或者实例化一个JavaBean。
;
jsp:
setProperty:
设置JavaBean的属性。
;
jsp:
getProperty:
输出某个JavaBean的属性;
jsp:
forward:
把请求转到一个新的页面;
jsp:
plugin:
根据浏览器类型为Java插件生成OBJECT或EMBED标记.
9、jsp有哪些内置对象?
作用分别是什么?
【基础】
答:
JSP共有以下9种基本内置组件(可与ASP的6种内部组件相对应):
request:
用户端请求,此请求会包含来自GET/POST请求的参数;
response:
网页传回用户端的回应;
pageContext:
网页的属性是在这里管理;
session:
与请求有关的会话期;
application:
servlet正在执行的内容;
out:
用来传送回应的输出;
config:
servlet的构架部件;
page:
JSP网页本身;
exception:
针对错误网页,未捕捉的例外.
10、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的默认方法。
11、什么情况下调用doGet()和doPost()?
【基础】
答:
Jsp页面中的form标签里的method属性为get时调用doGet(),为post
时调用doPost()。
12、如何从form表单中得取checkbox的值;【基础】
答:
可在页面把checkbox的name属性取同一个,value属性取每个条目的id,
后台用getParamter(“name”)能取到checkbox的一组值。
13、页面中有一个命名为bankNo的下拉列表,写脚本获取当前选项的索引值。
答:
用java或javaScript的处理方式分别如下:
Java:
request.getParameter(“bankNo");
javaScript:
varselectItems=document。
getElementsByName(“bankNo”);
selectItems[0]。
value;
14、javascript常用的方面;【基础】
答:
常用于数据输入校验和页面特殊效果等。
15、常用的web容器和开发工具;【基础】
答:
最常用的容器包括:
tomcat、weblogic;
开发工具有:
eclipse,jbuilder。
16、请画出Servlet2.2以上WebApplication的基本目录结构(2分钟)
答:
目录结构如下图所示:
webapps
|
Applocation
|
__________________
||
JSP页面WEB-INF
|
___________________
|||
classeslibweb.xml
1.17、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?
有servlet为什么还要jsp?
答:
JSP是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的
外表表达。
JSP编译后是”类servlet"。
Servlet和JSP最主要的不同点在于,
Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。
而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。
JSP侧重于
视图,Servlet主要用于控制逻辑。
jsp在其内容显示上更好,servlet在逻辑处理更据优越性,JSP是显示层的。
重在显示.Servelt是控制层的,重在业务逻辑。
可以降低耦合、有利于分工。
18、jsp的四种范围?
【基础】
答:
a.page是代表与一个页面相关的对象和属性.一个页面由一个编译好的
Javaservlet类(可以带有任何的include指令,但是没有include动作)
表示。
这既包括servlet又包括被编译成servlet的JSP页面
b.request是代表与Web客户机发出的一个请求相关的对象和属性。
一个
请求可能跨越多个页面,涉及多个Web组件(由于forward指令和include动
作的关系)
c.session是代表与用于某个Web客户机的一个用户体验相关的对象和属
性。
一个Web会话可以也经常会跨越多个客户机请求
d。
application是代表与整个Web应用程序相关的对象和属性。
这实质上
是跨越整个Web应用程序,包括多个页面、请求和会话的一个全局作用域.
19、Request对象的主要方法?
【基础】
答:
setAttribute(Stringname,Object):
设置名字为name的属性值
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):
删除请求中的一个属性
20、如何实现servlet的单线程模式?
【基础】
答:
<%@pageisThreadSafe=”false”%〉
21、页面间对象传递的方法.【基础】
答:
request,session,application,cookie等。
22、详细描述MVC。
【基础】
答:
基于Java的Web应用系统采用MVC架构模式,即model(模型)、view(视
图)、control(控制)分离设计;这是目前WEB应用服务系统的主流设计方向.
Model:
即处理业务逻辑的模块,每一种处理一个模块;
View:
负责页面显示,显示MODEL处理结果给用户,主要实现数据到页面转
换过程;
Control:
负责每个请求的分发,把FORM数据传递给MODEL处理,把处理结
果的数据传递给VIEW显示。
23、MVC的各个部分都有那些技术来实现?
如何实现?
【基础】
答:
MVC是Model-View-Controller的简写。
"Model”代表的是应用的业务逻
辑(通过JavaBean,EJB组件实现),"View"是应用的表示面(由JSP页面产
生),"Controller”是提供应用的处理过程控制(一般是一个Servlet),通
过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。
这些组
件可以进行交互和重用。
24、应用服务器有那些?
【基础】
答:
BEAWebLogicServer,IBMWebSphereApplicationServer,Oracle9i
ApplicationServer,JBoss,Tomcat。
25、Servlet执行时一般实现哪几个方法?
【基础】
答:
publicvoidinit(ServletConfigconfig)
publicServletConfiggetServletConfig()
publicStringgetServletInfo()
publicvoidservice(ServletRequestrequest,ServletResponse
response)
publicvoiddestroy()
28、几种会话跟踪技术?
【基础】
答:
cookie、URL重写、设置表单隐藏域。
29、BS与CS的联系与区别?
【基础】
答:
C/S是Client/Server的缩写,是客户机与服务器结构的应用程序,服务器
通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle、
Sybase、Informix或SQLServer.客户端需要安装专用的客户端软件。
B/S是
Brower/Server的缩写,是浏览器和服务器结构的应用程序,即Web应用程序,
客户机上只要安装一个浏览器(Browser),如NetscapeNavigator或Internet
Explorer,服务器安装Oracle、Sybase、Informix或SQLServer等数据库。
在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,
但是主要事务逻辑在服务器端实现.浏览器通过WebServer同数据库进行数据
交互。
C/S与B/S区别:
1)硬件环境不同:
C/S一般建立在专用的网络上,小范围里的网络环境,局域网之间再通过
专门服务器提供连接和数据交换服务;
B/S建立在广域网之上的,不必是专门的网络硬件环境,例与电话上网,租
用设备.信息自己管理。
有比C/S更强的适应范围,一般只要有操作系统和浏
览器就行;
2)对安全要求不同:
C/S一般面向相对固定的用户群,对信息安全的控制能力很强。
一般高度
机密的信息系统采用C/S结构适宜。
可以通过B/S发布部分可公开信息;
B/S建立在广域网之上,对安全的控制能力相对弱,可能面向不可知的用
户;
3)对程序架构不同:
C/S程序可以更加注重流程,可以对权限多层次校验,对系统运行速度可
以较少考虑;
B/S对安全以及访问速度的多重的考虑,建立在需要更加优化的基础之上。
比C/S有更高的要求B/S结构的程序架构是发展的趋势,从MS的。
Net系列的
BizTalk2000Exchange2000等,全面支持网络的构件搭建的系统.SUN和
IBM推的JavaBean构件技术等,使B/S更加成熟;
4)软件重用不同:
C/S程序可以不可避免的整体性考虑,构件的重用性不如在B/S要求下的
构件的重用性好;
B/S对的多重结构,要求构件相对独立的功能。
能够相对较好的重用.就入
买来的餐桌可以再利用,而不是做在墙上的石头桌子;
5)系统维护不同:
C/S程序由于整体性,必须整体考察,处理出现的问题以及系统升级。
升
级难。
可能是再做一个全新的系统;
B/S构件组成,方面构件个别的更换,实现系统的无缝升级。
系统维护开销
减到最小。
用户从网上自己下载安装就可以实现升级;
6)处理问题不同:
C/S程序可以处理用户面固定,并且在相同区域,安全要求高需求,与操
作系统相关。
应该都是相同的系统;
B/S建立在广域网上,面向不同的用户群,分散地域,这是C/S无法作到
的。
与操作系统平台关系最小;
7)用户接口不同:
C/S多是建立的Window平台上,表现方法有限,对程序员普遍要求较高;
B/S建立在浏览器上,有更加丰富和生动的表现方式与用户交流。
并且大
部分难度减低,减低开发成本;
8)信息流不同:
C/S程序一般是典型的中央集权的机械式处理,交互性相对低;
B/S信息流向可变化,B—BB-CB—G等信息、流向的变化,更像交易中心。
30、过滤器有哪些作用?
【基础】
答:
可以验证客户是否来自可信的网络,可以对客户提交的数据进行重新编码,
可以从系统里获得配置的信息,可以过滤掉客户的某些不应该出现的词汇,可以
验证用户是否登录,可以验证客户的浏览器是否支持当前的应用,可以记录系统
的日志等等。
31、过滤器的用法?
(对客户端的请求统一编码和对客户端进行认证)【基础】
答:
首先要实现(implements)Filter接口,同时覆盖Filter接口的三个方法:
init(FilterConfigconfig)//用于获得FilterConfig对象;
doFilter(ServletRequestrequest,ServletResponseresponse,
FilterChainchain)//进行过滤处理一些业务;
destroy()//销毁Filter.
32、简述HttpSession的作用、使用方法,可用代码说明。
(3分钟)【基础】
答:
HttpSession中可以跟踪并储存用户信息,把值设置到属性中,有2个方法:
setAttribute(),getAttrribute();
例如:
在一个方法中用session。
setAttribute(“student”,student);在
session中设置一个属性名为student,值为一个名为student的对象。
而后可在
同一session范围内用getAttribute(“student”)取出该属性,得到student
对象。
33、介绍在JSP中如何使用JavaBeans?
【基础】
答:
在JSP中使用JavaBean常用的动作有:
1)useBean/>:
用来创建和查找bean对象;
2)〈jsp:
setProperty/〉:
用来设置bean的属性,即调用其setXxx()方法;
3)〈jsp:
getProperty/>:
用来获得bean的属性,即调用其getXxx()方法.
34、JSP和Servlet中的请求转发分别如何实现?
【基础】
答:
JSP中的请求转发可利用forward动作实现:
forward/〉;
Serlvet中实现请求转发的方式为:
getServletContext().getRequestDispatcher(path)。
forward(req,res).
35、Web.Xml的作用?
【基础】
答:
用于配置web应用的信息;如listener、filter及servlet的配置信息等。
36、写出熟悉的JSTL标签。
【基础】
答:
〈c:
if>、〈c:
choose>、〈c:
when>、〈c:
otherwise〉、forEach>、set>.
38、JSP标签的作用?
如何定义?
【中等难度】
答:
作用:
分离jsp页面的内容和逻辑;
业务逻辑开发者可以创建自定义标签;
封装业务逻辑;
可重用并且易维护;
易于手工修改、易于工具维护;
提供简洁的语法;
定义:
写标签处理器;
写tld文件;
讲标签处理器和tld文件放到同一个包里面;
把jsp页面和标签库配置部署在一起。
39、写一个自定义标签;【中等难度】
答:
代码如下:
importjavax。
servlet。
jsp。
tagext。
*;
importjavax。
servlet.jsp。
*;
importjava.io.*;
publicclassTimeTagextendsSimpleTagSupport{
privatebooleanisServer=true;
publicvoidsetServer(booleanisServer){
this。
isServer=isServer;
}
publicvoiddoTag()throwsJspException,IOException{
JspWriterout=getJspContext().getOut();
if(isServer){
out。
println(newjava.util.Date());
}else{
out.println(”〈scriptlanguage=\"javascript\">");
out。
println("document.write(newDate());”);
out。
println(”
}
}
}
40、javascript的优缺点和内置对象;【中等难度】
答:
1)优点:
简单易用,与Java有类似的语法,可以使用任何文本编辑工具编
写,只需要浏览器就可执行程序,并且事先不用编译,逐行执行,无