【023】JavaWeb面试题(四):JSP

2021-04-10 17:26

阅读:727

标签:servlet   发送   表单提交   无法   red   内嵌   容器   使用   问题   

开篇介绍

大家好,我是Java最全面试题库的提裤姐,今天这篇是JavaWeb系列的第四篇,主要总结了JavaWeb中JSP相关的问题,在后续,会沿着第一篇开篇的知识线路一直总结下去,做到日更!如果我能做到百日百更,希望你也可以跟着百日百刷,一百天养成一个好习惯。

什么是 jsp,什么是Servlet?jsp 和Servlet 有什么区别?

定义:
jsp 本质上就是一个 Servlet,它是 Servlet 的一种特殊形式(由 SUN 公司推出),每个 jsp 页面都是一个 servlet实例。
Servlet 是由 Java 提供用于开发 web 服务器应用程序的一个组件,运行在服务端,由 servlet 容器管理,用来生成动态内容。
一个 servlet 实例是实现了特殊接口 Servlet 的 Java 类,所有自定义的 servlet 均必须实现 Servlet 接口。

区别:

  • jsp 是 html 页面中内嵌的 Java 代码,侧重页面显示
  • Servlet 是 html 代码和 Java 代码分离,侧重逻辑控制,mvc 设计思想中 jsp 位于视图层,servlet 位于控制层

Jsp 运行机制:
技术图片

JVM 只能识别 Java 类,并不能识别 jsp 代码;
web 容器收到以.jsp 为扩展名的 url 请求时,会将访问请求交给tomcat 中 jsp 引擎处理,每个 jsp 页面第一次被访问时,jsp 引擎将 jsp 代码解释为一个 servlet 源程序,接着编译servlet 源程序生成.class 文件,再由web 容器 servlet 引擎去装载执行 servlet 程序,实现页面交互。

jsp 有哪些域对象?

四大域对象:

  • pageContext page 域:指当前页面,在当前 jsp 页面有效,跳到其它页面失效
  • request request 域:指一次请求范围内有效,从 http 请求到服务器处理结束,返回响应的整个过程。在这个过程中使用 forward(请求转发)方式跳转多个 jsp,在这些页面里你都可以使用这个变量
  • session session 域:指当前会话有效范围,浏览器从打开到关闭过程中,转发、重定向均可以使用
  • application context 域:指只能在同一个 web 中使用,服务器未关闭或者重启,数据就有效

jsp有哪些内置对象?

对象 生命周期 作用域 使用情况
request 一次请求 只在 Jsp 页面内有效 用于接受通过 HTTP 协议传送到服务器的数据(包括头信息、系统信息、请求方式以及请求参数等)。
Reponse 一次响应 只在 Jsp 页面内有效 表示服务器端对客户端的回应。主要用于设置头信息、跳转、Cookie 等
Session 从存入数据开始,默认闲置 30 分钟后失效 会话内有效 用于存储特定的用户会话所需的信息
Out 用于在 Web 浏览器内输出信息,并且管理应用服务器上的输出缓冲区
PageContext 用于存取其他隐含对象,如 request、reponse、session、application 等对象。(实际上,pageContext 对象提供了对 JSP 页面所有的对象及命名空间的访问。
Page page 对象代表 JSP 本身(对应 this),只有在 JSP 页面内才是合法的
Exception 显示异常信息,必须在 page 指令中设定才能使用,在一般的 JSP 页面中使用该对象将无法编译 JSP 文件
Application 服务器启动发送第一个请求时就产生了Application 对象,直到服务器关闭。 用于存储和访问来自任何页面的变量所有的用户分享一个 Application 对象
Config 取得服务器的配置信息

和的区别

用于在JSP页面中嵌入Java脚本
用于在JSP页面中申明变量或方法,可以在该页面中的脚本中调用,声明的变量相当于Servlet中的定义的成员变量。

forward与redirect 的区别?有哪些方式实现

区别:

  • forward是把另一个页面加载到本页面,不改变浏览器的路径
  • redirect是跳转到另一个页面,会改变浏览器的路径

实现方式:

  • 重定向: response.sendRedirect("重定向的路径")
  • 转发: request.getRequestDispatcher("转发路径").forward(request, response);

浏览器与jsp,html之间的关系

1.JSP与Java Servlet一样,是在服务器端执行的,通常返回该客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览
2.在大多数Browser/Server结构的Web应用中,浏览器直接通过HTML或者JSP的形式与用户交互,响应用户的请求
3.JSP在服务器上执行,并将执行结果输出到客户端浏览器,我们可以说基本上与浏览器无关

jsp乱码如何解决,给出对应解决方案

1、JSP页面显示乱码
2、表单提交中文时出现乱码request.seCharacterEncoding("gb2312″)对请求进行统一编码
3、数据库连接出现乱码 要涉及中文的地方全部是乱码,解决办法:在数据库的数据库URL中加上useUnicode=true&characterEncoding=GBK就可以了。
4、通过过滤器完成
5、在server.xml中的设置编码格式

Servlet和CGI的区别?

  • Servlet处于服务器进程中,只会有一个servlet实例,每个请求都会产生一个新的线程,而且servlet实例一般不会销毁
  • CGI:来一个请求就创建一个进程,用完就销毁,效率低于servlet

如何避免jsp页面自动生成session对象?

JSP是如何被执行的?执行效率比SERVLET低吗?

当客户端向一个jsp页面发送请求时,Web Container将jsp转化成servlet的源代码(只在第一次请求时),然后编译转化后的servlet并加载到内存中执行,执行的结果response到客户端

jsp只在第一次执行的时候会转化成servlet,以后每次执行,web容器都是直接执行编译后的servlet,所以jsp和servlet只是在第一次执行的时候不一样,jsp慢一点,以后的执行都是相同的。

【023】JavaWeb面试题(四):JSP

标签:servlet   发送   表单提交   无法   red   内嵌   容器   使用   问题   

原文地址:https://www.cnblogs.com/hongcaixia/p/13365549.html

上一篇:C++ 存储类

下一篇:C++ 修饰符类型


评论


亲,登录后才可以留言!