2023年12月18日发(作者:)

第一章

1.什么是URL,什么是URI,它们都由哪几部分组成?URL与URI有什么关系?

答:URL称为统一资源定位符,URL通常由4部分组成:协议名称,主机的DNS名,可选的端口号和资源的名称。URI成为统一资源标识符,是以特定语法标识一个资源的字符串。URI由模式和模式特有的部分组成,它们之间用冒号隔开,一般格式如下:

schema:schema-specific-part

URI是URL和URN的超集。

2.动态Web技术文档有哪些?服务器端动态文档技术和客户端动态文档技术有何不同?

答:动态Web文档技术包括服务器端动态文档技术和客户端动态文档技术,前者包括CGI技术。服务器扩展技术和HTML页面中嵌入脚本技术。其中HTML页面中嵌入脚本技术包括ASP,PHP和JSP技术。

最流行的客户端动态文档技术是在HTML页面中嵌入JavaScript脚本代码。使用JavaScript可以设计交互式页面。与服务器端动态文档不同,JavaScript脚本是在客户端执行的。

3.什么是Servlet?什么是Servlet容器?它的主要作用是什么?

Servlet是用ServletAPI开发的Java程序,它运行在Servlet容器中,Servlet容器是运行Servlet的软件,主要用来扩展Web服务器的功能。

4.什么是MVC设计模式,它有什么优点?

MVC设计模式称为模型-视图-控制器,在这种模式中,将Web组件分为模型,视图和控制器,每种组件完成各自的任务。该模式的最大优点是将业务逻辑和数据访问从表示层分离出来,

第二章

请求结构由哪几部分组成?请求行由哪几部分组成?

答;HTTP请求结构由请求行,请求头,空行和请求数据组成。请求行由方法名,请求资源的URI和使用的HTTP版本三部分组成。

响应结构由哪几部分组成?状态行由哪几部分组成?

答:HTTP响应结构由状态行,响应头和响应数据三部分组成。状态行由HTTP版本,状态行和简短描述三部分组成。

请求和POST请求有什么异同?

答:GET请求主要用来从服务器检索资源,POST请求主要用来向服务器发送数据。

4.使用RequestDispatcher的forward()转发请求和使用响应对象的sendRedirect()重定向有何异同?

答:用forward()转发请求,存储在请求对象中的属性在转发到的资源中可用,用响应对象的sendRedirect()。存储在请求对象中的属性在新的资源中不可用,但存储在会话对象中的属性可用。

5.在Servlet中如果需要获得一个页面的表单中的请求参数,又不知道参数名时如何做?

答:可先通过请求对象的getParameterNames()得到Enumeration对象,然后在其上得到每个请求参数名,在通过getParameterNames()得到请求参数值。

6.通过哪两种方法可以获得ServletConfig对象?

答:覆盖Servlet的init(ServletConfigconfig),然后把容器创建的ServletConfig对象保存到一个成员变量中,另一种方法是在Servlet中直接使用getServletConfig()获得ServletConfig对象。

7.在部署描述文件中元素的子元素的功能是什么?使用注解如何指定该元素?

答:在文件中如果将元素的子元素设置为一个正整数,则在应用程序启动时载入该Servlet。否则在该Servlet被请求时才载入。若使用注解实现该功能,需通过@WebServlet的loadOnStartup元素指定。

t在对请求进行分析后,可能不直接向浏览器发送响应,而是向浏览器发送一个Location响应头,告诉浏览器访问其他资源,这称为响应重定向

第四章

生命周期的步骤

把JSP页面转换为Servlet源代码

编译Servlet源代码

实例化Servlet对象

调用jspInit()

调用_jspService()

调用jspDestroy()

有哪些隐含变量?作用分别是什么?

Application: 引用web应用程序上下文

Session: 引用用户会话

Request: 引用页面的当前请求对象

Response: 用来向客户发送一个响应

Out: 引用页面输出流

Page: 引用页面的servlet实例

PageContext: 引用页面上下文

Config: 引用 servlet的配置对象

Exception: 用来处理错误

中的静态包含和动态包含有什么区别:

静态包含:include指令

静态包含实在JSP页面转换阶段将另一个文件的内容包含到当前的JSP页面中。

动态包含:include动作

动态包含实在请求时将另一个页面的输出包含到主页面输出中。

3.论述JSP中的四种作用域

应用作用域 application 在整个Web应用程序有效

会话作用域 session 在一个用户会话范围内有效

