JSP_EL_jstl核心知识点汇总
Posted 彭祥.
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSP_EL_jstl核心知识点汇总相关的知识,希望对你有一定的参考价值。
给初学者的建议
- 由于html+AJAX+服务器模式的流行,JSP目前在市场上用的越来越少了,但是还是有很多的老项目仍然在沿用它,而且作为JavaWeb程序员还是需要对曾经市场占有比重极高的JSP技术进行掌握的。
- 掌握JSP,最关键的是能明白它和HTML静态页面之间的区别,它和Servlet之间的联系,知道JSP页面里jstl或者el表达式解析的时机。熟悉JSP的九大内置对象。
JSP运行原理
JSP的工作模式是请求/响应模式,客户端首先发出HTTP请求,JSP程序手打哦请求后进行处理并返回处理结果。在一个JSP文件第一次被请求时,JSP引擎(容器)把该JSP文件转换成为一个Servlet,而这个引擎本身也是一个Servlet。
jsp编译为Java文件的存放路径
JSP的运行过程具体如下:
-
客户端发出请求,请求访问JSP文件。
-
JSP容器先将JSP文件转换成一个Java源文件(Java Servlet源程序),在转换过程中,如果发现JSP文件中存在任何语法错误,则中断转换过程,并向服务端和客户端返回出错信息。
-
如果转换成功,则JSP容器将生成的Java源文件编译成相应的字节码文件*.class。该class文件就是一个Servlet,Servlet容器会像处理其他Servlet一样来处理它。
注意:若是文件中存在JSTL或者EL表达式的话,那么在何时解析这些变量呢?答案是在将JSP文件解析成对应的Java源文件的时候就对JSTL或者EL表达式进行解析了,也就是说,当从服务器往浏览器写出页面内容时,JSTL或者EL中的变量就已经被解析成具体的值了。
内置对象
名称 | 类型 | 描述 |
---|---|---|
out | javax.servlet.jsp.JspWriter | 用于页面输出 |
request | javax.servlet.http.HttpServletReqeust | 得到用户请求信息 |
response | javax.servlet.http.HttpServletResponse | 服气器向客户端的回应信息 |
config | javax.servlet.ServletConfig | 服务器配置,可以取得初始化参数 |
session | javax.servlet.http.HttpSession | 用来保存用户的信息 |
application | jaax.servlet.ServletContext | 所有用户的共享信息 |
page | java.lang.Object | 指当前页面转换后的Servlet类的实例 |
exception | java.lang.Throwable | 表示JSP页面所发生的异常,在错误页中才起作用 |
pageContext | javax.servlet.jsp.PageContext | JSP的页面容器 |
EL表达式
一般的都是先将数据存储到Session,request,ServletContext等域对象中,再利用EL表达式来获取。
- 语法
- 以"${“符号开始,以”}"符号结束,具体格式:
${表达式}
。
- 以"${“符号开始,以”}"符号结束,具体格式:
- 获取数据
- 类似page.findAttribute(); 先从page域中查找,没有找到去request域中查询,没找到去session域中找,没找到就去application域中找。
- 注意:1. 在用EL表达式获取数据时,必须保证该数据存在于四个域对象其中的一个。 2. 在获取数据时,一定不要忘记加${}。
JSTL表达式
- 使用时务必注意不要忘记导入JSTL的jar包:
jstl.jar
和standard.jar
。 - 要使用taglib指令导入Core标签库:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
。
c:forEach标签
- 语法
<c:forEach [var="varName" items="collection" [varStatus="varStatusName"] [begin="begin"] [end="end"] [step="step"]>
${varName}
</c:forEach>
-
参数解释
- var属性用于指将当前迭代到的元素保存到page域中的名称
- items属性用于指定将要迭代的集合对象
- varStatus用于指定当前迭代状态信息的对象保存到page域中的名称
- begin属性用于指定从集合中第几个元素开始迭代,begin的索引值从0开始,如果没有指定items属性,就从begin指定的值开始迭代,知道迭代结束为止
- step属性用于指定迭代的步长,即迭代因子的增量
-
实例
<c:forEach items="${userMap}" var="entry"> ${entry.key}====${entry.value} </c:forEach>
-
注意:items里面需要使用到EL表达式的时候,一定不要忘记加${}
以上是关于JSP_EL_jstl核心知识点汇总的主要内容,如果未能解决你的问题,请参考以下文章
熬夜爆肝!C++核心STL容器知识点汇总整理3W字干货预警 建议收藏