版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JavaWeb高频面试题及详细答案(实战完整版)一、JavaWeb基础概念1、什么是JavaWeb?和普通Java程序有什么区别?JavaWeb是基于Java语言开发的网页端、服务端应用程序,主要用于处理浏览器请求、实现业务逻辑、数据交互,运行在服务器端。和普通Java程序的核心区别:普通Java程序是本地独立运行,main方法作为入口,主动执行逻辑;JavaWeb程序没有main方法,由服务器(Tomcat)托管运行,被动接收浏览器请求、响应数据;JavaWeb依托HTTP协议通信,跨客户端、可多人同时访问,侧重网络交互和业务服务。2、简述HTTP协议的特点HTTP是超文本传输协议,是JavaWeb最核心的通信协议,主要特点如下:无连接:每次请求完成后立即断开连接,不会长期占用通道,节省服务器资源;无状态:服务器不会记录客户端的访问状态,每次请求都是独立的,无法识别用户身份;基于请求-响应模型:客户端发起请求,服务器处理后返回响应,单向触发;简单灵活:基于文本格式,传输简洁,支持GET、POST等多种请求方式。3、HTTPGET和POST请求的区别(面试必问)参数位置不同:GET参数拼接在URL后面,POST参数放在请求体中;安全性不同:GET参数暴露在地址栏和历史记录中,安全性低;POST参数隐藏,相对安全;数据大小限制:GET受URL长度限制,只能传少量数据;POST无明确大小限制,可传大数据、文件;缓存特性:GET请求默认可以被浏览器缓存,POST不会缓存;书签保存:GET可保存为书签,POST不支持;编码方式:GET只能使用ASCII编码,POST支持多种编码格式。实际开发中:查询数据用GET,提交数据、表单、上传文件用POST。二、Servlet核心面试题1、什么是Servlet?作用是什么?Servlet是JavaWeb的核心组件,是运行在服务器端的Java小程序,专门用来接收浏览器的HTTP请求、处理业务逻辑、返回响应结果。通俗来说,Servlet就是Java程序和浏览器之间的交互桥梁,负责处理Web层的所有请求调度。2、Servlet的生命周期(重中之重)Servlet生命周期由Tomcat服务器全权管理,分为3个核心阶段,对应3个方法:初始化阶段(init()):Servlet第一次被访问或服务器启动时执行,只执行一次,用于初始化资源、加载配置;服务阶段(service()/doGet()/doPost()):每次客户端请求都会执行,执行多次,根据请求方式分发处理逻辑;销毁阶段(destroy()):服务器关闭、项目卸载时执行,只执行一次,用于释放资源、关闭连接。补充:我们开发中一般重写doGet、doPost方法,不会重写service方法。3、Servlet是单例还是多例?有什么线程安全问题?Servlet是单例,整个项目中一个Servlet类只会创建一个对象,由所有用户请求共享。线程安全问题:多用户同时访问时,多个线程会操作同一个Servlet对象,如果在Servlet中定义成员变量,会出现数据覆盖、数据错乱的线程安全问题。解决方案:不要在Servlet中定义成员变量,所有临时数据、业务数据都定义在方法内部(局部变量),局部变量线程独立,不存在安全问题。4、forward和redirect的区别(请求转发和重定向)请求转发(forward):服务器内部跳转,全程只有一次请求,浏览器地址栏地址不变,可共享request域数据,只能跳转到当前项目内资源;重定向(redirect):浏览器二次跳转,服务器返回302状态码,浏览器重新发起新请求,地址栏地址改变,无法共享request数据,可跳转到外部网站、外部资源。使用场景:页面跳转、跨项目跳转用重定向;后台数据传递、页面内部跳转用请求转发。三、Cookie&Session会话技术1、为什么需要Cookie和Session?因为HTTP协议是无状态的,服务器无法识别每次请求的用户是谁,无法记录用户的登录状态、浏览记录。Cookie和Session就是用来保存用户会话状态、实现用户身份识别的技术。2、Cookie和Session的区别存储位置不同:Cookie存储在客户端浏览器,Session存储在服务器端;安全性不同:Cookie数据本地可见、可篡改,安全性低;Session数据存在服务器,安全性高;存储容量不同:Cookie容量很小,单条Cookie有限制;Session无严格容量限制;生命周期不同:Cookie可设置持久化时间,关闭浏览器可保留;Session默认浏览器关闭失效;资源消耗:Cookie不占用服务器资源;Session占用服务器内存,用户量大时会增加服务器压力。3、Session的工作原理用户第一次访问服务器时,服务器会创建一个专属Session对象,同时生成唯一的SessionID,通过Cookie发送并保存在浏览器端。用户后续每次访问,浏览器都会携带该SessionID,服务器根据ID匹配对应的Session对象,从而识别用户身份,实现会话保持。如果浏览器禁用Cookie,可通过URL重写的方式传递SessionID,保证会话正常。4、Session失效的场景有哪些?浏览器关闭,本地存储的SessionID丢失;Session超时(服务器默认超时时间一般为30分钟);手动调用session.invalidate()方法销毁会话;服务器重启、项目重新部署,服务器端Session数据清空。四、过滤器Filter&监听器Listener1、什么是Filter?作用是什么?Filter是JavaWeb的过滤器组件,运行在服务器端,在请求到达Servlet之前、响应返回浏览器之前进行拦截处理。常见使用场景:统一编码设置、登录权限拦截、敏感字符过滤、跨域处理、请求日志记录。2、Filter的生命周期init():服务器启动、项目加载时执行,只执行一次,初始化过滤器资源;doFilter():每次匹配到拦截路径的请求都会执行,执行过滤逻辑,放行或拦截请求;destroy():项目卸载、服务器关闭时执行,释放资源。3、Filter和Servlet的区别Servlet负责处理业务请求、响应数据,是核心业务处理器;Filter负责拦截请求、预处理和后处理,不处理具体业务,只做通用拦截逻辑;执行顺序:请求先经过Filter,再到达Servlet,响应时先经过Servlet,再经过Filter。4、什么是Listener?常用的监听器有哪些?Listener是Web监听器,用于监听Web项目的对象状态变化、生命周期变化,自动触发对应逻辑。常用监听器:ServletContextListener:监听项目启动和销毁;HttpSessionListener:监听Session创建和销毁,统计在线人数;ServletRequestListener:监听请求创建和销毁。五、Web域对象(四大域)1、JavaWeb四大域对象及作用范围域对象核心作用:在不同组件之间共享数据、传递数据pageContext:页面域,作用范围最小,仅当前页面有效,页面跳转后失效;request:请求域,当前一次请求有效,请求转发可共享,重定向、多次请求失效;session:会话域,当前用户整个会话有效,浏览器不关闭、会话不超时就一直有效;servletContext:应用域,整个项目全局有效,服务器启动到关闭全程有效,所有用户共享。优先级:尽量使用小范围域对象,避免内存浪费,能用request不用session,能用session不用servletContext。六、Tomcat服务器相关1、Tomcat的作用是什么?Tomcat是免费的Web服务器、Servlet容器,是JavaWeb项目的运行环境。核心作用:接收浏览器的HTTP请求、解析请求、调用对应的Servlet处理逻辑、返回响应结果,同时管理Servlet、Filter、Listener的生命周期。2、Tomcat是线程安全的吗?Tomcat本身支持多线程处理请求,每个请求都会开启一个独立线程处理,但由于Servlet是单例的,开发者如果不规范编码(定义成员变量),就会产生线程安全问题。Tomcat本身的容器机制是线程可控的,问题主要出在业务代码层面。3、Tomcat部署项目的方式有哪些?直接将war包放入tomcat的webapps目录;修改tomcat的server.xml配置文件,配置项目路径;IDE工具(IDEA/Eclipse)集成Tomcat,直接启动部署。七、常见异常与问题排查1、404、405、500报错含义404:资源不存在,路径写错、项目未部署、访问地址错误;405:请求方式不支持,比如Servlet只重写了doPost,浏览器用GET请求访问;500:服务器内部代码报错,Java代码空指针、数组越界、语法错误、逻辑异常。2、乱码问题如何解决?JavaWeb乱码核心原因:客户端和服务器编码格式不统一,默认ISO-8859-1不支持中文。解决方案:POST乱码:在Servlet开头设置request.setCharacterEncoding("UTF-8");GET乱码:修改Tomcat配置文件,统一UTF-8编码,或手动解码编码;响应乱码:设置response.setContentType("text/html;charset=UTF-8");统一过滤器:通过Filter全局设置编码,一劳永逸。八、经典综合面试题1、简述一次完整的浏览器访问JavaWeb项目的流程浏览器输入网址,发起HTTP请求;请求经过网络传输,到达Tomcat服务器;Tomcat解析请求地址,匹配对应的Filter过滤器;过滤器拦截请求,完成编码、权限等预处理,放行请求;Tomcat匹配对应的Servlet,调用对应请求方法(doGet/doPost);Servlet处理业务逻辑,操作数据,封装响应结果;响应结果再次经过过滤器后,返回给Tomcat;Tomcat将数据封装为HTTP响应,返回浏览器;浏览器解析响应数据,渲染页面,展示给用户。2、为什么Servlet不建议定义成员变量?Servlet
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年辽宁省瓦房店市高三生物上册期末考试检测卷含答案
- 2026年浙江省兰溪市高一化学上册期末考试试卷含完整答案(网校专用)
- 2026年山东省滕州市高三历史上册期末考试检测卷含完整答案【网校专用】
- 基于机器学习的鱼叉式钓鱼邮件检测技术:模型构建与实践优化
- 基于期权与技术创新理论的供应链契约决策模型:构建、应用与优化
- 基于有限元模拟的板料成形回弹过程优化设计方法研究:理论、实践与创新
- 基于有源RFID的指纹定位及仓库管理系统:技术融合与实践创新
- 基于时间序列数据的非线性结构恢复力:识别方法与模型构建研究
- 智能材料研发工程师考试试卷及答案
- 2026年一级建造师《建设工程经济》真题及答案解析(完整版80题含公式)
- 湖湘文化教学课件
- 农机安全知识培训课件教学
- 税务师事务所管理制度
- T/CWAN 0092-2023铜与钢异种金属钎焊技术导则
- 国家开放大学《公共部门人力资源管理》形考任务2答案
- DBJ51T 104-2018 四川省绿色环保搅拌站建设、管理和评价标准
- 《特种加工技术》课件 项目九-超声加工技术
- 北京陈经纶中学2024-2025学年八年级上学期期中物理试卷(含答案)
- 《狼图腾》是如何“图腾”的狼图腾编辑出版案例解析
- 新版出口报关单模板
- GB/T 22800-2023旅游饭店用纺织品
评论
0/150
提交评论