javaWeb习题与答案 下载本文

64、JSP连接数据库的时候第一步是【加载驱动程序】。

65、使用useBean动作标记的时候scope属性有4种选项,作用范围由小到大是【page】、【request】、【session】、【application】,其中【session】是指当关闭浏览器的时候这个javabean失效,【application】是指当关闭服务器的时候这个javabean失效。

66、在Servlet中转发使用RequestDespacher接口的【forward()】方法实现。重定向由HttpServletResponse接口的【sendRedirect()】方法实现。

67、使得HttpSession失效的三种方式是:【关闭浏览器】、调用session的invalidate方法和【等待session超时】。 68、JavaBean是一种JAVA语言写成的可重用组件。JavaBean的类必须是具体的和【公有的】,并且具有【无参数】的构造方法。

69、JDBC的接口分为两个层次:一个是程序开发人员的JDBC【API】,另一个是底层的JDBC【Driver API】。

四、简答题

01、jsp有哪些内置对象?作用分别是什么? 答:(1) Out对象代表提供输出流的访问。

(2) Request对象提供对Http请求数据的访问,同时还提供用于加入特定请求数据的上下文。 (3) Response对象允许直接访问HttpServletResponse对象。 (4) Session对象可能是状态管理上下文中使用最多的对话。

(5) application对象代表应用程序上下文,它允许JSP页面与包括在同一应用程序中的任何Web组件共享信息。 (6) Config对象允许将初始化数据传递给一个JSP页面。

(7) Exception对象含有只能由指定的JSP“错误处理页面”访问的异常数据。 (8) Page对象代表JSP页面对应的Servlet类实例。

(9) PageContext对象是Jsp页面本身的上下文,它提供唯一一组方法来管理具有不同作用域的属性。

02、jsp有哪些动作?作用分别是什么? 答:JSP共有以下6种基本动作

(1) jsp:include:在页面被请求的时候引入一个文件。 (2) jsp:useBean:寻找或者实例化一个JavaBean。 (3) jsp:setProperty:设置JavaBean的属性。

(4) jsp:getProperty:输出某个JavaBean的属性。 (5) jsp:forward:把请求转到一个新的页面。

(6) jsp:plugin:根据浏览器类型为Java插件生成OBJECT或EMBED标记

03、简述JSP的处理过程。

答:(1) 客户端通过浏览器向服务器发出请求,该请求中包含了请求的资源的路径 (2) 服务器根据被加载的客户端的请求加载被请求的JSP页面 (3) Web服务器中的JSP引擎把被加载的JSP页面转换成servlet (4) JSP引擎把生成的JSP页面编译成class文件 (5) 服务器执行这个class文件

(6) 服务器把执行结果发送给浏览器显示

04、在JSP中有哪几种注释的方法? 答:主要有以下四种注释方法: (1) <%-- 注释 --%> (2) // 注释

(3) /** 注释 **/ (4)

05、简述JSP页面中的组成元素。 JSP页面主要有6类基本元素组成:

(1) JSP指令:用来向JSP容器提供编译信息。 (2) JSP声明:用于在JSP页面中定义变量和方法。

(3) JSP表达式:用于将Java表达式的运行结果输出在页面中。 (4) JSP脚本:用于在JSP页面中插入Java代码。 (5) JSP动作:实现一些常见的特定功能。 (6) JSP注释

06、Servlet的基本架构

答:public class ServletName extends HttpServlet {

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { }

17

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } }

07、Servlet执行时一般实现哪几个方法?

答:(1) public void init(ServletConfig config) (2) public ServletConfig getServletConfig() (3) public String getServletInfo()

(4) public void service(ServletRequest request,ServletResponse response) (5) public void destroy()

08、表单提交方式中的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 的默认方法。

09、Java Servlet的主要功能和作用是什么?

答: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 可以修改如何认证用户。

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

答:JSP技术是建立在Servlet技术基础之上的,本质上是Servlet的简易方式,更强调应用的外表表达。 JSP编译后是“类servlet”,所有的JSP页面最终都要被转换成Servlet来运行。 目前,一个web应用往往由多个servlet和jsp组成。 Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。 而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。

JSP侧重于视图,负责显示工作完成;Servlet主要用于控制逻辑,负责流程控制功能。

11、HttpServletResponse类的sendRedirect方法和RequestDispatcher类的forward方法有何不同?

答:HttpServletResponse类的sendRedirect方法可以把用户重新定向到其他页面或servlet,但是不能将用户对当前JSP页面或servlet的请求和响应 (HttpServletRequest对象和HttpServletResponse对象)传递给所重新定向JSP页面或servlet。

RequestDispatcher对象使用forward方法可以把用户对当前JSP页面或servle的 请求转发给另一个JSP页面或servlet,而且将用户对当前JSP页面或servlet的请 求和响应(HttpServletRequest对象和HttpServletResponse对象)传递给所转发的JSP页面或servlet。也就是说,当前页面所要转发的目标页面或servlet对象可以使用request获取用户提交的数据。

12、简述四种会作用域page/request/session/application。 答:(1) page范围:具有page范围的对象被绑定到javax.servlet.jsp.PageContext对象中。在这个范围内的对象,只能在创建对象的页面中访问。可以调用pageContext这个隐含对象的getAttribute()方法来访问具有这种范围类型的对象(pageContext对象还提供了访问其他范围对象的getAttribute方法),pageContext对象本身也属于page范围。当Servlet类的_jspService()方法执行完毕,属于page范围的对象的引用将被丢弃。page范围内的对象,在客户端每次请求JSP页面时创建,在页面向客户端发送回响应或请求被转发(forward)到其他的资源后被删除。

