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的运行过程具体如下:

  1. 客户端发出请求,请求访问JSP文件。

  2. JSP容器先将JSP文件转换成一个Java源文件(Java Servlet源程序),在转换过程中,如果发现JSP文件中存在任何语法错误,则中断转换过程,并向服务端和客户端返回出错信息。

  3. 如果转换成功,则JSP容器将生成的Java源文件编译成相应的字节码文件*.class。该class文件就是一个Servlet,Servlet容器会像处理其他Servlet一样来处理它。

    注意:若是文件中存在JSTL或者EL表达式的话,那么在何时解析这些变量呢?答案是在将JSP文件解析成对应的Java源文件的时候就对JSTL或者EL表达式进行解析了,也就是说,当从服务器往浏览器写出页面内容时,JSTL或者EL中的变量就已经被解析成具体的值了。

内置对象

名称类型描述
outjavax.servlet.jsp.JspWriter用于页面输出
requestjavax.servlet.http.HttpServletReqeust得到用户请求信息
responsejavax.servlet.http.HttpServletResponse服气器向客户端的回应信息
configjavax.servlet.ServletConfig服务器配置,可以取得初始化参数
sessionjavax.servlet.http.HttpSession用来保存用户的信息
applicationjaax.servlet.ServletContext所有用户的共享信息
pagejava.lang.Object指当前页面转换后的Servlet类的实例
exceptionjava.lang.Throwable表示JSP页面所发生的异常,在错误页中才起作用
pageContextjavax.servlet.jsp.PageContextJSP的页面容器

EL表达式

一般的都是先将数据存储到Session,request,ServletContext等域对象中,再利用EL表达式来获取。

  • 语法
    • 以"${“符号开始,以”}"符号结束,具体格式:${表达式}
  • 获取数据
    • 类似page.findAttribute(); 先从page域中查找,没有找到去request域中查询,没找到去session域中找,没找到就去application域中找。
  • 注意:1. 在用EL表达式获取数据时,必须保证该数据存在于四个域对象其中的一个。 2. 在获取数据时,一定不要忘记加${}。

JSTL表达式

  • 使用时务必注意不要忘记导入JSTL的jar包:jstl.jarstandard.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核心知识点汇总的主要内容,如果未能解决你的问题,请参考以下文章

汇总Python 编程核心知识体系

JDBC核心知识点汇总

Android Framework 核心知识点汇总~

熬夜爆肝!C++核心STL容器知识点汇总整理3W字干货预警 建议收藏

熬夜爆肝!C++核心进阶知识点汇总整理万字干货预警 建议收藏

知识点汇总-计算机网络(概要版)