Servlet面试题

2019-06-17 09:11

1、Servlet如何得到服务器的信息?

Servlet可以使用如下四种方法来得到server的name, port和info publicString ServletRequest.getServerName() publicString ServletRequest.getServerPort() publicString ServletContext.getServerInfo()

publicString ServletRequest.getAttributes(String name)

如下代码实现用servlet取得server的信息并输出到客户端浏览器: importjava.io.*; importjava.util.*; importjavax.servlet.*; importjavax.servlet.http.*;

public classDemoServerSnoopextendsGenericServlet{

publicvoidservice(ServletRequest req , ServletResponse res) throwsServletException,IOException{

res.setContentType(\); PrintWriter out= res.getWriter();

out.println(\+ req.getServerName()); out.println(\+ req.getServerPort());

out.println(\+ getServletContext().getServerInfo());

out.println(\+

getServerInfoName(getServletContext().getServerInfo()));

out.println(\+

getServerInfoVersion(getServletContext().getServerInfo()));

out.println(\+ getServletContext().getAttribute(\)); }

privateString getServerInfoName(String serverInfo){

intslash = serverInfo.indexOf('/'); if(slash==-1)

returnserverInfo; else

return(String)serverInfo.subSequence(0,slash); }

privateString getServerInfoVersion(String serverInfo){

intslash = serverInfo.indexOf('/'); if(slash==-1) return null; else

returnserverInfo.substring(slash +1); }}

2、Servlet如何得到客户端机器的信息?

Servlet可以使用getRemoteAddr()和getRemoteHost()来得到客户端的IP地址和host, 代码如下所示:

publicString ServletRequest.getRemoteAddr() publicStirng ServletRequest.getRemoteHost()

用这些方法来访问客户端有所限制,如下代码实现了对客户端配置进行检查并把相关消息发送到客户端的功能: importjava.io.*; importjava.util.*; importjavax.servlet.*; importjavax.servlet.http.*;

public classDemoExportRestrictionextendsHttpServlet{

publicvoiddoGet(HttpServletRequest req,HttpServletResponse res) throwsServletException,IOException{

res.setContentType(\); PrintWriter out= res.getWriter();

//得到客户端的hostname

String remoteHost = req.getRemoteHost();

//查看客户端是否允许这样的操作 if(!isHostAllowed(remoteHost)){

out.println(\); }else{

out.println(\); } }

privatebooleanisHostAllowed(String host) { return(host.endsWith(\))|| (host.indexOf('.')==-1);//没有域名 ok } }

3、一家美资企业的java servlet面试题

filter 的作用是什么?主要实现什么方法?doFilter方法里面的2个参数request 和 response 他问 这两个接口的全称是什么?

1.Filter使用户可以改变一个request和修改一个response. Filter 不是一个servlet,它不能产生一个response,它能够在一个request到达servlet之前预处理request,也可以在离开servlet时处理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应用程序都具有下面的基本流程: 1、建立到数据库的连接。 2、执行SQL语句。 3、处理结果。 4、从数据库断开连接。

下面我们就来仔细看一看每一个步骤。 建立到数据库的连接

通过JDBC使用数据库的第一步就是建立一个连接。JDBC连接是由URL指定的,它的格式如下:

jdbc::

其中subprotocol是被请求的数据库连接的类型(如ODBC,ORACLE,Informix等等),而subname提供了所要建立的连接的一些附加信息。当JDBC驱动程序管理器收到一个连接的URL时,所有已知的JDBC驱动程序会被询问是否可以为这个URL服务。请求一个通过JDBC-ODBC桥到叫做MyData的ODBC数据源的连接的例子如下: Connection con = DriverManage.getconnection(”jdbc:odbc:MyData”);

看上去一切都很顺利,但是JDBC驱动程序管理器是怎么知道哪些JDBC驱动程序在当前的系统中可用呢?有两种机制可以通知驱动程序管理器一个JDBC驱动程序可以使用:sql.drivers属性和JDBC驱动程序注册。

驱动程序管理器引用sql.drivers系统属性来取得当前系统中可用的JDBC驱动程序列表。这个系统属性包含一些用冒号隔开的JDBC驱动程序的类名,通过这个类名,驱动程序管理器可以试图满足一个连接请求。

使用驱动程序注册更为常见。这种方法使你对你要使用的JDBC驱动程序有更多的控制。所有的JDBC驱动程序在实例化的时候都必须在驱动程序管理器中注册自己,注册可以通过下列两个方法来实现:

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,getDate等等)来取得。在取得了一行数据的所有数据之后,我们可以调用next()方法来移到结果集中的下一条记录。JDBC规范的1.1版只允许forward-onle(只向前)型的游标,而在JDBC2.0中有更健壮的游标控制功能,我们可以向后移动游标而且可以将游标移动到指定行。 从数据库断开连接

在结果集、语句和连接对象用完以后,我们必须正确地关闭它们。连接对象、结果集对

象以及所有的语句对象都有close()方法,通过调用这个方法,我们可以确保正确释放与特定数据库系统相关的所有资源。

有些开发者喜欢将引用乱放,然后用一个垃圾收集程序专门负责正确清除对象。我强烈建议大家在使用了JDBC驱动程序之后调用close()方法。这样可以尽可能的减少由于挂起的对象残留在数据库系统中而造成的内存泄漏。

5、为什么要使用servlet

servlet可以很好地替代公共网关接口(Common Gateway Interface,CGI)脚本。通常CGI脚本是用Perl或者C语言编写的,它们总是和特定的服务器平台紧密相关。而servlet是用Java编写的,所以它们一开始就是平台无关的。这样,Java编写一次就可以在任何平台运行(write once,run anywhere)的承诺就同样可以在服务器上实现了。servlet还有一些CGI脚本所不具备的独特优点:

■servlet是持久的。servlet只需Web服务器加载一次,而且可以在不同请求之间保持服务(例如一次数据库连接)。与之相反,CGI脚本是短暂的、瞬态的。每一次对CGI脚本的请求,都会使Web服务器加载并执行该脚本。一旦这个CGI脚本运行结束,它就会被从内存中清除,然后将结果返回到客户端。CGI脚本的每一次使用,都会造成程序初始化过程(例如连接数据库)的重复执行。

■servlet是与平台无关的。如前所述,servlet是用Java编写的,它自然也继承了Java的平台无关性。

■servlet是可扩展的。由于servlet是用Java编写的,它就具备了Java所能带来的所有优点。Java是健壮的、面向对象的编程语言,它很容易扩展以适应你的需求。servlet自然也具备了这些特征。

■servlet是安全的。从外界调用一个servlet的惟一方法就是通过Web服务器。这提供了高水平的安全性保障,尤其是在你的Web服务器有防火墙保护的时候。

■setvlet可以在多种多样的客户机上使用。由于servlet是用Java编写的,所以你可以很方便地在HTML中使用它们,就像你使用applet一样。在本书中您将看到这一点。 6、什么是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


Servlet面试题.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:电大计算机网考题库

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: