当前位置: 首页 > article >正文

Java经典面试题汇总:Java Web

1. JSP 和 servlet 有什么区别JSP 是 servlet 技术的扩展本质上就是 servlet 的简易方式。servlet 和 JSP 最主要的不同点在于 servlet 的应用逻辑是在 Java 文件中并且完全从表示层中的 html 里分离开来而 JSP 的情况是 Java 和 html 可以组合成一个扩展名为 JSP 的文件。JSP 侧重于视图servlet 主要用于控制逻辑。2. 什么是TomcatTomcat是一个免费的Web应用服务器Java编写的Web项目可以部署在上面用户在客户端请求时都是将请求发到Tomcat上Tomcat在将请求发到对应的项目上。3. Tomcat容器是如何创建Servlet类实例用到了什么原理当容器启动时会读取在webapps目录下所有的web应用中的web.xml文件然后对xml文件进行解析并读取servlet注册信息。然后将每个应用中注册的servlet类都进行加载并通过反射的方式实例化。有时候也是在第一次请求时实例化在servlet注册时加上1如果为正数则在一开始就实例化如果不写或为负数则第一次请求实例化。4. 拦截器和过滤器的区别?拦截器是基于java的反射机制的而过滤器是基于函数回调。拦截器不依赖与servlet容器过滤器依赖与servlet容器。拦截器只能对action请求起作用而过滤器则可以对几乎所有的请求起作用。拦截器可以访问action上下文、值栈里的对象而过滤器不能访问。在action的生命周期中拦截器可以多次被调用而过滤器只能在容器初始化时被调用一次。5.说一下 JSP 的 4 种作用域page代表与一个页面相关的对象和属性。request代表与客户端发出的一个请求相关的对象和属性。一个请求可能跨越多个页面涉及多个 Web 组件需要在页面显示的临时数据可以置于此作用域。session代表与某个用户与服务器建立的一次会话相关的对象和属性。跟某个用户相关的数据应该放在用户自己的 session 中。application代表与整个 Web 应用程序相关的对象和属性它实质上是跨越整个 Web 应用程序包括多个页面、请求和会话的一个全局作用域。6. JSP 有哪些内置对象作用分别是什么JSP 有 9 大内置对象request封装客户端的请求其中包含来自 get 或 post 请求的参数response封装服务器对客户端的响应pageContext通过该对象可以获取其他对象session封装用户会话的对象application封装服务器运行环境的对象out输出服务器响应的输出流对象configWeb 应用的配置对象pageJSP 页面本身相当于 Java 程序中的 thisexception封装页面抛出异常的对象。7. Servlet的生命周期servlet有良好的生存期的定义包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由javax.servlet.servlet接口中的init、service、destroy方法表达。1加载和实例化当Servlet容器启动或客户端发送一个请求时Servlet容器会查找内存中是否存在该Servlet实例若存在则直接读取该实例响应请求如果不存在就创建一个Servlet实例。2 初始化实例化后Servlet容器将调用Servlet的init()方法进行初始化一些准备工作或资源预加载工作。3服务初始化后Servlet处于能响应请求的就绪状态。当接收到客户端请求时调用service()的方法处理客户端请求HttpServlet的service()方法会根据不同的请求 转调不同的doXxx()方法。4销毁当Servlet容器关闭时Servlet实例也随时销毁。其间Servlet容器会调用Servlet 的destroy()方法去判断该Servlet是否应当被释放或回收资源。8. session 和 cookie 有什么区别存储位置不同session 存储在服务器端cookie 存储在浏览器端。安全性不同cookie 安全性一般在浏览器存储可以被伪造和修改。容量和个数限制cookie 有容量限制每个站点下的 cookie 也有个数限制。存储的多样性session 可以存储在 Redis 中、数据库中、应用程序中而 cookie 只能存储在浏览器中。9. 说一下 session 的工作原理session 的工作原理是客户端登录完成之后服务器会创建对应的 sessionsession 创建完之后 会把 session 的 id 发送给客户端客户端再存储到浏览器中。这样客户端每次访问服务器时都会带着 sessionid 服务器拿到 sessionid 之后在内存找到与之对应的 session 这样就可以正常工作了。10. 如果客户端禁止 cookie 能实现 session 还能用吗?可以用session 只是依赖 cookie 存储 sessionid如果 cookie 被禁用了 可以使用 url 中添加 sessionid 的方式保证 session 能正常使用。11. JSP工作原理1当用户访问一个JSP页面时会向一个Servlet容器Tomcat发出请求2如果是第一次请求页面或页面有所改动则servlet容器首先要把JSP页面假设为test.jsp转化为Servlet代码test.java再将其转化为test.class文件因为这个过程编译会耗费一定时间所以第一次访问或jsp文件有改动时访问时间有些长3JSP容器负责调用从JSP转换来的servlet这些servlet负责提供服务相应用户请求比如客户端发送表单要求servletformprocessor.java来处理则容器会建立一个线程调用formprocessor.java来处理该请求如果用户有多个请求则容器会建立多个线程处理多个请求4容器执行字节码文件包括调用的servletformprocessor.java字节吗并将其结果返回到客户端返回的最终方式是由servlet输出html格式的文件流12. JSP中动态include和静态include的区别静态include语法% include file文件名 %相当于复制编辑时将对应的文件包含进来当内容变化时不会再一次对其编译不易维护。动态include语法jsp:include page文件名,能够自动检查被包含文件当客户端对JSP文件进行请求时会重新将对应的文件包含进来进行实时的更新。13、JSTL是什么优点有哪些答JSTLJSP Standard Tag LibraryJSP标准标签库是一个不断完善的开放源代码的JSP标签库由四个定制标记库core、format、xml、sql和一对通用标记库验证器ScriptFreeTLV和PermittedTaglibsTLV组成。优点有在应用程序服务器之间提供了一致的接口最大程度的提高了web应用在各应用服务器之间的移植。简化了JSP和web应用程序的开发。以一种统一的方式减少了JSP中scriptlet代码数据可以达到没有任何scriptlet代码的代码。在我们公司的项目中是不允许任何scriptlet出现在JSP中。允许JSP设计工具与web应用程序开发的进一步集成。相信不久就会有支持JSTL的IDE开发工具出现。14. GET和POST的区别POST和GET都是向服务器提交数据并且都会从服务器获取数据。1、传送方式get通过地址栏传输post通过报文传输。2、传送长度get参数有长度限制受限于url长度而post无限制3、GET和POST还有一个重大区别简单的说GET产生一个TCP数据包POST产生两个TCP数据包长的说对于GET方式的请求浏览器会把http header和data一并发送出去服务器响应200返回数据而对于POST浏览器先发送header服务器响应100 continue浏览器再发送data服务器响应200 ok返回数据。建议1、get方式的安全性较Post方式要差些包含机密信息的话建议用Post数据提交方式2、在做数据查询时建议用Get方式而在做数据添加、修改或删除时建议用Post方式15. 什么是 XSS 攻击如何避免XSS 攻击即跨站脚本攻击它是 Web 程序中常见的漏洞。原理是攻击者往 Web 页面里插入恶意的脚本代码css 代码、Javascript 代码等当用户浏览该页面时嵌入其中的脚本代码会被执行从而达到恶意攻击用户的目的如盗取用户 cookie、破坏页面结构、重定向到其他网站等。 预防 XSS 的核心是必须对输入的数据做过滤处理。16. 什么是 CSRF 攻击如何避免CSRFCross-Site Request Forgery中文跨站请求伪造可以理解为攻击者盗用了你的身份以你的名义发送恶意请求比如以你名义发送邮件、发消息、购买商品虚拟货币转账等。 防御手段 验证请求来源地址 关键操作添加验证码 在请求地址添加 token 并验证。

