JSP 高频面试题及详细答案(实战版)_第1页
JSP 高频面试题及详细答案(实战版)_第2页
JSP 高频面试题及详细答案(实战版)_第3页
JSP 高频面试题及详细答案(实战版)_第4页
JSP 高频面试题及详细答案(实战版)_第5页
已阅读5页,还剩3页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JSP高频面试题及详细答案(实战版)一、JSP基础概念1、什么是JSP?JSP的作用是什么?JSP全称JavaServerPages,是一种运行在服务器端的动态网页开发技术,基于Java语言,用于开发动态Web页面。核心作用是将Java代码嵌入HTML页面中,实现页面数据动态渲染,弥补纯HTML只能写静态页面的缺陷。开发者可以在页面中编写Java逻辑、调用后台接口、操作数据,最终由服务器解析处理,返回纯HTML页面给浏览器展示。简单来说,JSP就是HTML+Java代码的服务端动态页面技术。2、JSP和Servlet的区别与联系?联系:JSP本质上就是Servlet。JSP页面第一次被访问时,服务器会自动把JSP编译成JavaServlet类,最终也是以Servlet的形式运行。二者都是JavaWeb的核心技术,用于处理服务端请求、响应客户端。生命周期一致,都遵循初始化、服务、销毁的流程。区别:侧重点不同:Servlet主打Java逻辑开发,适合处理业务逻辑、请求分发、数据处理;JSP主打页面展示,适合编写视图层代码,嵌入页面展示数据。代码结构不同:Servlet是纯Java类,HTML内容需要通过输出流打印;JSP以HTML为主体,内嵌Java代码片段。开发效率不同:JSP开发页面更便捷,不用手动输出HTML;Servlet开发逻辑更清晰,适合复杂业务。使用场景:早期开发常采用Servlet处理业务、JSP展示数据的MVC模式。3、JSP的优缺点是什么?优点:上手简单,贴合前端页面开发习惯,HTML和Java代码结合灵活。支持Java所有特性,可直接调用Java类、方法,功能强大。服务器自动编译,无需手动编译代码,部署运行便捷。支持自定义标签、EL表达式、JSTL标签,简化页面代码。缺点:前后端代码混杂,Java逻辑和HTML耦合严重,项目维护难度大。首次访问需要编译,存在短暂的延迟。不适合大型分布式项目,目前主流项目多采用前后端分离,JSP使用率大幅降低。页面冗余代码多,可读性较差。二、JSP运行原理与生命周期4、简述JSP的执行过程1、客户端浏览器向服务器发送JSP页面的访问请求;2、服务器接收请求,检查对应的JSP文件是否存在、是否修改过;3、如果是第一次访问或文件修改过,服务器会将JSP文件编译成ServletJava源文件,再编译成class字节码文件;4、服务器加载并实例化该Servlet,调用初始化方法完成初始化;5、调用服务方法,执行页面中的Java代码、拼接HTML内容;6、服务器将拼接好的纯HTML页面响应给浏览器,浏览器渲染展示;7、服务器关闭或项目卸载时,调用销毁方法,释放资源。5、JSP的生命周期包含哪些阶段?JSP生命周期和Servlet基本一致,分为四个核心阶段:编译阶段:服务器将JSP编译为Servlet字节码文件,仅首次访问或文件修改后执行。初始化阶段:调用jspInit()方法,仅执行一次,用于初始化资源。执行阶段:调用_jspService()方法,每次访问都会执行,处理请求、生成页面响应。销毁阶段:调用jspDestroy()方法,项目关闭、重启或页面销毁时执行,释放资源。注意:_jspService()方法由服务器自动生成,开发者无法重写;jspInit和jspDestroy可以手动重写实现自定义逻辑。三、JSP三大指令6、JSP三大指令是什么?各自的作用?JSP指令用于设置页面全局属性,不会输出到页面,仅在编译阶段生效,三大核心指令为:page、include、taglib。1、page页面指令:最常用,用于定义当前JSP页面的全局属性,作用于整个页面。常用属性:language:指定页面脚本语言,默认java;import:导入Java类包,唯一可以多次使用的page属性;pageEncoding:指定页面编码格式,解决中文乱码;contentType:设置页面响应类型和编码;session:指定页面是否开启session,默认true;errorPage:指定当前页面报错后跳转的错误页面;isErrorPage:标识当前页面是否为错误页面。2、include包含指令:用于静态包含其他页面文件,将被包含文件的代码原封不动合并到当前页面,编译时合并,仅执行一次编译。3、taglib标签库指令:引入自定义标签或JSTL标准标签库,简化页面Java代码编写,替代脚本片段。7、静态包含和动态包含的区别?(include指令vsinclude动作)1、静态包含<%@include%>编译阶段执行,将两个页面代码合并为一个Servlet文件编译;被包含页面的变量、方法可以直接在当前页面使用;不能传递参数;适合包含固定不变的公共页面,如头部、底部。2、动态包含<jsp:include>运行阶段执行,两个页面分别独立编译为Servlet,运行时嵌套执行;页面之间变量无法直接共享;支持通过<jsp:param>传递参数;适合包含动态变化的页面,灵活性更高。四、JSP九大内置对象8、JSP九大内置对象有哪些?各自作用和作用域?内置对象是JSP页面无需手动创建、可直接使用的9个核心对象,全部由服务器自动实例化。对象名作用描述作用域request封装客户端HTTP请求信息,可获取请求参数、请求头、转发请求单次请求有效response封装服务器响应信息,可设置响应头、重定向、输出页面内容单次请求有效session会话对象,存储单个用户的会话数据,用户多次请求共享单次会话有效application全局应用对象,存储整个项目的全局数据,所有用户共享整个项目运行期间pageContext页面上下文对象,可获取其他所有内置对象,操作四个作用域数据当前页面有效out页面输出流对象,用于向浏览器输出文本、HTML内容当前页面page代表当前JSP页面本身,等同于this当前页面exception异常对象,存储页面抛出的异常信息,仅错误页面可使用当前页面config页面配置对象,获取项目初始化配置参数当前页面9、JSP四大作用域详解?四大作用域用于存储数据,区别是数据存活时间和共享范围不同,优先级从小到大:page<request<session<application。page域(pageContext):仅当前页面有效,页面跳转后数据失效,最小作用域。request域(request):单次请求有效,服务器内部转发跳转数据保留,重定向、新请求数据失效。session域(session):单个用户会话有效,用户打开浏览器访问项目,直至浏览器关闭或会话超时,数据一直存在。application域(application):全局作用域,整个项目运行期间有效,所有访问项目的用户都可以共享该数据,服务器关闭后数据失效。10、request转发和response重定向的区别?请求次数:转发是一次请求;重定向是两次请求。地址栏变化:转发地址栏不变;重定向地址栏会更新为跳转后的地址。数据保留:转发可保留request域数据;重定向request数据会丢失。跳转范围:转发只能跳转当前项目内资源;重定向可以跳转到外部网站、跨项目资源。效率:转发效率更高,少一次请求响应。五、JSP脚本与标签11、JSP有哪些脚本元素?各自用途?JSP脚本用于在页面编写Java代码,分为三种:脚本片段<%代码%>:编写普通Java逻辑代码,如循环、判断、变量定义,代码会编译到_jspService方法中。表达式<%=变量/表达式%>:直接输出数据到页面,无需System.out打印,结尾不能加分号。声明<%!代码%>:定义全局变量、方法、静态代码块,代码编译在Servlet类体中,不在服务方法中,全局所有请求共享。12、EL表达式的作用和优势?EL表达式是JSP简化数据取值的语法,核心作用是替代JSP脚本取值,简化页面代码。基本语法:${变量名}优势:语法简洁,彻底避免页面大量Java脚本,代码更整洁;自动判空,变量为null时页面不输出空白内容,避免空指针异常;支持自动类型转换、对象属性取值、集合遍历取值;可直接获取四大作用域数据,自动从小到大匹配。13、JSTL标签库的作用及常用标签?JSTL是JSP标准标签库,用于替代JSP脚本的逻辑代码,配合EL表达式使用,实现页面无脚本开发。常用核心标签:<c:if>:条件判断,替代if判断;<c:forEach>:循环遍历集合、数组,替代for循环;<c:choose><c:when><c:otherwise>:多条件分支判断,替代if-elseif-else;<c:set>:定义、修改作用域变量;<c:out>:输出数据,防止XSS攻击。六、JSP常见问题与优化14、JSP页面中文乱码如何解决?乱码核心原因是编码格式不统一,统一设置UTF-8即可,三步解决:页面顶部page指令设置编码:<%@pagepageEncoding="UTF-8"contentType="text/html;charset=UTF-8"%>服务端请求编码设置:request.setCharacterEncoding("UTF-8");响应编码设置:response.setContentType("text/html;charset=UTF-8")。15、session和cookie的区别?存储位置:Cookie存储在客户端浏览器;Session存储在服务器端。安全性:Cookie可被篡改、窃取,安全性低;Session服务端存储,安全性更高。数据大小:Cookie有大小限制,只能存储少量字符串;Session可存储大量任意类型数据。生命周期:Cookie可手动设置永久有效;Session默认超时失效,浏览器关闭后失效。依赖关系:Session依赖Cookie,通过Cookie存储sessionId识别用户。16、如何避免JSP页面脚本冗余?优先使用EL表达式+JSTL标签替代所有Java脚本;公共页面使用include指令引入,减少重复代码;复杂业务逻辑移交Servlet或后台Java类处理,JSP只负责展示;自定义标签封装通用页面逻辑,简化代码。17、JSP第一次访问为什么慢?后续访问很快?首次访问时,服务器需要完成解析JSP文件、编译为Java文件、编译为class字节码、实例化Servlet、初始化资源一系列操作,耗时较长。后续访问时,只要JSP文件没有修改,服务器直接调用已经编译好的Servlet实例,无需重复编译,所以响应速度非常快。七、高频简答压轴题18、MVC模式在JSP中的应用?MVC是分层开发思想,在传统JSPWeb项目中:M(模型):JavaBean、Service、Dao层,处理业务逻辑和数据操作;V(视图):JSP页面,负责数据展示、页面渲染;C(控制器):Servlet,负责接收请求、调用业务层、跳转视图。核心目的:实现视图和业务逻辑解耦,提升代码复用性和可维护性。19、pageContext对象的核心作用?pageContex

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论