版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Servlet、JSP高频面试题及详细答案(实战版)一、Servlet基础面试题1.什么是Servlet?Servlet的作用是什么?Servlet是JavaEE的核心组件,是运行在服务器端的Java小程序,专门用来接收、处理客户端的HTTP请求,并返回HTTP响应。核心作用:接收浏览器发起的请求参数,处理业务逻辑调用后端业务层、数据层代码,完成数据操作封装处理结果,响应页面数据、跳转页面或返回JSON数据实现Web项目的请求分发、权限控制、会话管理等通用功能2.Servlet的生命周期是什么?分别执行哪些方法?Servlet生命周期是指Servlet从创建、初始化、服务处理到销毁的完整过程,由Tomcat等Web容器统一管理,全程分为三个核心阶段。1)初始化阶段:init()方法Servlet实例创建后,容器只会调用一次init()方法,一般用于加载配置文件、初始化连接池、全局参数等一次性操作。默认情况下,Servlet在第一次被访问时初始化,也可通过配置设置服务器启动时预加载。2)服务处理阶段:service()/doGet()/doPost()方法客户端每发起一次请求,容器都会调用一次service()方法,service()会根据请求方式分发调用doGet()或doPost()。该方法可执行多次,是处理请求的核心方法。实际开发中我们一般重写doGet和doPost方法处理业务。3)销毁阶段:destroy()方法服务器关闭、项目卸载或Servlet实例销毁前,容器会调用一次destroy()方法,用于释放资源,比如关闭流、销毁连接池、清空缓存等。3.init()、service()、destroy()方法的执行次数?init():仅执行一次,Servlet初始化时执行service()/doGet()/doPost():请求一次执行一次destroy():仅执行一次,Servlet销毁前执行4.Servlet是单例还是多例?有什么线程安全问题?Servlet是单例,整个Web项目中一个Servlet类只会创建一个实例,所有客户端请求共用这一个实例。线程安全问题:多用户并发访问时,多个线程会同时操作同一个Servlet实例的成员变量,会出现数据覆盖、数据错乱的线程安全问题。解决方案:尽量不要在Servlet中定义成员变量将变量定义在doGet/doPost方法内部,作为局部变量(每个线程独立栈空间,互不干扰)必要时使用同步代码块,但不推荐,会降低并发性能5.doGet和doPost的区别?参数传递方式:GET参数拼接在URL地址栏后,POST参数放在请求体中数据长度:GET有URL长度限制,无法传输大数据;POST无长度限制,可传文件、大量数据安全性:GET参数明文可见,容易泄露、被篡改;POST相对更安全缓存特性:GET请求会被浏览器缓存,POST不会被缓存书签收藏:GET可保存为书签,POST无法收藏使用场景:GET用于查询、获取数据;POST用于新增、修改、提交数据、上传文件6.Servlet中forward和redirect的区别?(重点)forward是服务器内部跳转,redirect是客户端重定向,核心区别如下:跳转主体:forward服务器端跳转;redirect客户端浏览器跳转地址栏变化:forward地址栏不变;redirect地址栏变为新路径请求域数据:forward一次请求,request域数据保留;redirect两次请求,request域数据失效跳转范围:forward只能跳转到当前项目内资源;redirect可跳转任意网站、外部资源效率:forward效率更高,减少一次浏览器请求7.Servlet三大域对象分别是什么?作用域范围?Web开发中常用三个核心域对象,用于数据共享,作用域从小到大依次为:request(请求域)session(会话域)application(全局域)8.Session的工作原理?Session如何实现用户识别?服务器为每个首次访问的客户端创建唯一的Session对象,并生成唯一的SessionID。服务器会将这个SessionID通过Cookie发送给浏览器,浏览器后续每次请求都会携带该Cookie。服务器通过请求中的SessionID匹配对应的Session对象,从而识别不同用户,实现会话跟踪。如果浏览器禁用Cookie,可通过URL重写的方式传递SessionID,保证会话正常使用。9.Session失效的场景有哪些?浏览器关闭,本地存储的SessionIDCookie丢失Session超时(服务器默认超时时间一般30分钟,可手动配置)手动调用session.invalidate()方法主动销毁会话服务器重启、项目重新部署10.ServletConfig和ServletContext的区别?ServletConfig:属于单个Servlet,每个Servlet独有一个Config对象,用于获取当前Servlet的局部配置参数,作用域仅限当前Servlet。ServletContext:属于整个Web项目,全局唯一,所有Servlet共享,可获取项目全局配置、项目真实路径、全局资源,是application域的底层对象。二、JSP核心面试题1.什么是JSP?JSP和Servlet的关系?JSP是嵌入了Java代码的HTML页面,是JavaWeb的动态页面技术,用于快速开发展示动态数据的页面。核心关系:JSP本质就是ServletJSP页面第一次被访问时,服务器会将JSP编译成Java文件(Servlet),编译后执行的逻辑和Servlet完全一致。JSP侧重页面展示,Servlet侧重业务逻辑处理,开发中常用JSP做视图展示,Servlet做请求控制。2.JSP的九大内置对象有哪些?各自用途?JSP内置对象是容器自动创建、无需手动new可直接使用的对象,共9个:request:请求对象,获取请求参数、请求域数据response:响应对象,设置响应头、重定向、输出页面数据session:会话对象,存储用户会话数据application:全局对象,项目全局数据共享pageContext:页面上下文对象,可获取其他所有内置对象,拥有页面域page:代表当前JSP页面本身,等价于thisout:页面输出对象,向页面输出文本内容config:Servlet配置对象,获取Servlet配置参数exception:异常对象,仅错误页面可用,捕获页面异常信息3.JSP四种作用域范围?由小到大排序:page(页面域):仅当前页面有效,页面跳转后数据失效request(请求域):一次请求有效,服务器跳转有效,重定向失效session(会话域):当前用户浏览器会话有效application(全局域):整个项目运行期间所有用户共享4.JSP三种脚本标签的区别?<%%>代码脚本:定义Java语句、流程控制、业务代码,不会输出到页面<%=%>输出脚本:将变量、表达式结果直接输出到HTML页面,无需System.out<%!%>声明脚本:定义全局变量、方法,作用于整个JSP编译后的Servlet类,慎用,会引发线程安全问题5.JSP静态包含和动态包含的区别?(include)静态包含<%@include%>动态包含<jsp:include>6.JSP为什么比纯Servlet写页面更方便?纯Servlet输出页面需要大量使用response.getWriter()拼接HTML代码,代码冗余、可读性差、维护困难。而JSP直接以HTML为主,内嵌少量Java代码,贴合页面开发场景,开发效率更高,视图和代码分离更清晰。三、Servlet&JSP综合高频面试题1.GET请求乱码和POST请求乱码的解决方式?POST乱码解决:在doPost方法第一行设置请求体编码request.setCharacterEncoding("UTF-8");GET乱码解决:方式1:对参数手动解码newString(param.getBytes("ISO-8859-1"),"UTF-8")方式2:修改Tomcat配置文件,统一URL编码为UTF-8响应乱码统一解决:response.setContentType("text/html;charset=UTF-8");2.什么是过滤器(Filter)?和Servlet的区别?Filter是JavaWeb的拦截器组件,运行在服务器端,可拦截所有请求和响应,在请求到达Servlet之前、响应返回浏览器之后做预处理和后处理。核心用途:乱码统一处理、登录拦截、权限校验、资源过滤、日志记录区别:Servlet:处理具体业务逻辑,负责处理请求、返回结果Filter:拦截请求,做通用预处理,不处理具体业务3.过滤器的生命周期?init():服务器启动时执行一次,初始化过滤器doFilter():拦截到请求就执行,可放行或拦截请求destroy():项目卸载、服务器关闭时执行一次,释放资源4.会话跟踪技术有哪些?HTTP协议是无状态协议,服务器无法默认识别用户,需要会话跟踪技术记录用户状态:Cookie:客户端存储会话信息,轻量、无服务器压力Session:服务器端存储用户数据,安全性高URL重写:拼接SessionID到URL,适配禁用Cookie的浏览器隐藏表单域:通过隐藏input标签传递标识参数5.Cookie和Session的区别?存储位置:Cookie存客户端浏览器;Session存服务器端安全性:Cookie可被篡改、窃取,安全性低;Session数据保密,安全性高存储容量:Cookie
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建筑施工安全监理工作指导手册
- 能源项目推进与效益量化评估表
- 有一定经验厨师学习分子料理掌握创新烹饪手法操作流程
- 跨境电商订单数据分析与预测模型指南
- 城市轨道交通运营管理司乘人员运行效率与服务质量绩效衡量表
- 2026年建筑工程师结构设计综合试卷(附答案)
- 2026年土木工程师考试建筑结构专业基础试卷
- 影视娱乐行业考评表
- 2027届陕西省靖边县中考考前最后一卷物理试卷含解析
- 游戏设计师游戏开发创新度KPI考核表
- 2026年4月自考03346项目管理试题及答案
- 2026血脂异常管理指南解读与实践:科学降脂护心策略
- 2026年链家新人培训销售考试试题及答案
- 走心机刀具培训
- 3000米长跑训练方法
- 2025年下半年广州市南沙区第二次招考事业单位工作人员易考易错模拟试题(共500题)试卷后附参考答案
- (正式版)DB41∕T 2916-2025 《建设占用耕地耕作层再利用操作规程》
- 瑞幸咖啡财务舞弊案例分析
- B超室感控知识培训内容课件
- 员工福利管理办法
- 马工程教材刑法分论课件
评论
0/150
提交评论