Servlet面试题

  • servlet的生命周期
  • servlet的线程安全问题
    • 如何解决?
  • get 与 post 区别

servlet的生命周期

  1. servlet初始化—init()方法
    ①第一次创建Servlet时调用,只会执行一次初始化
    ②默认是第一次处理请求时创建Servlet,也可以设置为服务器第一次启动时就创建Servlet

    public void init() throws ServletException {// 初始化代码...
    }
    
  2. servlet处理请求:service()方法
    ①处理来自浏览器的请求,将处理后的结果响应给浏览器
    ②servlet接收到请求后,调用service方法来进行处理,service中针对不同的请求进行匹配,选择调用doPost或doGet等方法
    ③在编写servlet时,需要实现doPost/doGet等方法

    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String method = req.getMethod();long lastModified;if (method.equals("GET")) {//处理get请求}} else if (method.equals("HEAD")) {} else if (method.equals("POST")) {this.doPost(req, resp);} else if (method.equals("PUT")) {this.doPut(req, resp);} else if (method.equals("DELETE")) {this.doDelete(req, resp);} else if (method.equals("OPTIONS")) {this.doOptions(req, resp);} else if (method.equals("TRACE")) {this.doTrace(req, resp);} else {//其他}
    }
    
  3. servlet长时间没有被调用或服务器关闭,会调用destroy()方法销毁servlet,由JVM垃圾回收器来回收servlet
    destroy方法只会执行一次
    执行后,该servlet被标记为垃圾,等待回收

servlet的线程安全问题

servlet不是线程安全的

servlet是单例的,初始化后,只有长时间不再接受请求或容器关闭时,这个servlet才会销毁,多个请求线程都访问的是这一个servlet

一个servlet在处理第一次请求前进行实例化,初始化。或在容器启动时初始化(需要设置)
后续调用这个servlet的请求,都是独立的线程来调用service方法,存在线程安全问题

如何解决?

  1. 不在servlet中使用成员变量,线程之间没有资源竞争,线程安全

  2. 使用ThreadLocal为每个线程提供一份独立的变量

  3. 给处理请求的方法加锁;造成阻塞

    protected synchronized void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {}
    
  4. 实现SingleThreadModel接口;会为每个用户创建一个servlet实例,性能差(已弃用)

    public class DormServlet extends HttpServlet implements SingleThreadModel
    

get 与 post 区别

HTTP请求默认使用get

get post
参数在url中 参数在 resquest body 请求体中
有长度限制 没有长度限制
暴露在url中,不安全 隐藏在请求体中,安全
只能url编码 支持多种编码
产生一个TCP数据包 产生两个TCP数据包
获取服务器中的数据 修改服务器上的数据

Servlet面试题相关推荐

  1. Tomcat+Servlet面试题都在这里(修订版)

    前言 只有光头才能变强. 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 下面是我整理下来的Servlet知识点:  图上的 ...

  2. JSP和Servlet面试题精选

    1,JSP的内置对象有哪些? 答:JSP共有9个内置对象分别是: request:用户端请求,此请求会包含来自GET/POST请求的参数 response:网页传回用户端的回应 pageContext ...

  3. 一家美资企业的java servlet面试题

    filter 的作用是什么?主要实现什么方法?dofilter方法里面的2个参数request 和 response  他问 这两个接口的全称是什么? 1.filter使用户可以改变一个request ...

  4. jsp因为端口无效不能启动_Java:JSP和Servlet面试题总结

    1.Get和Post的区别 在页面提交数据时,get的数据大小有限制4k,post没有限制,get请求提交的数据会在地址栏显示,post不显示,所以post比get安全. 2. servlet的执行流 ...

  5. java servlet面试题_Java面试题总结系列 Servlet

    Servlet技术主要是为了使用Web上的HTTP协议而设计的.servlet是在WEB服务器上运行的程序.Java Servlet可以用于处理客户请求或生成动态Web网页.先一个实例.然后解释. 先 ...

  6. [转载] JAVA面试题大全(part_1)

    参考链接: 对Java中派生类方法更严格的访问 JAVA面试题大全(part_1) 1.面向对象的特征有哪些方面 (1)抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目 ...

  7. JAVA面试题大全(part_1)

    JAVA面试题大全(part_1) 1.面向对象的特征有哪些方面 (1)抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只 是 ...

  8. JAVA程序员笔试面试题汇总及答案 .

    1.面向对象的特征有哪些方面 (1)抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只 是选择其中的一部分,暂时不用部分细节. ...

  9. SSH java 面试题

    1 .  BeanFactory的作用是什么?   [中]    BeanFactory是配置.创建.管理bean的容器,有时候也称为bean上下文.Bean与bean的依赖关系,也是由BeanFac ...

  10. 一份超详细的IBM公司JAVA基础面试题附答案以及解析(题库)

    第一章 Java概述 笔试题 一.填空题 1.[基础题]Java是一种先 编译 后 解释 运行的语言. 二.选择题 三.名词解释 1.[基础题]J2SE:Java 2 Standard Edition ...

最新文章

  1. TF版本升级问题:成功解决AttributeError: module tensorflow has no attribute mul
  2. PTA L2-001 紧急救援 (点带权最短路)
  3. 域控制器安装完成没有_tcp_udp_究竟什么才叫域控制器?
  4. python程序题求roc-auc是一种常用的模型评价指标_Keras 利用sklearn的ROC-AUC建立评价函数详解...
  5. Eclipse调试进入JDK源码
  6. 人机协作机器人发展趋势_一文了解全球工业机器人发展现状:轻型化、柔性化及人机协作成为发展趋势...
  7. 手把手教你云服务器如何搭建typecho博客网站(包括配置免费SSL证书)
  8. java----内省
  9. qt-5.9.7-vc14h73c81de_0
  10. 模拟器计算机内存不足,网易mumu模拟器
  11. 如何把自己打造成技术圈的papi酱
  12. 班级网站的设计与实现
  13. 如何使用checkstyle添加注解_如何使用企业微信接受微信好友申请?如何用个人微信和企业微信同时添加客户?...
  14. 毕业设计 -- 微信小程序选题大全(一)
  15. 计算机中z代表啥子意思,ctrl z英文是什么意思
  16. 堆和栈的区别 之 数据结构和内存
  17. 【UmiJS 3.x入门】
  18. Python mariadb
  19. iOS--归档和解档(Archiver)、(UnArchiver)
  20. 银汇通支付普及pos机功能常识

热门文章

  1. 全国网络安全等级保护测评机构推荐目录
  2. C语言编写双人贪吃蛇游戏
  3. [Android实例] 【eoeAndroid社区索引】android开发基础之定位篇
  4. 服务器session文件什么时候销毁,node中session存储与销毁,及session的生命周期
  5. java导论pdf下载,人工智能导论 PDF 下载
  6. MT7621A路由器芯片参数/处理器资料(原理图/CPB)介绍
  7. 锋利的jQuery总结(三)
  8. 华为认证hcia含金量_华为hcna认证用处大吗 什么是hcna
  9. Visual Studio2022 离线安装包下载
  10. 软件工程 第一章重点