Java 程序员面试笔试宝典 第 5 章 Java Web: 5.1 Servlet 与 JSP(9-12题)

5.1.9 Servlet 中 forward 和 redirect 有什么区别

在设计 Web 应用程序时,经常需要把一个系统进行结构化设计,即按照模块进行划分,让不同的 Servlet 来实现不同的功能,例如可以让其中一个 Servlet 接收用户的请求,另外一个 Servlet 来处理用户的请求。为了实现这种程序的模块化,就需要保证在不同的 Servlet 之间可以相互跳转,而 Servlet 中主要有两种实现跳转的方式:forward 方式与 redirect 方式。

forward 是服务器内部的重定向,服务器直接访问目标地址的 URL,把那个 URL 的响应内容读取过来,而客户端并不知道,因此在客户端浏览器的地址栏中不会显示转向后的地址,还是原来的地址。由于在整个定向的过程中用的是同一个 Request,因此 forward 会将 Request 的信息带到被定向的 JSP 或 Servlet 中使用。

redirect 则是客户端的重定向,是完全的跳转,即客户端浏览器会获取到跳转后的地址,然后重新发送请求,因此浏览器中会显示跳转后的地址。同时,由于这种方式比 forward 方式多了一次网络请求,因此其效率要低于 forward 方式。需要注意的是,客户端的重定向可以通过设置特定的 HTTP 头或写 JavaScript 脚本实现

forward 是内部重定向,redirect 是外部重定向

引申:filter 的作用是什么?主要实现什么方法?

filter 使用户可以改变一个 request 并且修改一个 response。filter 不是一个 Servlet,它不能产生一个 response,但它能够在一个 request 到达 Servlet 之前预处理 request,也可以在离开 Servlet 时处理 response。filter 其实是一个「Servlet 链」。

一个 filter 的作用包括以下几个方面:

1)在 Servlet 被调用之前截获。

2)在 Servlet 被调用之前检查 Servlet Request。

3)根据需要修改 Request 头和 Request 数据。

扫描二维码关注公众号,回复: 8775128 查看本文章

4)根据需要修改 Response 头和 Response 数据。

5)在 Servlet 被调用之后截获。


5.1.10 JSP 的内置对象有哪些

在 JSP 中,内置对象又称为隐含对象,是指在不声明和不创建的情况下就可以被使用的一些成员变量。JSP 一共提供有 9 个内置对象:request(请求对象)、response(响应对象)、pageContext(页面上下文对象)、session(会话对象)、application(应用程序对象)、out(输出对象)、config(配置对象)、page(页面对象)与 exception(例外对象)。

JSP 内置对象的具体描述见表 5-1。

根据以上 9 个内置对象的作用的不同,可以将它们分为 4 类:第一类,与 Servlet 有关的 page 和 config;第二类,与 Input/Output 有关的 out,request 和 response;第三类,与 Context 有关的 application,session 和 pageContext;


5.1.11 request 对象主要有哪些方法

当使用 JSP 与 Servlet 开发 Web 应用程序时,如何获取用户提交的请求信息是非常重要的内容之一。request 对象就是用来封装用户请求数据的,每当有请求到达服务器时,系统都会创建一个 request 对象。在服务器进行处理时可以通过获取 request 对象的属性来获取用户的请求数据。此外,还可以通过对 request 对象设置新的一些属性来实现在 Servlet 与 JSP 之间跳转时传递一些参数的功能。


5.1.12 JSP 有哪些动作

JSP 使用动作来实现动态地插入文件、实现重定向和对 JavaBean 的引用等功能。

1)jsp:include。用来在页面被请求时引入一个文件。include 指令是在 JSP 文件被转换成 Servlet 时引入文件,而 jsp:include 插入文件的时间是在页面被请求时,而且被引用文件不能包含某些 JSP 代码(例如不能设置 HTTP 头),示例如下:

2)jsp:useBean。用来寻找或者实例化一个 JavaBean。它使得开发人员既可以发挥 Java 组件重用的优势,同时也避免了损失 JSP 区别于 Servlet 的方便性,示例如下:

3)jsp:setProperty。用来设置已经实例化的 Bean 对象的属性,示例如下:

4)jsp:getProperty。用来获取某个 JavaBean 的属性,示例如下:

5)jsp:foward。用来把请求转到一个新页面,示例如下:

6)jsp:plugin。用于在浏览器中播放或显示一个对象。使用这个动作能插入所需的特定的浏览器的 OBJECT 或 EMBED 元素来指定浏览器运行一个 JAVA Applet 所需的插件,示例如下:

发布了101 篇原创文章 · 获赞 20 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/qq_40993412/article/details/104068853