Servlet和JSP面试题整理

1. forward和redirect的区别?

  • 地址栏显示不同,forward地址栏显示的是原来的地址,因为其是由服务器请求资源,直接访问目标地址的URL,并读取响应内容,然后将内容发送至浏览器,浏览器并不知道目标地址。redirect显示的是新的URL,因为其是个是服务器根据逻辑发送状态码至浏览器,让浏览器重新请求目标地址,所以浏览器是知道目标地址的。
  • 数据共享方式不同,forward转发页面和目标页面均可共享request的数据。redirect则是不可以共享数据。
  • 通常应用的场景不同,forward一般用于用户登陆的时候,根据角色转发到相应的模块。redirect一般用于用户注销登陆时返回主页面和跳转到其它的网站等
  • 效率不同,通常认为forward的效率要更高

2. session和cookie有什么区别?

  • cookie可以被客户端禁用,但是客户端无法禁用服务端的session。
  • 存储的对象不同,session能够存储任意的Java对象,cookie只能存储String类型的对象。
  • 数据存储的地址不同,cookie数据保存在客户端,session数据保存在服务器端

3. Servlet有什么优点?

  • 可移植性好
    Servlet是用Java语言编写的,因此它可以移植到不同的操作系统和服务器上。
  • 安全性好
    Servlet也具有类型检查特征,并利用Java的垃圾收集和没有指针的设计,使得Servlet避免了内存管理等问题。
  • 高效性
    Servlet加载执行后会常驻服务器内存中,当再次受到客户端的请求时,服务器会产生新的线程而不是进程为客户端服务,这样就提高了响应速度。

4. 对Servlet线程安全的理解

  • 客户端第一次请求Servlet的时,tomcat会根据web.xml配置文件实例化servlet,当又有一个客户端访问该servlet的时候,不会再实例化该servlet,这就是JSP/Servlet容器默认采用的单实例多线程(这是造成线程安全的主因)处理多个请求的方式。
  • Servlet本身是无状态的,一个无状态的Servlet是绝对线程安全的,所以servlet是否线程安全是由它的实现来决定的,如果它内部的属性或方法会被多个线程改变,它就是线程不安全的,反之,就是线程安全的。
  • 避免使用实例变量 ,避免使用非线程安全的集合,在多个Servlet中对某个外部对象(例如文件)的修改是务必加锁,互斥访问,都能够提高线程安全性。

5. Servlet的生命周期

  • 当客户端第一次请求Servlet时,Servlet被加载到内存中,容器会创建Servlet实例,并调用其init()方法进行初始化工作。
  • 容器创建请求对象和响应对象,然后调用Servlet的service()方法为客户端提供服务。
  • 当Servlet不再被需要时,容器调用Servlet的destory()方法将Servlet实例销毁。
  • 注: 当客户端请求的Servlet已经存在于服务器内存时,容器会创建新的线程调用service()方法响应客户端请求。在Servlet的整个生命周期中,init()方法和destory()方法只会被调用一次。

6. JSP中动态INCLUDE与静态INCLUDE的区别?

  • 动态INCLUDE 用jsp:include动作实现它总是会检查所含文件中的变化,并且可以带参数,适合用于包含动态页面。
  • 静态INCLUDE 用include伪码实现,不会检查所含文件的变化,适用于包含静态页面。

7. get和post有何区别?

  • get参数传递通过url,post放在resquest body中
  • get请求参数有长度限制,post没有
  • get不安全,因为参数暴露在url中。post安全,参数是隐藏的
  • get请求只能进行url编码。post支持多种编码
  • get请求参数会被完整保留在浏览历史记录,而post不会被保留。
  • get产生一个tcp数据包;post产生两个tcp数据包。
  • get和post本质就是tcp链接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。