请求作用域 request在用户的请求和转发请求内有效

页面作用域 pageContext 只在当前的页面(转换单元)内有效

2.简述实现MVC设计模式的一般步骤

答:MVC模式称为模型-视图-控制器模式。该模式将Web应用的组件分为模型,视图和控制器,每种组件完成各自的任务。该模型将业务逻辑和数据访问从表示层分离出来。实现MVC模式的一般步骤:

定义JavaBean表示数据;

使用Servlet处理请求;

填写JavaBeans对象数据

将结果存储在作用域对象中;

将请求转发到JSP页面;

最后在JSP页面中从JavaBeans中取出数据

第七章

1.简述Java数据库访问的两层和三层模型

答:两层模型即客户机/服务器模型,在两层模型中应用程序直接通过JDBC驱动程序访问数据库。三层模型是浏览器/应用服务器/数据库服务器结构,在该结构中浏览器向应用服务器发出请求,应用服务器通过JDBC驱动程序访问数据库。

2.简述传统的数据库连接的步骤,这种方法有什么缺点?

答:传统数据库连接的一般步骤是:1加载JDBC驱动程序2建立连接对象3创建语句对象4执行SQL语句得到结果集对象,调用ResultSet的有关方法就可以完成对数据库的操作5关闭建立的各种对象

缺点是每次访问数据库都要建立连接对象,请求结束需关闭连接对象。这将耗费大量的时间,可能导致增大请求的响应时间。

3.试说明使用数据源对象连接数据库的优点是什么?通过数据源对象如何获得连接对象?

答:使用数据源是目前Web应用开发中建立数据库连接的首选方法。这种方法是事先建立若干连接对象,存放在连接池中。当应用程序需要一个连接对象时就从连接池中取出一个,使用完后再放回连接池。这样就可避免每次请求都创建连接对象,从而降低请求的响应时间,提高频率。

使用数据源建立连接是通过JNDI技术实现的。这需要首先配置数据源(可以使局部数据源或全局数据源),然后在应用程序中通过Context对象查找数据源对象。假设已经配置了名为sampleDS的数据源,建立连接代码如下

4.试说明什么是可滚动和可更新的结果集对象,如何得到可更新且可滚动的ResultSet对象?

答:可滚动的ResultSet是指在结果集对象上不但可以向前访问结果集中的记录,还可以向后访问结果集中的记录。可更新的ResultSet是指不但可以访问结果集中的记录,还可以通过结果集对象更新数据库,要创建可滚动、可更新的ResultSet对象,必须使用Connection对象的带两个参数createStatement( )创建的Statement,第一个参数用下面两个常量之一:_SCROLL__SCROLL_INSENSITIVE

第二个参数使用下面的常量:

_UPDATABLE

第八章

应用程序的哪些对象上可以发生事件,如何实现监听器接口,如何注册事件监听器?

答:三个对象上可发生事件:ServletContext,HttpSession和HttpRequest。针对不同事件,应实现不同的监听器接口。如对ServletContextEvent应实现ServletContextListener接口。注册事件监听器可以使用@WebListener注解或在文件中使用元素及其子元素实现。

应用程序启动时将通知应用程序的哪个事件监听器?

答:Web应用程序启动时将通知ServletContextListener事件监听器。

3.简述开发支持异步线程调用的Servlet的一般步骤

(1)调用request对象的startAsync()返回AsyncContext对象,它是异步处理的上下文对象。(2)调用AsyncContext对象的setTimeout(),传递一个毫秒时间设置容器等待指定任务完成的时间。在指定的时间内任务不能完成将抛出异常。(3)调用AsyncContext对象的start(),为其传递一定要异步执行的Runnable对象。(4)当任务结束时在线程对象中调用AsyncContext对象的complete()或dispatch()。

7.解释一下servlet的生命周期

加载和实例化servlet类,调用init()初始化Servlet实例,初始化完成,容器从客户收到请求时就调用它的service()。调用destroy()使它进入销毁状态

t如何获取用户配置的初始化参数以及服务器上下文参数?

可以通过重写Servlet接口的init(ServletConfig)方法并通过ServletConfig对象的getInitParameter()方法来获取Servlet的初始化参数。可以通过ServletConfig对象的getServletContext()方法获取ServletContext对象,并通过该对象的getInitParameter()方法来获取服务器上下文参数。当然,ServletContext对象也在处理用户请求的方法(如doGet()方法)中通过请求对象的getServletContext()方法来获得。