您的位置 首页 java

Java工程师关于JSP的必会面试题你知道吗?

什么是Java Server Pages?

JSP的优势

与纯 servlet 相比:JSP可以很方便的编写或者修改HTML网页而不用去面对大量的println语句。

JSP的处理过程

  1. 就像其他普通的网页一样,您的浏览器发送一个 HTTP 请求给服务器。
  2. Web 服务器识别出这是一个对 JSP 网页的请求,并且将该请求传递给 JSP 引擎。通过使用 URL或者 .jsp 文件来完成。
  3. JSP 引擎从磁盘中载入 JSP 文件,然后将它们转化为 Servlet。这种转化只是简单地将所有模板文本改用 println() 语句,并且将所有的 JSP 元素转化成 Java 代码。
  4. JSP 引擎将 Servlet 编译成可执行类,并且将原始请求传递给 Servlet 引擎。
  5. Web 服务器的某组件将会调用 Servlet 引擎,然后载入并执行 Servlet 类。在执行过程中,Servlet 产生 HTML 格式的输出并将其内嵌于 HTTP response 中上交给 Web 服务器。
  6. Web 服务器以静态 HTML 网页的形式将 HTTP response 返回到您的浏览器中。
  7. 最终,Web 浏览器处理 HTTP response 中动态产生的HTML网页,就好像在处理静态网页一样。

一般情况下,JSP 引擎会检查 JSP 文件对应的 Servlet 是否已经存在,并且检查 JSP 文件的修改日期是否早于 Servlet。如果 JSP 文件的修改日期早于对应的 Servlet,那么容器就可以确定 JSP 文件没有被修改过并且 Servlet 有效。这使得整个流程与其他 脚本语言 (比如 PHP)相比要高效快捷一些。

JSP 生命周期

  • 编译阶段

当浏览器请求JSP页面时,JSP引擎会首先去检查是否需要编译这个文件。如果这个文件没有被编译过,或者在上次编译后被更改过,则编译这个JSP文件。

编译的过程包括三个步骤:

解析JSP文件。

将JSP文件转为servlet。

编译servlet。

  • 初始化阶段

容器载入JSP文件后,它会在为请求提供任何服务前调用jspInit()方法。如果您需要执行自定义的JSP初始化任务,复写jspInit()方法就行了

  • JSP执行

这一阶段描述了JSP生命周期中一切与请求相关的交互行为,直到被销毁。当JSP网页完成初始化后,JSP引擎将会调用_jspService()方法。_jspService()方法需要一个HttpServletRequest对象和一个HttpServletResponse对象作为它的参数 , _jspService()方法在每个request中被调用一次并且负责产生与之相对应的response,并且它还负责产生所有7个HTTP方法的回应,比如GET、POST、DELETE等等。

  • JSP销毁

SP生命周期的销毁阶段描述了当一个JSP网页从容器中被移除时所发生的一切。jspDestroy()方法在JSP中等价于servlet中的销毁方法。当您需要执行任何清理工作时复写jspDestroy()方法,比如释放数据库连接或者关闭文件夹等等。

JSP语法

  • 脚本程序

<% 代码片段 %>

  • JSP声明

一个声明语句可以声明一个或多个变量、方法,供后面的Java代码使用。在JSP文件中,您必须先声明这些变量和方法然后才能使用它们。

<%! int i = 0; %>

<%! int a, b, c; %>

<%! Circle a = new Circle(2.0); %>

  • JSP表达式

一个JSP表达式中包含的脚本语言表达式,先被转化成String,然后插入到表达式出现的地方。由于表达式的值会被转化成String,所以您可以在一个文本行中使用表达式而不用去管它是否是HTML标签。表达式元素中可以包含任何符合Java语言规范的表达式,但是不能使用分号来结束表达式。

今天的日期是: <%= (new java.util.Date()).toLocaleString()%>

  • JSP注释

JSP注释主要有两个作用:为代码作注释以及将某段代码注释掉。

<%– 注释 –%> JSP注释,注释内容不会被发送至浏览器甚至不会被编译

  • JSP指令

JSP指令用来设置与整个JSP页面相关的属性。

<%@ page … %> 定义页面的依赖属性,比如脚本语言、error页面、缓存需求等等

<%@ include … %> 包含其他文件

<%@ taglib … %> 引入标签库的定义,可以是自定义标签

JSP隐含对象

  1. request HttpServletRequest类的实例
  2. response HttpServletResponse类的实例
  3. out PrintWriter类的实例,用于把结果输出至网页上
  4. session HttpSession类的实例
  5. application ServletContext类的实例,与应用上下文有关
  6. config ServletConfig类的实例
  7. pageContext PageContext类的实例,提供对JSP页面所有对象以及命名空间的访问
  8. page 类似于Java类中的this关键字
  9. Exception Exception类的对象,代表发生错误的JSP页面中对应的异常对象

JSTL 和EL表达式的关系

JSTL是一个JSP标签集合,它封装了JSP应用的通用核心功能。

EL主要用于查找 作用域 中的数据,然后对它们执行简单操作;它不是 编程语言 ,甚至不是脚本编制语言。通常与 JSTL 标记一起作用,能用简单而又方便的符号来表示复杂的行为。示例 : ${expr}

EL表达式能从哪些域对象中取值

常用的域对象有下面这些

  1. pageScope page 作用域
  2. requestScope request 作用域
  3. sessionScope session 作用域
  4. applicationScope application 作用域

JSP异常怎么处理

  • 在JSP页面指定错误页面
<%@ page errorPage="ShowError.jsp" %>
 
  • 编写错误页面ShowError.jsp
<%@ page isErrorPage="true" %>
 

什么是JSTL

JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能。

1. 核心标签

2.格式化标签

3.SQL 标签

4.XML 标签

5.JSTL 函数

使用步骤

第一步 : 导入JSTLjar依赖

第二步 : 在jsp页面引入JSTL标签库 (对应上面5个功能,选择引入)

<%@ taglib prefix="c" uri="" %>
<%@ taglib prefix="fmt" uri="" %>
<%@ taglib prefix="sql" uri="" %>
<%@ taglib prefix="x" uri="" %>
<%@ taglib prefix="fn" uri="" %>
 

本章中的相关题已经在 51面试官( 生成对应的 配套刷题题库 ,您可以百度搜索“ 51面试官 ”使用在线刷题系统进行模拟面试 。 51面试官 ,更加关注IT行业求职面试 ! 提供千万网友在线学习热门编程语言,分享和收藏最新编程面试真题,在线刷题面试真题,是一站式服务面试复习准备和入门求职必备帮手。

文章来源:智云一二三科技

文章标题:Java工程师关于JSP的必会面试题你知道吗?

文章地址:https://www.zhihuclub.com/189135.shtml

关于作者: 智云科技

热门文章

网站地图