相关文章:

Java经典面试题汇总:Java Web

1. JSP 和 servlet 有什么区别?JSP 是 servlet 技术的扩展,本质上就是 servlet 的简易方式。servlet 和 JSP 最主要的不同点在于, servlet 的应用逻辑是在 Java 文件中,并且完全从表示层中的 html 里分离开来,而 JSP 的…...

LaTeX长表格排版救星:除了longtable,supertabular和xtab怎么选?附双栏模式下的实战配置

LaTeX长表格排版终极指南:双栏模式下的跨页解决方案 在学术写作中,数据呈现的清晰度直接影响研究成果的传达效果。当遇到需要跨页的长表格时,尤其是在双栏排版的期刊论文或会议报告中,传统表格环境往往力不从心——表格被拦腰截断…...

3大创新特性重塑全面战争MOD开发体验:RPFM架构解析与实践指南

3大创新特性重塑全面战争MOD开发体验:RPFM架构解析与实践指南 【免费下载链接】rpfm Rusted PackFile Manager (RPFM) is a... reimplementation in Rust and Qt6 of PackFile Manager (PFM), one of the best modding tools for Total War Games. 项目地址: http…...

别再死记硬背了!用STM32 CubeMX+FreeRTOS搞懂任务通信,从停车场到厕所的实战比喻

用停车场和厕所的故事玩转FreeRTOS任务通信 想象一下,你正站在一个繁忙的停车场入口。车位指示灯显示"剩余3位",你顺利驶入。突然,指示灯变成"车位已满",后来的车辆只能在入口排队等待——这不正是FreeRTOS计…...

将claude code编程助手对接至taotoken服务

