1.request的作用有哪些?
获取客户端传递的参数值
获取客户端请求头信息
获取会话
获取转发对象
可作为容器使用, 利用setAttribute()和getAttribute()方法进行参数传递
2.session有什么作用。
因为http协议是无状态的协议,但我们需要保存客户端在多次请求之间状态信息的时候,我们需要session来维护客户端的状态
Session对象类似于一个容器,可以存放任何对象,以供不同页面间共享数据
3.cookie被禁止后怎样使用session?
URL重写,对所有页面涉及的连接都使用url重写方式。从而将JsessionID以参数的方式链接到URL后面。保证每次页面提交时服务器都能获得sessionID,从而维持和客户端的状态。
4.编写一个servlet的步骤。
1)新建一个类继承于HttpServlet
2) 重写其中的doGet和doPost方法
3)完成servlet的注册。在web.xml中加入<serlvet><servlet-mapping>标记
5.doGet和doPost方法各有什么作用?
doGet完成Get方式的请求处理。doPost完成Post方式请求处理
Get和Post两者区别在于:Get用于资源查找,Post主要用于数据传输;
6.为什么要为servlet配置URL映射?
配置URL的主要作用是客户端通过什么路径能去找到Servlet;
7.解释web.xml中怎样配置一个servlet?
Servlet注册包括两部分,第一,容器如何找到Servlet,利用
<servlet>
</servlet>
完成。
第二,客户端如何找到当前的Servlet。利用
<servlet-mapping>
</servlet-mapping>
完成。
8.servlet的类架构是什么样的。
Servlet是Sun公司提供的用户和WEB服务器通讯的接口,所有Servlet都必须实现这个接口。J2EE API中提供了一个类GenericServlet对Servlet接口作了简单的实现。同时,这个类还实现了ServletConfig接口。来对Servlet进行一些配置。GenericServlet有一个专门针对于Http协议进行实现的一个子类HttpServlet。
9.谈谈servlet的生命周期?
1)容器装载并实例化Servlet
2) 调用init()方法完成Servlet初始化
3)当请求到达时,调用service()方法处理请求,产生响应
4)销毁阶段调用destroy()方法完成清理工作。
10.如何得到客户端的请求参数?
request.getParameter()单个数据
request.getParameterValues()一组数据
request.getParameterMap()返回所有的键值对
11.request.getParameter和request.getParameterValues的区别,它们的返回值是什么类型?
request.getParameter获得单个表单的数据。返回值是String类型。而request.getParameterValues()是获得表单元素名相同的一组数据。返回值是String[]数组。
12.response对象的作用?
Response对象是对服务器的响应信息作出的一个封装对象。主要作用有:
1)可以从response中获得输出流对象,从而可以向客户端输出信息
2)可以实现重定向,response.sendRedirect();
3) 可以设置响应头和状态码。
4)可以实现URL重写
13.request对象的作用范围是什么?
一次请求响应完成后,就会销毁。
14.session对象的作用范围是什么
在一个用户会话期间有效。针对于一个用户的浏览器。同一个浏览器和它的子窗口都是同一个会话。
15.ServletContext对象的作用范围是什么。
存在于整个web应用。当WEB容器关闭时,才会销毁。
16.session对象是什么时候产生的,什么时候销毁的?
当用户访问web容器,而容器调用了request.getSession()方法后,产生Session对象。用以保存客户端在服务器上的信息。同时给这个Session分配一个唯一的标识ID。并产生一个set-cookies的响应头,以JsessionID作为键,标识ID作为值向客户端的cookie中写入内容,当客户端下次再发出请求时,就会将这个JsessionID以请求头的方式向服务器进行发送。而容器读取了JsessionID请求头后,就会根据这个ID找到相对应的Session对象,从而维持服务器和客户端的状态。
销毁session方法有三种
1)session超时 (当设置为负值是是永不过期)
2)调用session对象的invalidate()方法
3)web容器关闭或崩溃
程序能控制是前二种。
17.session的实现原理是什么?
18.session在什么时候使用?
需要保持和客户端状态时使用。如项目中,登陆时,使用session保持用户信息。购物车制作时,使用session保持用户的购物信息
19.session和cookie有什么区别。
1)session保存在服务器,客户端不知道它的信息;而cookie保存在客户端,服务器知道其中的信息。
2)session中 保存的是对象,而cookie中保存的是字符串
3)session是不能区分路径的,同一个客户在访问web服务器之间,在任何地方都能够访问得到session中保存的信息的。而cookie如果设置了路径参数,同一个网站下的不同路径的cookie互相是访问不到的。
4)session是以cookie或URL重写为基础的,默认使用cookie来实现,系统会创造一个名为JSESSIONID的输出cookie,我们叫做session cookie,以区别persistent cookies,也就是我们通常所说的cookie,注意session cookie是存储于浏览器内存中的,并不是写到硬盘上的,这也就是我们刚才看到的JSESSIONID,我们通常情是看不到JSESSIONID的,但是当我们把浏览器的cookie禁止后,web服务器会采用URL重写的方式传递Sessionid,我们就可以在地址栏看到sessionid=KWJHUG6JJM65HS2K6之类的字符串。
20.Http协议是无状态的,服务器是用什么方式为一个客户端保存状态的?
l
l
l
l
21.servlet或jsp能同时响应多个客户端的请求吗?是通过什么方式做到的?
能够。多线程
22.请求转发和重定向的区别。
a)forward客户端请求服务器一次,redirect请求服务器两次,所以forward方式可以获得request作用域的信息,而redirect方式不能获得。
b)forward由request对象发出,而redirect由response对象发起
c)redirect()可以跨越不同的工程之间。而forward()只能在一个工程中使用
d)内部转发不会引起地址栏的变化,而重定向会导致地址栏变化
23.谈谈监听器的原理、配置及使用。
用于监听请求,会话,上下文件对象相关事件,并在事件发生后作出处理。
只要写一个类实现相应的监听器接口,就写了一个相应的监听处理类。
在web.xml中使用<listener><listener-class></listener-class></listener>
24.谈谈过滤器的原理,配置及使用。有多个过滤器时执行的顺序?
过滤器允许你拦截请求,还可以允许你控制响应。还可以能够对请求头、响应头、消息体的数据进行更改。同时,还可以对返回的流信息进行压缩。项目中使用字符编码格式的处理使用了过滤器和包装器。过滤器需要在web.xml容器中进行注册,才能被web容器识别
<filter><filter-name></filter-name><filter-class><filter-class></filter>
<filter-mapping><filter-name></filter-name>
<url-pattern></url-pattern >(<servlet-name></servlet-name>)</filter-mapping >
如果有多个过滤器优先执行url-pattern,再执行servlet-name;如果有多个url-pattern按web.xml布署顺序执行。
25.请谈谈请求转发的原理?
请求转发是针对同一工程下资源的转发。客户端在这个过程中,只请求服务器一次,请求转发由request.getRequestDispather(“”).forward(request,response).
26.请说明重定向的原理?
重定向由response发起。当用户请求服务器时,由服务器向客户端发送一个302的状态码,并产生一个Location的响应头。当客户端接受到这样的状态码时,会马上读取Location响应头,并将地址栏改为Location里的内容。然后再向服务器发出请求。这个过程中客户端发出了两次请求。并可向不同的服务器发送请求。
27.你在项目中是如何处理乱码的?
1)使用过滤器和包装器设置统一的字符编码格式。
2)页面使用统一的编码格式<%@page contentType=”text/html;charset=utf-8”%>
28.web项目中,数据共享有哪些方式 ?如果实现的?
Request,session,application(servletContext).
29.servlet中,如何取得HTTP请求头信息?
Request.getHeader();
Request.getHeaders();
30.servlet中的service方法在什么时候调用?
每一次客户端请求一个servlet资源的时候,由web容器调用。