Web基础之JSP与EL表达式
一、JSP(Java Server Pages)
1.1、JSP起源:
Servlet能够动态的输出网页文档,但是存在缺陷一个Servlet中可能要输出html,css,js,java代码
代码臃肿,维护困难
美工设计和HTML的编写,java程序员不一定在行
为了弥补Servlet的缺陷,SUN公司在Servlet的基础上推出了JSP(Java Server Pages)技术作为解决方案
JSP是简化Servlet编写的一种技术,它将Java代码和HTML语句混合在同一个文件中编写,只对网页中的要
动态
产生的内容采用Java代码来编写,而对固定不变的静态内容采用普通静态HTML页面的方式编写。
1.2、JSP运行原理
1.3、JSP中的脚本元素
1.4、JSP引擎转换
1.5、JSP中的指令
功能
用于指示JSP执行某些步骤
用于指示JSP表现特定行为
语法格式
<%@ directive [ attribute =“value” ] * %>
分类
page指令标记
include指令标记
taglib指令标记
1.5.1、page指令详解
1.5.2、include指令详解
功能
用于包含一个jsp包含另外一个jsp页面,只要一个属性,file
静态包含和动态包含
静态包含指令
<%@include file="xxx.jsp" %>
动态包含指令
静态包含和动态包含的区别:
(1)静态导入(include指令)通过file属性指定被包含的文件,并且file属性不支持任何表达式;
动态导入(include动作)通过page属性指定被包含的文件,且page属性支持JSP表达式;
(2)使用静态导入(include指令)时,被包含的文件内容会原封不动的插入到包含页中,
然后JSP编译器再将合成后的文件最终编译成一个Java文件;使用动态导入(include动作)包含文件时,
当该标识被执行时,程序会将请求转发(不是请求重定向)到被包含的页面,并将执行结果输出到浏览器中,
然后返回包含页继续执行后面的代码。因为服务器执行的是多个文件,所以JSP编译器会分别对这些文件进行编译;
(3)使用静态导入(include指令)包含文件时,由于被包含的文件最终会生成一个文件,所以在被包含、
包含文件中不能有重名的变量或方法;而动态导入(include动作)包含文件时,由于每个文件是单独编译的,
所以在被包含文件和包含文件中重名的变量和方法是不相冲突的。
(4)静态导入是将被导入页面的代码完全融入,两个页面融合成一个整体Servlet,因此被导入页面甚至;
不需要是一个完整的页面;而动态导入则在Servlet中使用include方法来引入被导入页面的内容;
1.5.3、taglib指令
<% @ taglib %>指令声明此JSP文件使用了自定义的标签,同时引用标签库,也指定了他们的标签的前缀。
示例:<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
二、Web九大内置对象和三大作用域
九大内置对象
三大作用域
out 内置对象(JspWriter类型)和 response.getWriter()的区别
out.write() 和 response.getWriter().write()是分别输出到不同的缓冲区,
并且 out.write()的缓冲区会附加到 response.getWriter().write() 缓冲区的后面。
所以,为了避免这种混乱,一般不推荐在JSP页面中使用 response.getWriter().write() 进行输出。
pageContext对象
三、EL表达式简介
EL 全名为Expression Language,常用的三个功能如下:
不管是展示与逻辑混用的jsp,还是展示与逻辑解耦的jsp+servlet,都需要从四个作用域中获取值,如:
request.getAttribute("XXX");
session.getAttribute("XXXList").get(i);
1.
为了简化jsp中的代码,在jsp标签上,又出现了为了获取数据的el表达式。
获取数据一
获取数据二
2.EL表达式可以在JSP页面中执行一些基本的关系运算、逻辑运算和算术运算
3.获取web开发常用对象
EL 表达式定义了一些隐式对象,利用这些隐式对象,web开发人员可以很轻松获得对web常用对象的引用,
从而获得这些对象中的数据。
四、扩展知识集锦
1.1
HTML 中的注释,程序会把它当作正常的HTML内容,如实输出。因为HTML注释是给客户端看的。
1.2 <%-- --%>
JSP中的注释,是写给JSP开发人员看的,不会生成到 JSP 对应的JAVA文件中。也就意味着,客户端那边是不可见。
1.3 // 或者 /** **/
JAVA代码注释,是写给JAVA开发人员看的,会以JAVA代码注释的形式,生成到 JSP 对应的JAVA文件中。
对客户端也是不可见的。
2. JSP异常的统一处理机制
2.1 在可能抛异常JSP中,通过 <%@ page %> 指令的 errorPage 属性指定处理异常的页面。
2.2 在处理异常的页面,通过设置 <%@ page %> 指令的 isErrorPage 属性为 "true" 来声明该页面为异常处理页面。
WEB服务器在生成该异常处理页面对应的JAVA文件时,会多加一个名为 exception 内置对象。
2.3 只有声明为异常处理页面的 JSP 才可以看到九大内置对象(相对于其他的JSP多了一个名为 exception 的内置对象)
五、总结:
主要了解了JSP的运行原理以及JSP的三大指令;
Web九大内置对象和三大作用域;
静态包含于动态包含的区别
EL表达式的三个功能:获取数据、基本的关系运算、获取常用的web开发对象
学无止境!共勉!