18

(2) request范围:具有request范围的对象被绑定到javax.servlet.ServletRequest对象中,可以调用request这个隐含对象的getAttribute()方法来访问具有这种范围类型的对象。在调用forward()方法转向的页面或者调用include()方法包含的页面中,都可以访问这个范围内的对象。要注意的是,因为请求对象对于每一个客户请求都是不同的,所以对于每一个新的请求,都要重新创建和删除这个范围内的对象

(3) session范围:具有session范围的对象被绑定到javax.servlet.http.HttpSession对象中,可以调用session这个隐含对象的getAttribute()方法来访问具有这种范围类型的对象。JSP容器为每一次会话,创建一个HttpSession对象,在会话期间,可以访问session范围内的对象。

(4) application范围:具有application范围的对象被绑定到javax.servlet.ServletContext中,可以调用application这个隐含对象的getAttribute()方法来访问具有这种范围类型的对象。在Web应用程序运行期间,所有的页面都可以访问在这个范围内的对象

13、简述Servlet的生命周期。

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

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

14、JSP中动态INCLUDE与静态INCLUDE的区别? 答:(1) 动态INCLUDE用jsp:include动作实现

它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数

(2) 静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面 <%@ include file=\

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

(1)

前者页面不会转向include所指的页面,只是显示该页的结果,主页面还是原来的页面。执行完后还会回来,相当于函数调用。并且可以带参数.后者完全转向新页面,不会再回来。相当于go to 语句。

16、简述请求转发和请求重定向的区别。 答:进行请求转发时,存储在request对象中的信息会被保留并带到目标页面中;请求重定向是重新生成一个request请求,然后将该请求重定向到指定的URL,所以事先存储在request对象中的信息都不存在了。

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

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

18、JSP中Model2的工作原理是什么?

JSP的Model2实际上就是引入了MVC设计模式,采用Servlet+JavaBean+JSP进行开发。

Model2采用Servlet作为控制器(Controller)负责接收客户端Web浏览器发送来的所有请求,并依据处理的不同结果,转发到对应的JSP页面(Viewer)实现在浏览器客户端的显示。

通常在Servlet中只包含了控制逻辑和一些简单的处理逻辑,更加复杂的业务处理逻辑则借助特定的JavaBean(Model)具体实现。

19、简述include指令标识和动作标识的差异。 答:(1) inlcude指令通过file属性来确定被包含的页面,将file属性值看做一个实际存在的文件路径,所以该指令不支持任何表达式;动作标识通过page属性确定被包含的页面,支持JSP表达式。 (2) include指令包含的文件,内容会原封不动的插入到该指令的位置,与该指令合成进行编译,若改变了被包含文件,主文件要重新编译;动作标识包含文件时,当该标识被执行时,程序会将请求转发到被包含的文件,并将执行结果输出到浏览器中,然后返回到包含文件继续执行后面的代码,JSP编译器对两个文件分别进行编译,被包含文件改动不会影响源文件。

20、简述内置对象session和application的区别。

答:Session对象和用户会话相关,不同用户的session是完全不同的对象,而用户的application对象都是相同的一个对象,即共享这个对象。

19

21、在Servlet的doGet()和doPost()方法中,如何得到与JSP内置对象out、request、rsponse、session、application分别对应的对象?

答:(1)可以通过以下代码获取out对象:PrintWriter out = response.getWriter(); (2)Servlet直接继承了HttpServlet类,可以直接使用request和response对象

(3)可以通过以下代码获取session对象:HttpSession session=request.getSession(); (4) application是javax.servlet.ServletContext类的对象

Application对象需要通过ServletConfig.getServletContext()来获取。

Servlet自动定义了ServletConfig对象。故可以使用以下代码获取application对象 ServletContext application =this.getServletContext(); 或者:

ServletConfig config=getServletConfig();

ServletContext application=config.getServletContext();

22、简述数据库连接池的实现原理。

答:(1) 预先创建一定数量的连接,存放在连接池中。 (2) 当程序请求一个连接时,连接池是为该请求分配一个空闲连接,而不是去重新建立一个连接;当程序使用完连接后,该链接将重新回到连接池中,而不是直接将连接释放。 (3) 当连接池中的空闲连接数量低于下限时,连接池将根据管理机制追加创建一定数量的连接;当空线连接数量高于上限时,连接池将释放一定数量的连接。

23、forward和redirect的区别

答:forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。

redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。

24、有两个页面a.jsp和b.jsp,要从a.jsp传值到b.jsp有几种方法?分别是什么?

答:(1) 最常用的方法是用form中的text,,然后在b.jsp页面中这样获取:String username=request.getParameter(\

(2) 直接在Url地址栏里面输入第一个页面的地址,在后加问号,然后把要传的参数及值写在后面,如有多个用&隔开,然后在下一页面用:request.getParameter(\参数名\来获取。 如:在b.jsp中可用这样获取:

String username=request.getParameter(\ String username=request.getParameter(\

(3) 在form中放hidden,如:,获取方法同上。

25、JSP页面是如何被执行的?JSP执行效率比Servlet低吗? 答:当客户端向一个JSP页面发出请求时,Web Container将JSP转化成Servlet的源代码(只在第一次请求时),然后编译转化后的Servlet并加载到内存中执行,执行的结果Response到客户端。

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

26、HttpServlet类中的主要方法都有哪些?

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

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

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

五、编程题

01、请依次写出下面表单对象的HTML代码。

20