servlet面试题总结_第1页
servlet面试题总结_第2页
servlet面试题总结_第3页
servlet面试题总结_第4页
servlet面试题总结_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 / 43 servlet 面试题总结 1、 jsp 有哪些内置对象作用分别是什么 答 :JSP 共有以下 9 种基本内置组件: request 用户端请求,此请求会包含来自 GET/POST 请求的参数 response 网页传回用户端的回应 pageContext 网页的属性是在这里管理 session 与请求有关的会话期 application servlet 正在执行的内容 out 用来传送回应的输出 config servlet 的构架部件 2 / 43 page JSP网页本身 exception 针对错误网页,未捕捉的例外 2、 jsp 有哪些动作作用分别是什么 答 :JSP 共 有以下 6 种基本动作 jsp:include:在页面被请求的时候引入一个文件。 jsp:useBean:寻找或者实例化一个 JavaBean。 jsp:setProperty:设置 JavaBean的属性。 jsp:getProperty:输出某个 JavaBean的属性。 jsp:forward:把请求转到一个新的页面。 jsp:plugin: 根据浏览器类型为 Java 插件生成 OBJECT 或EMBED标记 3、 JSP 中动态 INCLUDE与静态 INCLUDE的区别? 3 / 43 答:动态 INCLUDE 用 jsp:include 动作实现 它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数 静态 INCLUDE 用 include 伪码实现 ,定不会检查所含文件的变化,适用于包含静态页面 4、两种跳转方式分别是什么有什么区别 答:有两种,分别为: 前者页面不会转向 include所指的页面,只是显示该页的结果,主页面还是原来的页面。执行完后还会回来,相当于函数调用。并且可以带参数 .后者完全转向新页面,不会再回来。相当于 go to 语句。 5、 JSP 的内置对象及方法。 request表示 HttpServletRequest 对象。它包含了有关浏览器请求的信息,并且提供了几个用于获取 cookie, header, 4 / 43 和 session数据的有用的方法。 response表示 HttpServletResponse 对象,并提供了几个用于设置送回浏览器的响应的方法 out 对象是的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。 pageContext 表示一个对象。它是用于方便存取各种范围的名字空间、 servlet 相关的对象的 API,并且包装了通用的servlet 相关功能的方法。 session 表示一个请求的对象。 Session可以存贮用户的状态信息 applicaton 表示一个对象。这有助于查找有关 servlet 引擎和 servlet环境的信息 config 表示一个对象。该对象用于存取 servlet实例的初始化参数。 page表示从该页面产生的一个 servlet实例 二、 JSP&Servlet 技术 5 / 43 1. 描述 JSP 和 Servlet 的区别、共同点、各自应用的范围 2. 在 Web开发中需要处理 HTML标记时,应做什么样的处理,要筛选那些字符 3. 在 JSP 中如何读取客户端的请求,如何访问 CGI 变量,如何确定某个 Jsp 文件的真实路径。 4. 描述 Cookie和 Session的作用,区别和各自的应用范围,Session工作原理。 5. 列出 Jsp 中包含外部文件的方式,两者有何区别。 6. 说明 Jsp 中 errorPage的作用,应用范围。 7. 介绍在 Jsp中如何使用 JavaBeans。 8. 简单介绍 JSP的标记库 9. Jsp 和 Servlet 中的请求转发分别如何实现。 6 / 43 10. JSP的常用指令 isErrorPage(是否能使用 Exception对象 ), isELIgnored(是否忽略表达式 ) 11、什么情况下调用 doGet()和 doPost()? Jsp 页面中的 form 标签里的 method 属性为 get 时调用doGet(),为 post 时调用 doPost()。 12、 servlet的生命周期 web 容器加载 servlet,生命周期开始。通过调用 servlet的 init()方法进行 servlet的初始化。通过调用 service()方法实现,根据请求的不同调用不同的 do*()方法。结束服务, web 容器调用 servlet 的 destroy()方法。 13、如何现实 servlet的单线程模式 14、页面间对象传递的方法 request, session, application,cookie 等 7 / 43 15、 JSP 和 Servlet 有哪些相同点和不同点,他们之间的联系是什么? 是 Servlet技术的扩展,本质上是 Servlet的简易方式,更强调应用的外表表达。 JSP 编译后是 类 servlet。 Servlet和 JSP最主要的不同点在于, Servlet的应用逻辑是在 Java文件中,并且完全从表示层中的 HTML 里分离开来。而 JSP的情况是 Java 和 HTML 可以组合成一个扩展名为 .jsp 的文件。 JSP侧重于视图, Servlet主要用于控制逻辑。 16、四种会话跟踪技术 会话作用域 ServletsJSP 页面描述 page否是代表与一个页面相关的对象和属性。一个页面由一个编译好的 Java servlet 类表示。这既包括 servlet 又包括被编译成 servlet 的 JSP 页面 request 是是代表与 Web 客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个 Web 组件 8 / 43 session 是是代表与用于某个 Web 客户机的一个用户体验相关的对象和属性。一个 Web 会话可以也经常会跨越多个客户机请求 application 是是代表与整个 Web 应用程序相关的对象和属性。这实质上是跨越整个 Web 应用程序,包括多个页面、请求和会话的一个全局作用域 17、 Request对象的主要方法: setAttribute(String name,Object):设置名字为 name 的request的参数值 getAttribute(String name):返回由 name指定的属性值 getAttributeNames():返回 request 对象所有属性的名字集合,结果是一个枚举的实例 getCookies():返回客户端的所有 Cookie对象,结果是一个 Cookie 数组 getCharacterEncoding():返回请求中的字符编码方式 getContentLength():返回请求的 Body的长度 9 / 43 getHeader(String name):获得 HTTP 协议定义的文件头信息 getHeaders(String name):返回指定名字的 request Header的所有值,结果是一个枚举的实例 getHeaderNames():返回所以 request Header 的名字,结果是一个枚举的实例 getInputStream():返回请求的输入流,用于获得请求中的数据 getMethod():获得客户端向服务器端传送数据的方法 getParameter(String name):获得客户端传送给服务器端的有 name指定的参数值 getParameterNames():获得客户端传送给服务器端的所有参数的名字,结果是一个枚举 的实例 getParameterValues(String name):获得有 name指定的参10 / 43 数的所有值 getProtocol():获取客户端向服务器端传送数据所依据的协议名称 getQueryString():获得查询字符串 getRequestURI():获取发出请求字符串的客户端地址 getRemoteAddr():获取客户端的 IP地址 getRemoteHost():获取客户端的名字 getSession(Boolean create):返回和请求相关 Session getServerName():获取服务器的名字 getServletPath():获取客户端所请求的脚本文件的路径 getServerPort():获取服务器的端口号 removeAttribute(String name):删除请求中的一个属性 18、 Servlet执行时一般实现哪几个方法? public void init(ServletConfig config) 11 / 43 public ServletConfig getServletConfig() public String getServletInfo() public void service(ServletRequest request,ServletResponse response) public void destroy()JSP 和 Servlet 有哪些相同点和不同点,他们之间的联系是什么? JSP 是 Servlet 技术的扩展,本质上是 Servlet 的简易方式,更强调应用的外表表达。 JSP编译后是 ” 类 servlet” 。Servlet 和 JSP 最主要的不同点在于, Servlet 的应用逻辑是在 Java文件中,并且完全从表示层中的 HTML里分离开来。而 JSP的情况是 Java和 HTML可以组合成一个扩展名为 .jsp的文件。 JSP侧重于视图, Servlet 主要用于控制逻辑。 2、说一说 Servlet 的生命周期 ? 答 :servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由接口的init,service 和 destroy方法表达。 12 / 43 3、 Servlet版本间 (忘了问的是哪两个版本了 )的不同 ? 4、 JAVA SERVLET API 中 forward() 与 redirect()的区别? 答 :前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的 链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用 forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用 sendRedirect()方法。 5、 Servlet的基本架构 public class ServletName extends HttpServlet public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 13 / 43 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 可以使用如下四种方法来得到 server的 name, port和 info public String () public String?() public String?() public String?(String?name)如下代码实现用 servlet 取得 server的信息并输出到客户端浏览器: 14 / 43 import *; import *; import *; import *; public?class DemoServerSnoop extends GenericServlet public void service(ServletRequest?req?,?ServletResponse?res) throws ServletException,IOException (text/plain); PrintWriter?out=?(); () +?(); () +?(); 15 / 43 (ServletContext().getServerInfo() + getServletContext().getServerInfo(); (getServerInfo()?name: + getServerInfoName(getServletContext().getServerInfo(); (getServerInfo()?version: + getServerInfoVersion(getServletContext().getServerInfo(); (getServerContext().getAttribute(attribute) + getServletContext().getAttribute(attribute); private String?getServerInfoName(String?serverInfo) 16 / 43 int slash?=?(/); if(slash=-1) return serverInfo; else return (String) (0,slash); private String?getServerInfoVersion(String?serverInfo) int slash?=?(/); if(slash=-1) return?null; 17 / 43 else return (slash?+ 1); 的作用是什么?主要实现什么方法? doFilter方法里面的 2个参数 request 和 response? 他问 这两个接口的全称是什么? 使用户可以改变一个 request和修改一个 response. Filter 不是一个 servlet,它不能产生一个 response,它能够在一个request 到达 servlet 之前预处理 request,也可 以在离开servlet 时处理 response.换种说法 ,filter 其实是一个 ”servlet chaining”(servlet 链 ).一个 filter 包括 : 1. 在 servlet 被调用之前截获 ; 2. 在 servlet 被调用之前检查 servlet request; 3. 根据需要修改 request头和 request数据 ; 18 / 43 4. 根据需要修改 response 头和 response 数据 ; 5. 在 servlet 被调用之后截获 . 2. request 的全称是 ? HttpServletRequest? response 的全称是 HttpServletResponse . 8. 所有的 JDBC应用程序都具有下面的基本流程: 1、建立到数据库的连接。 2、执行 SQL 语句。 3、处理结果。 4、从数据库断开连接。 下面我们就来仔细看一看每一个步骤。 建立到数据库的连接 通过 JDBC 使用数据库的第一步就是建立一个连接。 JDBC 连19 / 43 接是由 URL指定的,它的格 式如下: jdbc: 其中 subprotocol是被请求的数据库连接的类型,而 subname提供了所要建立的连接的一些附加信息。当 JDBC 驱动程序管理器收到一个连接的 URL 时,所有已知的 JDBC 驱动程序会被询问是否可以为这个 URL服务。请求一个通过 JDBC-ODBC桥到叫做 MyData的 ODBC数据源的连接的例子如下: Connection con = (“jdbc:odbc:MyData”); 看上去一切都很顺利,但是 JDBC 驱动程序管理器是怎么知道哪些 JDBC 驱动程序在当前的系统中可用呢?有两种机制可以通知驱动程序管理器一个 JDBC 驱动程序可以使用:属性和 JDBC驱动程序注册。 驱动程序管理器引用系统属性来取得当前系统中可用的JDBC 驱动程序列表。这个系统属性包含一些用冒号隔开的JDBC驱动程序的类名,通过这个类名,驱动程序管理器可以试图满足一个连接请求。 20 / 43 使用驱动程序注册更为常见。这种方法使你对你要使用的JDBC 驱动程序有更多的控制 。所有的 JDBC 驱动程序在实例化的时候都必须在驱动程序管理器中注册自己,注册可以通过下列两个方法来实现: (“”).newInstance(); (); 我个人比较喜欢 使用 ()这种方法,不过这两种方法的效果是相同的。 JDBC 驱动程序用驱动程序管理器注册自己,这样,它就可以为连接请求服务了。 执行 SQL 语句 在数据库连接成功建立之后,我们就可以执行那些完成实际工作的 SQL语句了。在执行 SQL语句之前,我们必须首先创建一个语句对象,这个对象提供了到特定 数据库 SQL 引擎的接口。有下列三种不同类型的语句对象: 基本的语句对象,它提供了直接在数据库中执行 SQL 语句的方法。对于那些只执行一次的查询以及 DDL 语句如21 / 43 CREATE TABLE, DROP TABLE 等等来说, statement 对象就足够了。 statement 这种语句对 象用于那些需要执行多次,每次仅仅是数据取值不同的 SQL语句,它还提供了一些方法,以便指出语句所使用的输入参数。 statement 这种语句对象被用来访问数据库中的存储过程。它提供了一些方法来指定语句所使用的输入输出参数。 下面是一个用语句类来执行 SQL SELECT 语句的一个例 子: Statement stmt = (); ResultSet rs = (“SELECT * FROM MyTable”); 处理结果 在执行了一个 SQL 语句之后,我们必须处理得到的结果。有些语句仅仅返回一个整形数,指出受到影响的行数。 SQL 查询返回一个含有查询结果的结果集。结果集由行和列组成,各列数据可以通过相应数据库类型的一系列 get 方法来取22 / 43 得。在取得了一行数据的所有数据之后, 我们可以调用 next()方法来移到结果集中的下一条记录。JDBC 规范的版只允许 forward-onle(只向前 )型的游标,而在中有更健壮的游标控制功能,我们可以向后移动游标而且可以将游标移动到指定行。 从数据库断开连接 在结果集、语句和连 接对象用完以后,我们必须正确地关闭它们。连接对象、结果集对象以及所有的语句对象都有close()方法,通过调用这个方法,我们可以确保正确释放与特定数据库系统相关的所有资源。 有些开发者喜欢将引用乱放,然后用一个垃圾收集程序专门负责正确清除对象。我强烈建议大家在使用了 JDBC 驱动程序之后调用 close()方法。这样可以尽可能的减少由于挂起的对象残留在数据库系统中而造成的内存泄漏。 9.什么 Servlet链? 与 UNIX和 DOS命令中的管道类似,你也可以将多个 servlet23 / 43 以特定顺序链接起来。在 servlet 链中,一个 servlet的输出被当作下一个 servlet 的输入,而链中最后一个 servlet的输出被返回到浏览器。 servlet 链接提供了将一个 servlet 的输出重定向为另一个servlet 的输入的能力。这样,你就可以划分工作,从而使用一系列 servlet 来实现它。另外,你还可以将 servlet 组织在一起以提供新的功能。 10.为什么使用 Servlet? servlet 可以很好地替代公共网关接口 (Common Gateway Interface, CGI)脚本。通常 CGI脚本是用 Perl或者 C 语言编写的,它们总是和特定的服务器平台紧密相关。而 servlet是用 Java编写的,所以它们一开始就是平台无关的。这样,Java 编写一次就可以在任何平台运行 (write once,run anywhere)的承诺就同样可以在服务器上实现了。 servlet 还有一些 CGI脚本所不具备的独特优点: servlet 是持久的。 servlet 只需 Web 服务器加载一次,而且可以在不同请求之间保持服务 (例如一次数据库连接 )。与之相反, CGI 脚本是短暂的、瞬态的。每一次对 CGI 脚本24 / 43 的请求,都会使 Web 服务器加载并执行该脚本。一旦这个 CGI脚本运行结束,它就会被从内存中清除,然后将结果返回到客户端。 CGI 脚本的每一次使用,都会造成程序初始化过程(例如连接数据库 )的重复执行。 servlet 是与平台无关的。如前所述, servlet 是用 Java编写的,它自然也继承了 Java的平台无关性。 servlet 是可扩展的。由于 servlet是用 Java编写的,它就具备了 Java 所能带来的所有优点。 Java 是健壮的、面向对象的编程语言,它很容易扩展以适应你的需求。 servlet自然也具备了这些特征。 servlet 是安全的。从外界调用一个 servlet 的惟一方法就是通过 Web服务器。这提供了高水平的安全性保障,尤其是在你的 Web服务器有防火墙保护的时候。 setvlet 可以在多种多样的客户机上使用。由于 servlet是用 Java编写的,所以你可以很方便地在 HTML中使用它们,就像你使用 applet 一样。在本书中您将看到这一 点。 11. 简述 Servlet 的生命周期 25 / 43 Web容器加载 servlet,生命收起开始,通过调用 servlet 的的 init 方法进行 servlet 的初始化,通过调用 service方法实现,根据请求的不同调用不同的 do*方法,结束服务, web容器调用 servlet的 destroy方法 一个 servlet的生命周期由部署 servlet的容器控制,当一个请求映射到一个 servlet是, 容器执行下步骤: 1.加载 servlet类 2.创建一个 servlet 类的实例 3.调用 init 初始化 servlet实例, 2.调用 service方法,传递一个请求和响应对象 容器要移除一个 servlet,调用 servlet 的 destroy 方法结束该 servlet 2简述动作和 ()的异同 26 / 43 重 定向分为两类。一类是客户端重定向,一类是服务器端重定向。客户端重定向可以通过设置特定的 HTTP 头,或者写javaScirpt脚本实现。 服务器端的重定向方式 服务器的重定向有两种方式,一种是 HttpServletResponse的 sendRedirect 方法,一个是使用 RequestDispatcher 的forward方法。 ()方法 HttpServletResponse 接 口 定 义 了 可 用 于 转 向 的sendRedirect 方法,这个方法将响应定向到指定的,新的URL, location 可以是一个绝对的 URL,如 (“http:/”) 也可以使用相对的 URL location 可以是一个绝对的 URL,如(“http:/”) 也可以使用相对的 URL。如果 location 以“/” 开头,则容器认为相对于当前 Web 应用的根,否则,容器将解析为相对于当前请求的 URL。这种重定向的方法,将导致客户端浏览器的请求 URL跳转。从浏览器中的地址栏中可以看到新的 URL 地址,作用类似于上面设置 HTTP 响应27 / 43 头信息的实现。 ()方法 RequestDispatcher 是一个 Web 资源的包装 器,可以用来把当前 request传递到该资源,或者把新的资源包括到当前响应中。 RequestDispatcher 接口中定义了两个方法,参见如下代码: public interface RequestDispatcher void forward(ServletRequest request, ServletResponse response); void include(ServletRequest request, ServletResponse response); forward()方法将当前的 request 和 response 重定向到该RequestDispacher 指定的资源。这在实际项目中大量使用,因为完成一个业务操作往往需要跨越多个步骤,每一步骤完成相应的处理后,转向到下一个步骤。比如,通常业务处理在 Servlet中处理,处理的结果转向到一个 JSP页面进行显28 / 43 示。这样看起来类似于 Servlet链的功能,但是还有一些区别。一个 RequestDispatcher 对象可以把请求发送到任意一个服务器资源,而不仅仅是另外一个 Servlet。 include()方法将把 Request Dispatcher 资源的输出包含到当前输出中。 注意,只有在尚未向客户端输出响应时才可以调用 forward()方法,如果页面缓存不为空,在重定向前将自动清除缓存。否则将抛出一个 IllegalStateException 异常。 如何得到 RequestDispatcher 有三种方法可以得到 Request Dispatcher 对象。 ServletRequest 的 getRequestDispatcher(String path)方法,其中 path 可以是相对路径,但不能越出当前 Servlet上下文。如果 path 以 “/” 开头, 则解析为相对于当前上下文的根。 ServletContext 的 getRequestDispatcher(String path)方法,其中 path必须以 “/” 开头,路径相对于当前的 Servlet上下文。可以调用 ServletContext 的 getContext(String 29 / 43 uripath)得到另一个 Servlet上下文,并可以转向到外部上下文的一个服务器资源链接。 3.使用 ServletContext 的 getNamedDispatcher(String name)得到名为 name 三 、 J2EE 之 Servlet 基础知识 1、什么是 Servlet?它有哪些特点? Servlet 是 J2EE应用框架中部署于 Web层的 Web组件,运行在支持 Servlet 的 Web 服务器或应用服务器上。 Servlet 为客户端和服务器端的信息处理提供了一种 “ 请求 /响应 ” 机制。 客户程序将请求发送到服务器;服务器将请求发送到Servlet;依据 客户程序的请求, Servlet 动态地构造回答信息并返回给服务器;服务器将回答返回给客户程序。 特点: (1)效率高 (2)功能强大 (3)Servlet 之间能够共享数据(4)安全性好 (5)跨平台 30 / 43 2、说出 Servlet 的生命周期,并说出 Servlet 和 CGI 的区别? Servlet被服务器实例化后,容器运行其 init方法,当请求到达时运行其 service 方法, service 方法自动派遣运行与之对应的 doXXX方法等,当服务器决定将实例销毁的时候调用其 destroy方法。 与 cgi 的区别: servlet 处于服务器进程中,它通过多线程方式运行其 service 方法,一个实例 可以服务于多个请求,并且其实例一般不会销毁,而 CGI 对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于 servlet。 3、 JAVA Servelet API 中 forward() 与 redirect()的区别? 答 : (1).从地址栏显示来说 forward是服务器请求资源 ,服务器直接访问目标地址的 URL,把那个 URL 的响应内容读取过来 ,然后把这些内容再发给浏览器 .浏览器根本不知道服务器发送的内容从哪里来的 ,所以它的地址栏还是原来的地址 . 31 / 43 redirect 是服务端根据逻辑 ,发送一个状态码 ,告诉浏览器重新去请求那个地址 .所以地址栏显示的是新的 URL. (2).从数据共享来说 forward:转发页面和转发到的页面可以共享 request里面的数据 . redirect:不能共享数据 . (3).从运用地方来说 forward:一般用于用户登陆的时候 ,根据角色转发到相应的模块 . redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等 . (4).从效率来说 forward:高 . 32 / 43 redirect:低 . 一句话,转发是服务器行为,重定向是客 户端行为。 方法实现请求转发,方法实现请求重定向。总结略 4、什么情况下调用 doGet()和 doPost()? jsp 页面中的 form 标签里的 method 属性为 get 时调 用doGet(),为 post 时调用 doPost()。 5、 servlet 中 doGet()方法与 doPost()方法的区别?或 get请求与 post 有哪些区别? (1).安全性 doGet()显示信息发送, URL 后面带有参数; doPost()隐藏信息发送 .所以 doPost()比 doGet()安全些,具体应用时,如有密码时用 doPost()。 33 / 43 (2).服务器接收方式 服务器随机接受 GET方法的数据,一旦断电等原因,服务器也不知道信息是否发送完毕; 而 POST 方法,服务器先接受数据信息的长度,然后再接受数据。 (3).form运行方式 doGet() 超链接时起作用, doPost() form 提交时起作用; -就是调完 doGet(),再调 doPost(); 当 form 的 method 为post 时 ,执行 doPost 方法; -就是调完 doGet(),不调doPost(); 当 form 框里面的 method 为 get 时,执行 doGet方法。 (4).容量限制 get 是通过 http header 来传输数据,有数量限制, GET 方法后面的信息量字节大小不要超过, post 则是通过 http body来传输数据,没有数量限制。 34 / 43 (5).其实所有的请求均首先由 service()进行处理, service根据请求的不同调用不同的 doxxx 方法。 5、 Servlet的基本架构? public class ServletName extends HttpServlet public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException /insert code public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException /insert code 35 / 43 6、如何现实 servlet 的单线程模式? 7、 servlet 的 init()方法和 service()方法的区别? (1) init() 方法 在 Servlet的生命期中,仅执行一次 init()方法。它是在服务器装入 Servlet 时执行的。可以配置服务器,以在启动服务器或客户机首次访问 Servlet时装入 Servlet.。无论有多少客户机访问 Servlet,都不会重复执行 init() 。 (2) service() 方法 service() 方法是 Servlet 的核心。每当一个客户请求一个 HttpServlet 对象,该对象的 service() 方法就要被调用,而且传递给这个方法一个 请求 (ServletRequest)对象和一个 响应 (ServletResponse)对象作为参数。 在 36 / 43 HttpServlet 中已存在 service() 方法。缺省的服务功能是调用与 HTTP 请求的方法相应的 do 功能。例如, 如果 HTTP 请求方法为 GET,则缺省情况下就调用 doGet() 。Servlet 应该为 Servlet 支持的 HTTP 方法覆盖 do 功能。因为 () 方法会检查请求方法是否调用了适当的处理方法,不必要覆盖 service() 方法。只需覆盖相应的 do 方法就可以了。 8、 Servlet执行时一般实现哪几个方法? public void init(ServletConfig config) public ServletConfig getServletConfig() public String getServletInfo() public void service(ServletRequest request,ServletResponse response) public void destroy() 9、 servlet各版本间的区别? 37 / 43 Servlet 引入了 self-contained Web applications的概念。 Servlet 增加了 filters 和 filter chains 的功能。引入了context 和 session listeners 的概念 Servlet 加入了几个引起关注的特性,没有特别突出的新内容,而是在推敲和阐明以前存在的一些特性上花费了更多的功夫 ,对一些不严谨的地方进行了校验。总而言之,这份规范增加了四个新类,七个新方法,一个新常量,不再推荐使用一个类。 Apache 和 Jboss 目前只支持。一些变化的介绍: 1)基于最 新的 J2SE 开发的。 2)支持注释。 3)中的几处配置更加方便 (servlet,taglib and so on)。 4)去除了少数的限制。 5)优化了一些实例 10、 Request对象的主要方法? setAttribute(String name,Object):设置名字为 name 的request的参数值 38 / 43 getAttribute(String name):返回由 name指定的属性值 getAttributeNames():返回 request 对象所有属性的名字集合,结果是一个枚举的实例 getCookies():返回客户端的所有 Cookie 对象,结果是一个 Cookie数组 getCharacterEncoding():返回请求中的字符编码方式 getHeaders(String name):返回指定名字的 request Header的所有值,结果是一个枚举的实例 getHeaderNames():返回所以 request Header 的名字,结果是一个枚举的实例 getParameter(String name):获得客户端传送给服务器端的有 name指定的参数值 getParameterNames():获得客户端传送给服务器端的所有参数的名字,结果是一个枚举的实例 39 / 43 getParameterValues(String name):获得有 name指定的参数的所有值 getContentLength() : 返 回 请 求 的 Body 的 长 度getHeader(String name):获得 HTTP 协议定义的文件头信息 getInputStream():返回请求的输入流,用于获得请求中的数据 getRemoteAddr():获取客户端的 IP 地址 getProtocol():获取客户端向服务器端传送数据所依据的协议名称 getQueryString() :获得查询字符串 getRequestURI():获取发出请求字符串的客户端地址 getMethod():获得客户端向服务器端传送数据 的方法 getRemoteHost() : 获 取 客 户 端 的 名 字 getSession(Boolean create):返回和请求相关 Session getServerName() : 获

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论