Servlet面试题

一、什么是Servlet

Servlet是一种使用Java语言编写的程序,运行在Web服务器或应用服务器上,是介于浏览器和服务器之间的中间层,用于提供给客户提供动态交互的功能。Servlet可以处理来自客户端的HTTP请求,并生成响应返回给客户端。


二、Servlet处理客户端请求的几个步骤

  1. 用户在浏览器地址中输入一个URL,向服务器发起一个HTTP请求。

  2. 服务器接收到请求后,将请求转交给容器,容器根据请求的URL找到客户要访问的Servlet,并针对该请求创建一个单独的线程。

  3. 如果能找到对应的Servlet,则将Servlet装载进虚拟机执行加载、实例化和初始化(只在第一次加载的时候需要,如果第二次访问同一个Servlet,则不需要该过程),并调用Servlet实例对象的service方法处理请求,将生成的动态页面返还给容器。

    如果找不到对应的Servlet,则返回404错误代码,表示访问的资源不存在。

  4. 容器将响应消息封装成HTTP格式返回给客户端。


三、Servlet的生命周期

​ Servlet的生命周期主要分为以下几个过程:

  1. 加载。容器通过类加载器加载Servlet类。
  2. 实例化。通过调用Servlet的构造函数来创建一个Servlet实例对象。
  3. 初始化。调用Servlet对象的init()方法来执行初始化工作,该方法的调用介于Servlet对象被创建和Servlet给客户端提供服务之间,并且在Servlet的生命周期中只执行一次。
  4. 处理请求。当Servlet初始化后,容器就可以准备处理客户机请求了。当容器收到对这一Servlet的请求,就调用Servlet的service()方法,并把请求和响应对象作为参数传递。当并行的请求到来时,多个service()方法能够同时运行在独立的线程中。通过分析ServletRequest或者HttpServletRequest对象,service()方法处理用户的请求,并调用ServletResponse或者HttpServletResponse对象来响应。
  5. 销毁。 容器在卸载Servlet之前需要调用destory()方法,让Servlet自己释放其占用的系统资源,一旦destory()方法被调用,容器就不会再向这个Servlet发送任何请求了。如果容器需要这个Servlet,就必须重新创建并初始化一个实例。destory()方法和init()方法一样,在Servlet的生命周期中只会执行一次。

四、get和post的区别

  1. 使用情况不同。get一般用于从服务器上获取数据,post一般用于向服务器传送数据。
  2. 传递参数的方式不同。使用get方法向服务器上传数据时,一般将数据拼接在URL后面,对用户来说是可见的,安全性较低;而post方法是通过HTTP请求的附件进行数据传递的,数据对用户来说是透明的,安全性更高。
  3. 能提交的数据不同。get方式能提交的数据只能是文本,且大小不超过1024个字节,而post不仅可以提交文本还有二进制文件,理论上大小不受限制。

五、请求转发和重定向的异同

请求转发(forward):转发是服务器内部的跳转,客户端访问Servlet1,服务器内直接转发至Servlet2,给客户端返回Servlet2的内容,而客户端并不知情,客户端显示的地址栏还是Servlet1的地址。

请求重定向(redirect):重定向是客户端内部的跳转,客户端访问Servlet1,服务器会告诉客户端我需要访问Servlet2,则客户端再对Servlet2进行访问,客户端显示的地址是Servlet2的地址。

同:转发和重定向都提供了一个Servlet到另一个Servlet的跳转。

异:

  1. 地址栏显示不同。转发情况下客户端地址栏显示的是跳转前的Servlet地址,重定向情况下客户端地址栏显示的是跳转后的Servlet地址。
  2. 请求次数和效率不同。转发时客户端只发送一次请求,重定向客户端发送两次请求。因此转发效率相对较高,重定向效率相对较低。
  3. 数据共享情况不同。转发可以在两个页面共享请求的数据,而重定向不能。
  4. 跨域情况不同。重定向可以跳转到另一个服务器上,而转发不能。

六、session和cookie的区别

同:两者都用于储存信息。

异:

  1. 数据储存位置不同。session储存在服务器上,cookie储存在浏览器中。
  2. 安全性不同。session由于储存在服务器上,安全程度更高,而cookie储存在浏览器中,其他人可以很容易得到存放在本地的cookie,并进行cookie欺骗。
  3. 性能不同。cookie的性能较session更高。因为session储存在服务器中,当访问增多,服务器的性能会下降。
  4. 储存数据的大小不同。cookie保存的数据不能超过4K,很多浏览器都限制一个站点只能储存20个cookie,而session不受限制。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值