将Claude Code编程助手对接至Taotoken服务 1. 准备工作 在开始对接前,请确保您已具备以下条件:已注册Taotoken账号并获取有效的API Key,以及了解Claude Code的基本使用方法。Taotoken平台提供了兼容Anthropic协议的API通道,这使…...

OneMore:5个核心模块重塑你的OneNote生产力工作流

OneMore:5个核心模块重塑你的OneNote生产力工作流 【免费下载链接】OneMore A OneNote add-in with simple, yet powerful and useful features 项目地址: https://gitcode.com/gh_mirrors/on/OneMore 每天,全球数百万用户依赖OneNote进行知识管理…...

Simulink建模避坑指南:手把手教你用MAB规范检查工具,让模型一次达标

Simulink建模效率革命:用Model Advisor实现MAB规范的智能合规 当你面对一个2000个模块的Simulink模型时,手动检查每个命名规范和信号连接就像在迷宫里找出口——这绝不是工程师时间的最佳投资。真正的高手都在用Model Advisor这个"智能合规助手&quo…...

为什么你的Minecraft整合包分享总是不顺利?5个技巧彻底解决

为什么你的Minecraft整合包分享总是不顺利?5个技巧彻底解决 【免费下载链接】PCL Minecraft 启动器 Plain Craft Launcher(PCL)。 项目地址: https://gitcode.com/gh_mirrors/pc/PCL Plain Craft Launcher 2(简称PCL2&…...

开发智能客服 Agent 时利用 Taotoken 统一调度多模型处理复杂会话

开发智能客服 Agent 时利用 Taotoken 统一调度多模型处理复杂会话 1. 智能客服 Agent 面临的模型调度挑战 现代智能客服系统需要处理用户提出的多样化问题,从技术咨询到售后支持,从产品推荐到创意建议。单一模型往往难以在所有领域都表现出色&#xff…...

PvZ Toolkit:解锁植物大战僵尸无限可能,你的专属游戏改造神器

PvZ Toolkit:解锁植物大战僵尸无限可能,你的专属游戏改造神器 【免费下载链接】pvztoolkit 植物大战僵尸 PC 版综合修改器 项目地址: https://gitcode.com/gh_mirrors/pv/pvztoolkit 想要让经典游戏《植物大战僵尸》焕发新生吗?PvZ To…...

Wand-Enhancer:为WeMod用户提供的高级本地化体验增强实践

Wand-Enhancer:为WeMod用户提供的高级本地化体验增强实践 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/gh_mirrors/we/Wand-Enhancer Wand-Enhancer是一个开源工具&…...

Switch游戏文件管理利器:NSC_BUILDER 一站式解决方案

Switch游戏文件管理利器:NSC_BUILDER 一站式解决方案 【免费下载链接】NSC_BUILDER Nintendo Switch Cleaner and Builder. A batchfile, python and html script based in hacbuild and Nuts python libraries. Designed initially to erase titlerights encryptio…...

AntiMicroX:让任何游戏都支持手柄的终极解决方案

AntiMicroX:让任何游戏都支持手柄的终极解决方案 【免费下载链接】antimicrox Graphical program used to map keyboard buttons and mouse controls to a gamepad. Useful for playing games with no gamepad support. 项目地址: https://gitcode.com/GitHub_Tre…...

告别Photoshop!用Python的rawpy库直接读取相机RAW和DNG文件(附完整代码)

用Python解放摄影后期:rawpy库的RAW/DNG文件深度解析实战 每次拍摄完数百张RAW格式照片后,你是否也厌倦了在Lightroom中一张张调整基础参数?作为专业摄影师兼Python开发者,我发现用代码直接操作原始图像数据不仅能提升效率&#x…...

3分钟快速上手:AMD Ryzen调试利器SMUDebugTool完整指南

3分钟快速上手:AMD Ryzen调试利器SMUDebugTool完整指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://g…...

GPX Studio终极指南:3分钟学会免费在线编辑GPS轨迹文件

GPX Studio终极指南:3分钟学会免费在线编辑GPS轨迹文件 【免费下载链接】gpxstudio.github.io The online GPX file editor 项目地址: https://gitcode.com/gh_mirrors/gp/gpxstudio.github.io 你是否经常需要处理GPS轨迹文件却苦于找不到合适的工具&#xf…...

终极多显示器鼠标优化指南:如何解决Windows不同DPI显示器鼠标跳跃问题

终极多显示器鼠标优化指南:如何解决Windows不同DPI显示器鼠标跳跃问题 【免费下载链接】LittleBigMouse DPI Aware mouse move across screens 项目地址: https://gitcode.com/gh_mirrors/li/LittleBigMouse 在当今多显示器工作环境中,你是否遇到…...

苹果Q2营收创新高,库克离任前或借 WWDC 再推 Gemini 驱动 Siri