Servlet面试题整理相关推荐

  1. [转载] Spring面试题整理

    参考链接: Java中的动态方法Dispatch和运行时多态 Spring面试题整理 2018年03月07日 21:11:46 hrbeuwhw 阅读数:49116 Spring 概述 1. 什么是s ...

  2. Spring Boot 面试题整理

    Spring Boot 面试题整理 2018年08月12日 22:32:35 Time_sg 阅读数 19380 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文 ...

  3. 【JAVA面试】java面试题整理(4)

    版权声明:转载请注明 https://blog.csdn.net/qq_33591903/article/details/83473779 java面试题整理(4) JAVA常考点4 文件夹 1. S ...

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

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

  5. 尚学堂Java面试题整理

    博客分类: 经典分享 1. super()与this()的区别? - 6 -  2. 作用域public,protected,private,以及不写时的区别? - 6 -  3. 编程输出如下图形. ...

  6. Java面试题整理_P1

    Java面试题整理 1.Java基础 1.JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,Java 开发工具包,提供了 Java 的开发环境和运行环境.JR ...

  7. 想去一线大厂先过这一关, Java-SSM框架相关面试题整理!!!

    前言: 我们通常在面试的时候难免会慌张不已.想必,经历过的人都能体会.但是如果你提前预测和准备面试官要问你的问题,并想出合理的回答方式,就会轻松很多.所以接下来的面试题是我从自己和其他人的面试经历中总 ...

  8. 100道中高级Java面试题整理

    JavaEE面试题整理 一.Java基础篇 二.JVM篇 三.Tomcat篇 四.MyBatis篇 五.Spring篇 六.SpringMVC面试题整理 七.Redis篇 八.Mongodb篇 九.M ...

  9. 计算机组成算术流水线,计算机组成系统结构试题整理.doc

    计算机组成系统结构试题整理 选择题(50分,每题2分,正确答案可能不只一个,可单选或复选) (CPU周期.机器周期)是内存读取一条指令字的最短时间. (多线程.多核)技术体现了计算机并行处理中的空间并 ...

  10. 2010 .NET面试题整理之基础篇

    2010 .NET面试题整理之基础篇 zhuan 开篇语:对于已有工作经验的朋友,也许面试题已显得不怎么重要,但是如果你应聘的还仅仅是个普通的程序员,相信在很多的公司都还是会先拿出一套面试题,可能对整 ...

最新文章

  1. mysql fabric c .net_MySQL Fabric [01] 简介
  2. java.两个例子充分阐述多态的可拓展性
  3. spring4.x注解概述
  4. PowerDesigner 使用的一些技巧
  5. 这5部不容错过的超高评价纪录片,带你领略地球的魅力!
  6. 【学习 OpenCV】—— 将一个3通道的像素点转换到新的彩色空间
  7. win软件推荐:ACDSee Photo Studio Ultimate 2022(图片编辑器)
  8. unity序列帧动画的粒子特效
  9. 购买域名不得不注意的事项
  10. 安卓ps模拟器_用电脑玩安卓游戏!逍遥模拟器免安装版PC软件
  11. Improved Techniques for Training GANs翻译与理解
  12. python笑脸猫图案_酷叮猫编程课堂:python生成字符画
  13. 022-互惠合作|离职员工的关系网
  14. py6_Python 内置函数/普通自定义函数 及参数和返回值
  15. 四大金刚 数据结构_学习JavaScript数据结构与算法(三):集合
  16. 天人感应和小概率事件
  17. vivo手机html卸载不了,vivo手机怎么彻底卸载删除软件残留的垃圾文件呢
  18. C语言if和汇编jcc程序对比,逆向基础笔记六 汇编跳转和比较指令
  19. 【分块】[LUOGU 旅行规划] 分块+二分+凸包优化
  20. Adobe全家桶,设计师福利

热门文章

  1. 计算机管理键盘驱动一直黄标,教你键盘驱动程序显示黄色感叹号的处理办法
  2. 史上最全ActiveX控件下载大全
  3. Net硅谷动力网站 http://www.enet.com.cn/
  4. 9.0魔兽服务器显示不兼容,《魔兽世界》9.0界面卡读条解决方法
  5. android计时器代码百度网盘下载,计时器flash_求几个简单Flash计时器,可以自己设定时间的,百度云...
  6. 搭建cocos2d-x-android环境 Windows XP3 + Eclipse + NDKR7(或ndkr7b)+COCOS2DX(没有用到cygwin和minigw)...
  7. ubuntu 下openkore的运行
  8. 《创新者的窘境》读后感
  9. 乌班图Linux于windows系统怎么切换
  10. 华为metebook电脑如何修改应用商店中新应用的默认安装路径