没有合适的资源?快使用搜索试试~ 我知道了~
servlet面试题集锦1
需积分: 0 0 下载量 176 浏览量
2022-08-03
13:42:40
上传
评论 1
收藏 369KB PDF 举报
温馨提示
试读
39页
1.Filter 使用户可以改变一个 request 和修改一个 response. Filter 不是一个 servlet,它不能产生一个 1. 在 serv
资源详情
资源评论
资源推荐
Servlet
Servlet
Servlet
Servlet 面试集锦
面试集锦
面试集锦
面试集锦
1 、 Servlet
Servlet
Servlet
Servlet 如何得到服务器的信息?
如何得到服务器的信息?
如何得到服务器的信息?
如何得到服务器的信息?
Servlet 可以使用如下四种方法来得到 server 的 name, port 和 info
public
public
public
public String ServletRequest.getServerName()
public
public
public
public String ServletRequest.getServerPort()
public
public
public
public String ServletContext.getServerInfo()
public
public
public
public String ServletRequest.getAttributes(String name)
如下代码实现用 servlet 取得 server 的信息并输出到客户端浏览器:
import
import
import
import java.io.*;
import
import
import
import java.util.*;
import
import
import
import javax.servlet.*;
import
import
import
import javax.servlet.http.*;
public
public
public
public class
class
class
class DemoServerSnoop extends
extends
extends
extends GenericServlet{
publicvoid
publicvoid
publicvoid
publicvoid service(ServletRequest req , ServletResponse res)
throws
throws
throws
throws ServletException,IOException{
res.setContentType("text/plain");
PrintWriter out= res.getWriter();
out.println("req.getServerName()"+ req.getServerName());
out.println("req.getServerPort()"+ req.getServerPort());
out.println("ServletContext().getServerInfo()"+
getServletContext().getServerInfo());
out.println("getServerInfo() name:"+
getServerInfoName(getServletContext().getServerInfo()));
out.println("getServerInfo() version:"+
getServerInfoVersion(getServletContext().getServerInfo()));
out.println("getServerContext().getAttribute(\"attribute\")"+
getServletContext().getAttribute("attribute"));
}
private
private
private
private String getServerInfoName(String serverInfo){
int
int
int
int slash = serverInfo.indexOf('/');
if
if
if
if (slash==-1)
return
return
return
return serverInfo;
else
else
else
else
return
return
return
return (String)serverInfo.subSequence(0,slash);
}
private
private
private
private String getServerInfoVersion(String serverInfo){
int
int
int
int slash = serverInfo.indexOf('/');
if
if
if
if (slash==-1)
return
return
return
return null
null
null
null ;
else
else
else
else
return
return
return
return serverInfo.substring(slash +1);
}}
2
2
2
2 、
、
、
、 Servlet
Servlet
Servlet
Servlet 如何得到客户端机器的信息?
如何得到客户端机器的信息?
如何得到客户端机器的信息?
如何得到客户端机器的信息?
Servlet 可以使用 getRemoteAddr() 和 getRemoteHost() 来得到客户端的 IP 地址和 host, 代码如下所示:
public
public
public
public String ServletRequest.getRemoteAddr()
public
public
public
public Stirng ServletRequest.getRemoteHost()
用这些方法来访问客户端有所限制,如下代码实现了对客户端配置进行检查并把相关消息发送到客户端的
功能:
import
import
import
import java.io.*;
import
import
import
import java.util.*;
import
import
import
import javax.servlet.*;
import
import
import
import javax.servlet.http.*;
public
public
public
public class
class
class
class DemoExportRestriction extends
extends
extends
extends HttpServlet{
publicvoid
publicvoid
publicvoid
publicvoid doGet(HttpServletRequest req,HttpServletResponse res)
throws
throws
throws
throws ServletException,IOException{
res.setContentType("text/plain");
PrintWriter out= res.getWriter();
// 得到客户端的 hostname
String remoteHost = req.getRemoteHost();
// 查看客户端是否允许这样的操作
if
if
if
if (!isHostAllowed(remoteHost)){
out.println("Access <BLINK>ACCESS DENIED </BLINK>");
} else
else
else
else {
out.println("access granted");
}
}
privateboolean
privateboolean
privateboolean
privateboolean isHostAllowed(String host) {
return
return
return
return (host.endsWith(".com"))||
(host.indexOf('.')==-1);// 没有域名 ok
}
}
3
3
3
3 、
、
、
、 一家美资企业的
一家美资企业的
一家美资企业的
一家美资企业的 java
java
java
java servlet
servlet
servlet
servlet 面试题
面试题
面试题
面试题
filter 的作用是什么?主要实现什么方法? doFilter 方法里面的 2 个参数 request 和 response 他问
这两个接口的全称是什么?
1. Filter 使用户可以改变一个 request 和修改一个 response. Filter 不是一个 servlet, 它不能产生一 个
response, 它能够在一 个 reques t 到 达 servle t 之前预处 理 request, 也可以在离 开 servle t 时处 理 response.
换种说法 ,filter 其实是一个 ” servlet chaining ” (servlet 链 ). 一个 filter 包括 :
1. 在 servlet 被调用之前截获 ;
2. 在 servlet 被调用之前检查 servlet request;
3. 根据需要修改 request 头和 request 数据 ;
4. 根据需要修改 response 头和 response 数据 ;
5. 在 servlet 被调用之后截获 .
2. request 的全称是 HttpServletRequest response 的全称是 HttpServletResponse .
4 、 JDBC
JDBC
JDBC
JDBC 操作数据库的基本流程是什么?
操作数据库的基本流程是什么?
操作数据库的基本流程是什么?
操作数据库的基本流程是什么?
所有的 JDBC 应用程序都具有下面的基本流程:
1 、建立到数据库的连接。
2 、执行 SQL 语句。
3 、处理结果。
4 、从数据库断开连接。
下面我们就来仔细看一看每一个步骤。
建立到数据库的连接
通过 JDBC 使用数据库的第一步就是建立一个连接。 JDBC 连接是由 URL 指定的,它的格式如下:
jdbc:<subprotocol>:<subname>
其中 subprotocol 是被请求的数据库连接的类型(如 ODBC , ORACLE , Informix 等等 ) ,而 subname 提
供了所要建立的连接的一些附加信息。当 JDBC 驱动程序管理器收到一个连接的 URL 时,所有已知的 JDB C
驱动程序会被询问是否可以为这个 URL 服务。请求一个通过 JDBC-ODBC 桥到叫做 MyData 的 ODBC 数据源的
连接的例子如下:
Connection con = DriverManage.getconnection( ” jdbc:odbc:MyData ” );
看上去一切都很顺利,但是 JDBC 驱动程序管理器是怎么知道哪些 JDBC 驱动程序在当前的系统中可用
呢?有两种机制可以通知驱动程序管理器一个 JDBC 驱动程序可以使用: sql.drivers 属性和 JDBC 驱动程
序注册。
驱动程序管理器引用 sql.drivers 系统属性来取得当前系统中可用的 JDBC 驱动程序列表 。 这个系统属
性包含一些用冒号隔开的 JDBC 驱动程序的类名 , 通过这个类名 , 驱动程序管理器可以试图满足一个连接请
求。
使用驱动程序注册更为常见。这种方法使你对你要使用的 JDBC 驱动程序有更多的控制。所有的 JDB C
驱动程序在实例化的时候都必须在驱动程序管理器中注册自己,注册可以通过下列两个方法来实现:
1.Class.forName( ” foo.Driver ” ).newInstance();
2.new foo.Driver();
我个人比较喜欢使用 Class.forName() 这种方法,不过这两种方法的效果是相同的。 JDBC 驱动程序用
驱动程序管理器注册自己,这样,它就可以为连接请求服务了。
执行 SQL 语句
在数据库连接成功建立之后 , 我们就可以执行那些完成实际工作的 SQL 语句了 。 在执行 SQL 语句之前
,
我们必须首先创建一个语句对象,这个对象提供了到特定数据库 SQL 引擎的接口。有下列三种不同类型的
语句对象:
1.Statement —— 基本的语句对象 , 它提供了直接在数据库中执行 SQL 语句的方法 。 对于那些只执行一
次的查询以及 DDL 语句如 CREATE TABLE , DROP TABLE 等等来说, statement 对象就足够了。
2.Prepared statement —— 这种语句对象用于那些需要执行多次,每次仅仅是数据取值不同的 SQL 语
句,它还提供了一些方法,以便指出语句所使用的输入参数。
3.Callable statement —— 这种语句对象被用来访问数据库中的存储过程。它提供了一些方法来指定
语句所使用的输入输出参数。
下面是一个用语句类来执行 SQL SELECT 语句的一个例子:
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery( ” SELECT * FROM MyTable ” );
处理结果
在执行了一个 SQL 语句之后,我们必须处理得到的结果。有些语句仅仅返回一个整形数,指出受到影
响的行数 ( 比如 UPDATE 和 DELETE 语句 ) 。 SQL 查询 ( SELECT 语句 ) 返回一个含有查询结果的结果集 。 结果
集由行和列组成 , 各列数据可以通过相应数据库类型的一系列 get 方法 ( 如 getString , getInt , getDat e
等等 ) 来取得 。 在取得了一行数据的所有数据之后 , 我们可以调用 next() 方法来移到结果集中的下一条记
录 。 JDBC 规范的 1.1 版只允许 forward-onle( 只向前 ) 型的游标 , 而在 JDBC2.0 中有更健壮的游标控制功能
,
我们可以向后移动游标而且可以将游标移动到指定行。
从数据库断开连接
在结果集、语句和连接对象用完以后,我们必须正确地关闭它们。连接对象、结果集对象以及所有的
语句对象都有 close() 方法,通过调用这个方法,我们可以确保正确释放与特定数据库系统相关的所有资
源。
有些开发者喜欢将引用乱放,然后用一个垃圾收集程序专门负责正确清除对象。我强烈建议大家在使
用了 JDBC 驱动程序之后调用 close() 方法 。 这样可以尽可能的减少由于挂起的对象残留在数据库系统中而
造成的内存泄漏。
5
5
5
5 、
、
、
、 为什么要使用
为什么要使用
为什么要使用
为什么要使用 servlet
servlet
servlet
servlet
servlet 可以很好地替代公共网关接口 (Common Gateway Interface , CGI) 脚本。通常 CGI 脚本是用 Per l
或者 C 语言编写的 , 它们总是和特定的服务器平台紧密相关 。 而 servlet 是用 Java 编写的 , 所以它们一开
始就是平台无关的。这样, Java 编写一次就可以在任何平台运行 (write once,run anywhere) 的承诺就同
样可以在服务器上实现了。 servlet 还有一些 CGI 脚本所不具备的独特优点:
■ servlet 是持久的。 servlet 只需 Web 服务器加载一次,而且可以在不同请求之间保持服务 ( 例如一
次数据库连接 ) 。 与之相反 , CGI 脚本是短暂的 、 瞬态的 。 每一次对 CGI 脚本的请求 , 都会使 Web 服务器加
载并执行该脚本。一旦这个 CGI 脚本运行结束,它就会被从内存中清除,然后将结果返回到客户端。 CG I
脚本的每一次使用,都会造成程序初始化过程 ( 例如连接数据库 ) 的重复执行。
■ servlet 是与平台无关的 。 如前所述 , servlet 是用 Java 编写的 , 它自然也继承了 Java 的平台无关
性。
■ servlet 是可扩展的 。 由于 servlet 是用 Java 编写的 , 它就具备了 Java 所能带来的所有优点 。 Jav a
是健壮的、面向对象的编程语言,它很容易扩展以适应你的需求。 servlet 自然也具备了这些特征。
■ servlet 是安全的。从外界调用一个 servlet 的惟一方法就是通过 Web 服务器。这提供了高水平的
安全性保障,尤其是在你的 Web 服务器有防火墙保护的时候。
■ setvlet 可以在多种多样的客户机上使用 。 由于 servlet 是用 Java 编写的 , 所以你可以很方便地 在
HTML 中使用它们,就像你使用 applet 一样。在本书中您将看到这一点。
6 、 什么是
什么是
什么是
什么是 servlet
servlet
servlet
servlet
servlet 可以被认为是服务器端的 applet 。 servlet 被 Web 服务器加载和执行 , 就如同 applet 被浏览器加
载和执行一样。 servlet 从客户端 ( 通过 Web 服务器 ) 接收请求,执行某种作业,然后返回结果。
使用 servlet 的基本流程如下:
· 客户端 ( 很可能是 Web 浏览器 ) 通过 HTTP 提出请求。
· Web 服务器接收该请求并将其发给 servlet 。 如果这个 servlet 尚未被加载 , Web 服务器将把它加载
到 Java 虚拟机并且执行它。
· servlet 将接收该 HTTP 请求并执行某种处理。
· servlet 将向 Web 服务器返回应答。
· Web 服务器将从 servlet 收到的应答发送给客户端。
由于 servlet 是在服务器上执行 , 通常与 applet 相关的安全性的问题并不需实现 。 servlet 使相当数
量的不可能或者至少是很难由 applet 实现的功能的实现成为可能。与现有系统通过 CORBA , RMI , socke t
和本地 (native) 调用的通信就是其中的一些例子。另外,一定要注意: Web 浏览器并不直接和 servlet 通
信 , servlet 是由 Web 服务器加载和执行的 。 这意味着如果你的 Web 服务器有防火墙保护 , 那么你的 servle t
也将得到防火墙的保护。
7 、 什么是
什么是
什么是
什么是 servlet
servlet
servlet
servlet 链?
链?
链?
链?
与 UNIX 和 DOS 命令中的管道类似 , 你也可以将多个 servlet 以特定顺序链接起来 。 在 servlet 链中 , 一 个
servlet 的输出被当作下一个 servlet 的输入,而链中最后一个 servlet 的输出被返回到浏览器。
servlet 链接提供了将一个 servlet 的输出重定向为另一个 servlet 的输入的能力。这样,你就可以划分
剩余38页未读,继续阅读
滕扬Lance
- 粉丝: 20
- 资源: 304
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0