JSP 真实企业面试题(含答案)_第1页
JSP 真实企业面试题(含答案)_第2页
JSP 真实企业面试题(含答案)_第3页
JSP 真实企业面试题(含答案)_第4页
JSP 真实企业面试题(含答案)_第5页
已阅读5页,还剩1页未读, 继续免费阅读

下载本文档

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

文档简介

JSP真实企业面试题(含答案)本套面试题贴合JavaWeb后端日常面试场景,剔除书面化空洞内容,聚焦实战原理、高频考点和工程易错点,适合初级、中级Java开发者面试备考。一、基础概念高频题1.简述JSP的工作原理,JSP是如何执行的?参考答案:JSP本质是Servlet的简化封装,运行时最终会被编译为Servlet执行,核心执行流程分为四步:1.翻译阶段:客户端首次请求JSP页面时,Tomcat等服务器会将JSP文件翻译成纯Java源代码(.java文件);2.编译阶段:服务器调用Java编译器,将.java文件编译为字节码文件(.class文件);3.实例化与初始化:服务器加载class文件,创建Servlet实例,执行init()方法完成初始化;4.执行响应:每次客户端请求都会调用service()方法,处理请求、拼接页面内容,最终返回HTML响应给浏览器。补充:JSP页面只会在首次访问或文件修改后重新翻译编译,后续访问直接执行字节码,效率更高。2.JSP和Servlet的区别与联系?实际开发中如何选型?参考答案:联系:JSP底层就是Servlet,JSP页面运行后会被编译为HttpServlet的子类,拥有Servlet所有特性。区别:1.书写形式:Servlet以Java代码为主,输出HTML需要手动拼接;JSP以HTML为主,内嵌少量Java代码;2.职责定位:Servlet擅长业务逻辑处理、请求分发、参数接收;JSP擅长页面展示、数据渲染;3.开发效率:JSP页面开发更快,适合视图层;Servlet逻辑更清晰,适合控制层。开发选型:遵循MVC思想,Servlet做控制器(Controller)处理业务,JSP做视图(View)展示数据,杜绝在JSP中写大量业务代码。3.JSP的三大指令是什么?各自作用是什么?参考答案:JSP指令以<%@指令名%>声明,用于设置页面全局属性,仅在页面翻译阶段生效,共三大核心指令:1.page指令:最常用,用于定义页面全局属性,比如页面编码、导入类、设置页面异常、会话开启关闭等;常用属性:contentType、pageEncoding、import、session、errorPage;2.include指令:静态包含,用于引入其他页面文件(jsp、html),编译时将被包含页面代码直接合并到当前页面,最终只生成一个Servlet文件;3.taglib指令:引入自定义标签库或标准标签库(JSTL),用于替换JSP内嵌Java代码,实现页面代码整洁化。二、核心语法与内置对象4.JSP中<%%>、<%=%>、<%!%>、<%----%>的区别?参考答案:1.<%代码%>脚本片段:编写普通Java逻辑代码,对应Servletservice()方法内部代码,每次请求都会执行;不能定义全局变量和方法;2.<%=变量/表达式%>输出表达式:用于向页面输出数据,等价于out.print(),末尾不能加分号;3.<%!代码%>声明语句:用于定义Servlet的全局成员变量、全局方法,代码在service()方法外,仅初始化时执行一次;线程不安全;4.<%--注释--%>JSP专属注释:仅在服务器端生效,不会翻译到Java代码和HTML页面中;区别于HTML注释<!---->,HTML注释会输出到前端页面。5.JSP九大内置对象有哪些?常用对象的作用?参考答案:内置对象是JSP提前创建好的实例,无需手动new,可直接使用,共九大对象:1.常用核心对象-request:HttpServletRequest,封装客户端请求数据,可获取参数、请求头、转发请求;-response:HttpServletResponse,封装服务器响应数据,可重定向、设置响应头、输出页面;-session:HttpSession,会话对象,存储单个用户的会话数据,浏览器不关闭则会话持续;-application:ServletContext,全局上下文对象,整个项目共享,所有用户共用;-out:JspWriter,页面输出流,用于向浏览器输出文本、标签;2.辅助对象-page:当前JSP页面的Servlet实例对象;-pageContext:页面上下文,可获取所有内置对象,可存储页面级数据;-config:ServletConfig,获取Servlet配置参数;-exception:Throwable,异常对象,仅在错误页面有效,用于捕获页面异常。6.pageContext、request、session、application四个域对象的区别?参考答案:四个域对象核心区别是作用范围和生命周期,从小到大排序:1.pageContext(页面域):仅当前页面有效,页面跳转、刷新后数据失效,生命周期最短;2.request(请求域):一次请求有效,服务器内部转发有效,重定向后数据丢失,请求结束数据销毁;3.session(会话域):单个用户会话有效,跨多个请求、多个页面,浏览器关闭或会话超时后数据销毁;4.application(全局域):整个项目运行期间有效,所有用户共享,服务器关闭后数据销毁。开发原则:能用小范围域就不用大范围域,减少内存占用,避免数据混乱。三、静态包含与动态包含、跳转机制7.JSP静态包含(@include)和动态包含(jsp:include)的区别?参考答案:1.执行时机不同-静态包含:编译阶段执行,将被包含页面代码整体合并,只生成一个Servlet;-动态包含:运行阶段执行,两个页面分别编译为独立Servlet,运行时动态调用、拼接结果;2.适用场景不同-静态包含:适合引入固定不变的公共页面,如头部、底部;执行效率更高;-动态包含:适合引入带动态参数、动态逻辑的页面,支持传递参数,灵活性更强;3.变量冲突:静态包含中两个页面同名变量会冲突,动态包含不会。8.JSP转发(forward)和重定向(redirect)的区别?参考答案:1.请求次数:转发是一次请求,服务器内部跳转;重定向是两次请求,服务器返回302状态码,浏览器重新发起请求;2.地址栏变化:转发地址栏不变;重定向地址栏会更新为新路径;3.数据保留:转发可保留request域数据;重定向request数据丢失;4.跳转范围:转发只能跳转到当前项目内资源;重定向可跳转外部网站、跨项目资源;5.效率:转发效率高于重定向。四、JSP高阶与工程问题9.为什么开发中不建议在JSP中写大量Java代码?如何解决?参考答案:弊端:1.代码耦合严重,HTML和Java代码混杂,可读性、可维护性极差;2.页面无法复用,不利于团队协作,前端后端代码混杂;3.调试困难,报错定位繁琐。解决方案:1.遵循MVC架构,业务逻辑交给Servlet、Service处理,JSP只负责展示;2.使用JSTL标签+EL表达式替代页面Java代码;3.自定义标签库,封装通用页面逻辑。10.EL表达式的作用?能不能获取session、application数据?参考答案:EL表达式主要用于简化JSP页面取值,替代繁琐的<%%>取值代码,自动从四大域中查找数据,语法简洁。可以获取所有域对象数据,优先级:pageContext>request>session>application,域范围越小越优先。指定域取值写法:${sessionScope.键名}、${applicationScope.键名},可避免同名数据取值冲突。11.JSP线程安全问题怎么产生的?如何解决?参考答案:产生原因:JSP默认是单实例多线程,服务器只会创建一个JSP/Servlet实例,多个用户请求共享同一个实例。如果使用<%!%>声明全局变量,多线程并发修改会导致数据错乱,引发线程安全问题。解决方案:1.杜绝使用JSP声明定义全局变量,所有变量定义在脚本片段中(局部变量,线程独立);2.开启页面单线程模式(page指令设置isThreadSafe="false"),但会大幅降低并发效率,不推荐;3.共享数据添加同步锁,优先使用局部变量、域对象存储数据。12.JSP页面报错404、500分别代表什么?常见原因有哪些?参考答案:1.404资源不存在:请求的JSP/接口路径错误、文件名称拼写错误、资源未部署、访问路径层级错误;2.500服务器内部错误:Java代码语法报错、空指针异常、数组越界、域对象取值错误、页面导入类不存在、配置文件错误。五、实操面试简答题(面试官常问)1.如何实现JSP页面跳转并携带参数?

答案:可通过request转发带参、URL拼接参数、session存值传参。2.JSP中如何处理表单中文乱码?

答

温馨提示

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

评论

0/150

提交评论