Web面试题Ⅰ

1、Servlet 的生命周期,并说出 Servlet 和 CGI 的区别

  Web 容器加载 Servlet 并将其实例化后,Servlet 生命周期开始,容器运行其 init 方法进行 Servlet 的初始化,请求到达时运行其 service 方法,service方法自动派遣运行与请求对应的 doXXX 方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其 destroy 方法。

  与 cgi 的区别在于 servlet 处于服务器进程中,它通过多线程方式运行其 service 方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而 CGI 对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于 servlet。

2、forward 和 redirect 的区别

  forward 是容器中控制权的转向,是服务器请求资源,服务器直接访问目标地址的 URL,把那个 URL 的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。

  redirect 就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request 参数都可以获取,并且从浏览器的地址栏中可以看到跳转后的链接地址。

  前者更加高效,在前者可以满足需要时,尽量使用 forward()方法,并且,这样也有助于隐藏实际的链接;在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用 sendRedirect()方法。

3、JSP 中动态 INCLUDE 与静态 INCLUDE 的区别

  动态 INCLUDE 用 jsp:include 动作实现 <jsp:include page="included.jsp"flush="true" />它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数;

  静态 INCLUDE 用 include 伪码实现,它不会检查所含文件的变化,适用于包含静态页面<%@ include file="included.htm" %>

4、数据连接池的工作机制是什么

  J2EE 服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接。

5、JSP 的内置对象,它们的作用和方法

  request 表示用户端请求,此请求会包含来自 GET/POST 请求的参数;包含了有关浏览器请求的信息,并且提供了几个用于获取 cookie, header 和 session 数据的有用的方法。

  response 表示 网页传回用户端的回应;并提供了几个用于设置送回 浏览器的响应的方法(如 cookies,头信息等)。

  out 表示传送回应的输出;并提供了几个方法使你能用于向浏览器回送输出结果。

  pageContext 表示网页的属性;用于方便存取各种范围的名字空间、servlet 相关的对象的 API,并且包装了通用的servlet 相关功能的方法。

  session 表示与请求有关的会话期;Session可以存贮用户的状态信息。

  application 表示servlet 正在执行的内容;有助于查找有关 servlet 引擎和 servlet 环境的信息。

  config 表示servlet 的构架部件;该对象用于存取servlet 实例的初始化参数。

  page 表示从该页面产生的一个 servlet 实例。JSP 网页本身。

  exception 针对错误网页,未捕捉的例外。

6、jsp 有哪些动作?作用分别是什么

  JSP 共有以下 6 种基本动作:

  jsp:include:在页面被请求的时候引入一个文件;

  jsp:useBean:寻找或者实例化一个 JavaBean。;

  jsp:setProperty:设置 JavaBean 的属性。;

  jsp:getProperty:输出某个 JavaBean 的属性;

  jsp:forward:把请求转到一个新的页面;

  jsp:plugin:根据浏览器类型为 Java 插件生成 OBJECT 或 EMBED 标记。

7、get 和 post 的区别

  Form 中的 get 和 post 方法,在数据传输过程中分别对应了 HTTP 协议中的GET 和 POST 方法。二者主要区别如下:

  1)Get 是用来从服务器上获得数据,而 Post 是用来向服务器上传递数据;

  2)Get 将表单中数据按照 variable=value 的形式,添加到 action 所指向的URL 后面,并且两者使用“?”连接,而各个变量之间使用“&”连接;

      Post 是将表单中的数据放在 form 的数据体中,按照变量和值相对应的方式,传递到 action所指向 URL;

  3)Get 是不安全的,因为在传输过程,数据被放在请求的 URL 中;Post 的所有操作对用户来说都是不可见的;

  4)Get 传输的数据量小,这主要是因为受 URL 长度限制;而 Post 可以传输大量的数据,所以在上传文件只能使用 Post;

  5)Get 限制 Form 表单的数据集必须为 ASCII 字符,而 Post 支持整个 ISO10646字符集;

  6)Get 是 Form 的默认方法。

8、如何从 form 表单中得取 checkbox 的值

  可在页面把 checkbox 的 name 属性取同一个,value 属性取每个条目的 id,后台用 getParamter(“name”)能取到 checkbox 的一组值。

9、javascript 常用的方面

  常用于数据输入校验和页面特殊效果等。

10、画出 Servlet 2.2 以上 Web Application 的基本目录结构

  

posted @ 2020-06-03 16:46  朝暮的小知识  阅读(165)  评论(0)    收藏  举报