- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
JSP面试题及参考答案
一、基础概念题
问:JSP本质是什么?和Servlet有什么关系?
答:JSP本质是Servlet,服务器第一次解析JSP时,会先把JSP文件编译成.java格式的Servlet源文件,再编译成.class字节码文件,后续请求直接调用这个Servlet实例。区别在于Servlet是纯Java代码,适合写业务逻辑;JSP能嵌入HTML,更适合做页面展示,两者通常配合MVC模式使用(Servlet当控制器,JSP当视图)。
问:JSP里常用的指令有哪些?分别用来做什么?
答:主要三个核心指令:
page指令:配置页面基础信息,比如%@pagecontentType=text/html;charset=UTF-8%(设置响应格式和编码)、import=java.util.List(导入Java类)、errorPage=404.jsp(指定错误页面);
include指令:静态包含其他文件,比如%@includefile=header.jsp%,编译时会把被包含文件的代码直接合并到当前JSP,适合复用头部、底部这类不变的组件;
taglib指令:引入自定义标签或JSTL标签库,比如%@taglibprefix=curi=/jsp/jstl/core%(引入JSTL核心标签)。
问:JSP的9个内置对象里,常用的有哪些?说下它们的作用域区别?
答:常用的有request、response、session、application、out这几个:
作用域从窄到宽:page(当前JSP页面,跳转后失效)→request(一次请求内有效,比如forward跳转能传递数据)→session(单个用户会话有效,默认30分钟过期,比如存登录状态)→application(整个Web应用有效,所有用户共享,比如存网站总访问量);
举个例子:用户登录时,把用户信息存session;统计网站在线人数,用application存计数器。
二、实操应用题
问:JSP页面出现中文乱码,一般怎么排查解决?
答:分两种场景处理:
页面显示乱码:先检查page指令的contentType和pageEncoding是否都设为UTF-8,比如%@pagecontentType=text/html;charset=UTF-8pageEncoding=UTF-8%,前者是告诉浏览器用UTF-8解析,后者是JSP文件本身的编码;
表单提交乱码:如果是POST请求,在Servlet里先加request.setCharacterEncoding(UTF-8)(必须在获取参数前调用);如果是GET请求,Tomcat8以上默认UTF-8,低版本需要改server.xml里的Connector标签,加URIEncoding=UTF-8。
问:用JSP实现“用户登录后显示欢迎信息,未登录跳登录页”,核心逻辑怎么写?
答:主要靠session判断,代码大概这样:
%
//从session获取登录用户信息
UserloginUser=(User)session.getAttribute(loginUser);
//没登录就重定向到登录页
if(loginUser==null){
response.sendRedirect(login.jsp);
return;//必须加return,防止后续代码继续执行
}
%
h1欢迎您,%=loginUser.getUsername()%/h1
注意:重定向用response.sendRedirect(),不能用forward,因为重定向会让浏览器发起新请求,地址栏会变,避免用户刷新页面时重复执行逻辑。
问:EL表达式${}和JSP脚本%=user.getName()%有什么区别?为什么推荐用EL?
答:本质都是获取user对象的name属性,但EL更友好:
EL会自动处理空值:如果user是null,${}会显示空字符串,不会报错;而%=user.getName()%会抛空指针异常;
EL不用写Java代码块:不用加%%,代码更简洁,配合JSTL能完全替代脚本(实际开发里不建议在JSP写大量%%代码,维护起来麻烦)。
三、进阶与优化题
问:JSP的forward动作和redirect跳转有什么区别?实际开发怎么选?
答:核心区别在请求次数和数据传递:
forward(转发):jsp:forwardpage=i
您可能关注的文档
最近下载
- 北京市人大附中2023-2024学年数学八年级第一学期期末教学质量检测试题含答案.doc VIP
- 河北省保定市安国市2024--2025学年四年级上学期期末调研质量监测数学题(有答案).docx VIP
- XXX公路工程监理实施细则.doc VIP
- 北京市人大附中2023年八年级物理第一学期期末学业质量监测模拟试题含解析.doc VIP
- 临时设施专项施工及方案.doc
- GB50209建筑地面工程施工质量验收规范.pdf VIP
- 血液透析患者管理及监测.pptx VIP
- 炼油及化工企业总体设备管理体系和设备管理办法.pdf VIP
- 医学课件-羊水栓塞总结知识点.pptx VIP
- 课件:雷火灸治疗过敏性鼻炎.ppt VIP
原创力文档


文档评论(0)