web编程面试题

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-name></servlet-name>Servlet名字

     <servlet-class></servlet-class>Servlet类的全路径

</servlet>

完成。

第二,客户端如何找到当前的Servlet。利用

<servlet-mapping>

     <servlet-name></servlet-name>Servlet名字

     <url-pattern></ url-pattern >客户端请求路径

</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协议是无状态的,服务器是用什么方式为一个客户端保存状态的?

        Hidden表单域  

        cookie  

        session  

        URL重写

 

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).   通过setAttribute和getAttribute实现

 

29.servlet中,如何取得HTTP请求头信息?

Request.getHeader();

Request.getHeaders();

 

30.servlet中的service方法在什么时候调用?

每一次客户端请求一个servlet资源的时候,由web容器调用。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值