Java Web常见面试题

1、JSP和Servlet有什么区别

  • jsp经过编译后变成类Servlet(JSP的本质就是Servelt,JVM只能识别java的类,不能识别jsp的代码,于是web容器将jsp的代码编译成JVM能够识别的java类,也就是servelt)
  • jsp更擅长表现于页面显示,而servlet更擅长于逻辑控制
  • jsp是servlet的一组简化,使用jsp只需要完成程序员需要输出到客户端的内容,jsp中的java脚本如何镶嵌到一个类中,由jsp容器完成;而servlet是个完整的java类,这个类的service方法(doGet(),doPost())用于生成对客户端的响应

2、Jsp有哪些内置对象,作用是什么

  • request:封装客户端的请求,其中包含来自Get或Post请求的参数
  • response:封装服务器对客户端的响应
  • pageCOntext:通过该对象可以获取其他对象
  • session:封装用户对话的对象
  • application:封装服务器运行环境的对象
  • out:输出服务器响应的输出流对象
  • config:Web应用的配置对象
  • page:JSP页面本身(相当于Java程序中的this)
  • exception:封装页面抛出异常的对象

3、说一下jsp的4种作用域

  • page:与一个页面相关 的对象和属性。只在当前页面有效,所以不能作为在页面间传递数据
  • request:代表与web客户端发出的一个请求相关 的对象和属性。请求发送的时候创建,请求结束销毁。所以可以在服务端跳转时传递参数数据。 最常用的,因为周期短,需要在页面显示的临时数据可以置于此作用域
  • session:代表某个用户与服务器建立的一次会话 相关的对象和属性。跟某个用户相关的数据应该放在用户自己的session中,一般用于登录验证时存放用户状态。用户第一次发起请求时创建,用户退出时才销毁
  • application:代表与整个Web应用程序相关 的对象和属性。它实质上是跨越整个Web应用程序,包括多个页面、请求和会话的一个全局作用域

4、session和cookie的区别?

session

HTTP协议时无状态的协议,所以服务端需要记录用户的状态时,就需要用某种机制来识别具体的用户,这个机制就是session。服务端 要为每个不同的用户创建特定的session,来标识这个用户。这个session是保存在服务端的,有一个唯一标识 。在服务端保存session的方法有很多,内存、数据库、文件都可以。当服务器集群的时候,如大型的网站,会有专门的session服务器集群,用来保存用户会话,这个时候session是放在内存的,使用一些缓存服务来放session

cookie

服务端如何根据session来识别客户呢?这时候就要用上cookie了。第一次创建session的时候,服务端会在HTTP协议中告诉客户端,**需要在cookie里面记录一个session ID ** ,以后每次请求把这个session ID发送到服务器,这样服务器就能识别这个用户了。如果客户端的浏览器禁用了cookie怎么办?这种情况下,会使用一种叫做URL重写的技术来进行会话跟踪,即每次HTTP交互,URL后面都会被附加上一个诸如sid=xxxx这样的参数,服务端据此来识别用户。

区别

  • 保存的位置不同:session是保存在服务端,而cookie是保存在客户端
  • 存储没人不同:cookie只能存储字符串,而session存储结构类似于hashtable的结构,可以存放任何类型
  • 存储大小:cookie最多可以放4k大小的内容,session没有限制
  • session的安全性要高于cookie。很显然,用户信息是很隐秘的东西,放在客户端是很危险的。
  • 应用场景:cookie可以用来保存用户的登录信息,如果删除cookie则下一次用户仍需要重新登录;session类似于拿着钥匙去开锁,拿到的就是我们个人的信息,一般可以在session中存放个人的信息或者购物车的信息
相关推荐
泡海椒3 分钟前
Java 后端最优 PDF 导出方案:jquick-pdf 项目引入与快速测试
java·开发语言·pdf
Evand J4 分钟前
【MATLAB例程】二维Astar路径规划与AOA-TDOA定位仿真。完整代码,附下载链接。包运行成功,带中文注释
开发语言·matlab·路径规划·代码·定位·融合定位
李永奉7 分钟前
中科蓝讯SDK开发-耳机项目功耗问题排查教程
c语言·开发语言·嵌入式硬件·物联网·智能手机
阿飞7669 分钟前
订单超时自动关单:RabbitMQ 延迟队列 + 定时任务"双保险"实践
java
二炮手亮子15 分钟前
使用云服务+hermes+mino模型 我用微信操控服务器自己编程并部署实操
java·语言模型·ai编程
她的男孩19 分钟前
安全同事找我要"上周所有登录失败记录",我查完数据库:一条都没有
java·后端·架构
m0_5873830023 分钟前
本地同城无人机作业接单系统源码:架构拆解与抢单调度实现
java·小程序·架构·需求分析
FantanLee27 分钟前
面试级「分布式 ID 设计方案」
java
linx29537 分钟前
第七章 · 标准库容器、算法与 ranges
c语言·开发语言·数据结构·c++·算法
青春易逝丶38 分钟前
Maven
java·maven