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 的基本目录结构


浙公网安备 33010602011771号