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.在部署描述文件中
答:在文件中如果将
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()方法来获得。


发布评论