什么是Java Server Pages?
JSP全称Java Server Pages,是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。标签通常以结束。
JSP是一种Java servlet,主要用于实现Java web应用程序的用户界面部分。网页开发者们通过结合HTML代码、XHTML代码、XML元素以及嵌入JSP操作和命令来编写JSP。
JSP通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。
JSP标签有多种功能,比如访问数据库、记录用户选择信息、访问JavaBeans组件等,还可以在不同的网页中传递控制信息和共享信息。
JSP的优势
与纯 Servlet 相比:JSP可以很方便的编写或者修改HTML网页而不用去面对大量的println语句。
JSP的处理过程
- 就像其他普通的网页一样,您的浏览器发送一个 HTTP 请求给服务器。
- Web 服务器识别出这是一个对 JSP 网页的请求,并且将该请求传递给 JSP 引擎。通过使用 URL或者 .jsp 文件来完成。
- JSP 引擎从磁盘中载入 JSP 文件,然后将它们转化为 Servlet。这种转化只是简单地将所有模板文本改用 println() 语句,并且将所有的 JSP 元素转化成 Java 代码。
- JSP 引擎将 Servlet 编译成可执行类,并且将原始请求传递给 Servlet 引擎。
- Web 服务器的某组件将会调用 Servlet 引擎,然后载入并执行 Servlet 类。在执行过程中,Servlet 产生 HTML 格式的输出并将其内嵌于 HTTP response 中上交给 Web 服务器。
- Web 服务器以静态 HTML 网页的形式将 HTTP response 返回到您的浏览器中。
- 最终,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文件中,您必须先声明这些变量和方法然后才能使用它们。
- JSP表达式
一个JSP表达式中包含的脚本语言表达式,先被转化成String,然后插入到表达式出现的地方。由于表达式的值会被转化成String,所以您可以在一个文本行中使用表达式而不用去管它是否是HTML标签。表达式元素中可以包含任何符合Java语言规范的表达式,但是不能使用分号来结束表达式。
今天的日期是:
- JSP注释
JSP注释主要有两个作用:为代码作注释以及将某段代码注释掉。
JSP注释,注释内容不会被发送至浏览器甚至不会被编译
- JSP指令
JSP指令用来设置与整个JSP页面相关的属性。
定义页面的依赖属性,比如脚本语言、error页面、缓存需求等等
包含其他文件
引入标签库的定义,可以是自定义标签
JSP隐含对象
- request HttpServletRequest类的实例
- response HttpServletResponse类的实例
- out PrintWriter类的实例,用于把结果输出至网页上
- session HttpSession类的实例
- application ServletContext类的实例,与应用上下文有关
- config ServletConfig类的实例
- pageContext PageContext类的实例,提供对JSP页面所有对象以及命名空间的访问
- page 类似于Java类中的this关键字
- Exception Exception类的对象,代表发生错误的JSP页面中对应的异常对象
JSTL和EL表达式的关系
JSTL是一个JSP标签集合,它封装了JSP应用的通用核心功能。
EL主要用于查找作用域中的数据,然后对它们执行简单操作;它不是编程语言,甚至不是脚本编制语言。通常与 JSTL 标记一起作用,能用简单而又方便的符号来表示复杂的行为。示例 : ${expr}
EL表达式能从哪些域对象中取值
常用的域对象有下面这些
- pageScope page 作用域
- requestScope request 作用域
- sessionScope session 作用域
- applicationScope application 作用域
JSP异常怎么处理
- 在JSP页面指定错误页面
- 编写错误页面ShowError.jsp
什么是JSTL
JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能。
1. 核心标签
2.格式化标签
3.SQL 标签
4.XML 标签
5.JSTL 函数
使用步骤
第一步 : 导入JSTLjar依赖
第二步 : 在jsp页面引入JSTL标签库 (对应上面5个功能,选择引入)
本章中的相关题已经在51面试官(http://www.51mianshiguan.com)生成对应的配套刷题题库,您可以百度搜索“51面试官”使用在线刷题系统进行模拟面试 。51面试官,更加关注IT行业求职面试 ! 提供千万网友在线学习热门编程语言,分享和收藏最新编程面试真题,在线刷题面试真题,是一站式服务面试复习准备和入门求职必备帮手。