尽管供应链问题影响处理器,但过去几个月苹果 iPhone 营收增长 22% 达 570 亿美元。库克透露 Q2 营收 1112 亿美元创历年 3 月季度最佳,9 月将退休。6 月 WWDC 或推新功能。iPhone 营收增长,供应仍受限虽受供应链影响处理器,但 iPh…...

LinkSwift:一站式多网盘直链下载助手终极指南

LinkSwift:一站式多网盘直链下载助手终极指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘 / 迅…...

Switch大气层系统完整指南:5步完成自定义固件安装与虚拟系统配置

Switch大气层系统完整指南:5步完成自定义固件安装与虚拟系统配置 【免费下载链接】Atmosphere-stable 大气层整合包系统稳定版 项目地址: https://gitcode.com/gh_mirrors/at/Atmosphere-stable 大气层系统(Atmosphere)是任天堂Switch…...

BBDown深度解析:构建高效B站视频下载工作流的5个关键技术点

BBDown深度解析:构建高效B站视频下载工作流的5个关键技术点 【免费下载链接】BBDown Bilibili Downloader. 一个命令行式哔哩哔哩下载器. 项目地址: https://gitcode.com/gh_mirrors/bb/BBDown BBDown是一个强大的命令行式哔哩哔哩下载器,专为技术…...

终极指南:如何用QMCDecode免费解锁QQ音乐加密音频的完整教程

终极指南:如何用QMCDecode免费解锁QQ音乐加密音频的完整教程 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目录&#xff0c…...

ROS导航地图实战:手把手教你用C++发布一个20x20的nav_msgs::OccupancyGrid

ROS导航地图实战:从零构建20x20 OccupancyGrid地图 第一次在RViz里看到自己发布的地图时,那种成就感至今难忘。作为ROS导航栈的核心数据类型,OccupancyGrid地图的发布是每个机器人开发者必须掌握的技能。但官方文档往往只给出冷冰冰的参数说明…...

B站视频下载的3步智能解决方案:告别网络限制,高效管理你的学习资源

B站视频下载的3步智能解决方案:告别网络限制,高效管理你的学习资源 【免费下载链接】bilibili-downloader B站视频下载,支持下载大会员清晰度4K,持续更新中 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-downloader …...

怎样3分钟快速上手免费眼动追踪工具:完整视线控制方案

怎样3分钟快速上手免费眼动追踪工具:完整视线控制方案 【免费下载链接】eyetracker Take images of an eyereflections and find on-screen gaze points. 项目地址: https://gitcode.com/gh_mirrors/ey/eyetracker 你是否想过用眼睛就能控制电脑?…...

观察使用 Taotoken 后 C++ 服务调用大模型的延迟与稳定性表现

观察使用 Taotoken 后 C 服务调用大模型的延迟与稳定性表现 1. 接入背景与观测框架 在将 Taotoken 集成到 C 微服务架构的过程中,我们主要关注三个维度的可观测性指标:API 调用延迟分布、服务可用性表现以及资源消耗可视化。接入方式采用标准的 HTTP 客…...

暗通道去雾算法在无人机航拍图像处理中的应用与调优实战

暗通道去雾算法在无人机航拍图像处理中的实战调优指南 清晨的薄雾笼罩着城市上空,无人机缓缓升起,镜头下的建筑轮廓却变得模糊不清——这是每位航拍工程师都熟悉的困扰。雾霾不仅吞噬了细节,更让后续的目标识别、三维建模变得举步维艰。传统去…...

视频字幕提取终极指南:3步实现本地化硬字幕转SRT

视频字幕提取终极指南:3步实现本地化硬字幕转SRT 【免费下载链接】video-subtitle-extractor 视频硬字幕提取,生成srt文件。无需申请第三方API,本地实现文本识别。基于深度学习的视频字幕提取框架,包含字幕区域检测、字幕内容提取…...

【YOLOv11】077、YOLOv11边缘计算部署:边缘服务器与端侧协同推理

上周在客户现场调试,遇到一个典型场景:产线质检终端跑YOLOv11检测工件,模型精度没问题,但产线节奏一快就掉帧。终端设备算力有限,全量模型跑起来勉强够用,但遇到密集小目标时延迟直接飙到300ms以上。产线负责人指着监控屏问:“能不能既保证实时性,又不换硬件?”——这…...

告别跑飞!STM32L431低功耗设计:手把手教你配置WFI睡眠与可靠唤醒(附中断管理清单)

STM32L431低功耗实战:WFI睡眠模式配置与中断管理全指南 在嵌入式系统开发中,低功耗设计往往决定着产品的续航能力和市场竞争力。STM32L431作为STMicroelectronics推出的低功耗MCU系列代表,其灵活的电源管理模式为开发者提供了丰富的节能选项。…...