JSP面试题及参考答案.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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

文档评论(0)

151****9429 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档