JSP内置对象、EL表达式、JSTL标签库

tech2022-07-06  204

JSP、EL表达式、JSTL标签库

1.JSP

我们在JSP页面上,可以通过一对<%%>标签在页面上嵌入JAVA代码.请求JSP页面时,会执行嵌入的JAVA代码,这样就可以让页面上的资源动态生成.

2.JSP执行过程

JSP的执行过程大致可以分为三个时期:转译、编译、执行

转译/翻译(Translation ):

JSP网页转译成Servlet,生成.java文件,然后进行编译生成.class字节码文件

编译(Compile):

JSP网页转译成Servlet,生成.java文件,然后进行编译生成.class字节码文件

运行(Request ):

运行.class字节码文件,处理请求。

具体过程

1、浏览器发起.jsp的请求

2、TOMCAT服务器接收到请求后调用对应的Servlet处理请求,调用JspServlet

3、JspServlet将请求的Jsp文件转译为对应的java文件并完成编译

4、将.class字节码文件加载进入内存并执行,其实就是在运行一个Servlet

5、通过Response对象将数据响应给浏览器

3.Jsp的作用

主要是将逻辑从servlet中分离出来,体现了HTML语法可以嵌入java编码的扩展

4.Jsp的运行原理

客户端第一次访问jsp资源时,会向一个servlet发送请求,servlet再把以.jsp文件转换为.java

文件,相当于自动生成了一个servlet,再又servlet编译,将数据响应给浏览器

5.Jsp和Servlet的使用比较

① Jsp经编译后就变成了Servlet

② Jsp更擅长表现页面显示,servlet更擅长逻辑控制

③ Servlet中没有内置对象,jsp中的内置对象都是必须通过HttpServletResponse对象以及HttpServlet对象得到

④ Servlet则是个完整的java类,这个类的servlet方法用于生成对客户端的响应

6. Jsp的page指令的作用及其属性的作用

Page指令作用:定义网页依赖属性

① contentType属性的作用:告知浏览器以什么格式编码和解析

② language属性的作用:设置jsp页面转换语言

③ import属性的作用:导包

④ pageEncoding属性的作用:在转换成java代码时使用的编码

⑤ errorPage属性的作用:指定错误页,当页面发生错误时,指定跳转的页面

⑥ isErrorPage属性的作用:指定当前页为错误提示页,当前页面可以接收异常对象

7. Jsp中的静态引入和动态引入的区别

静态引入@include:被引入的网页和当前页生成代码后形成一个java文件

动态引入jsp:include:被引入的jsp页面会生成独立的java代码

8.taglib指令标签

JSP API允许用户自定义标签,一个自定义标签库就是自定义标签的集合。Taglib指令引入一

个自定义标签集合的定义,包括库路径、自定义标签。

语法:

<%@ taglib uri=“uri” prefix=“prefixOfTag” %>

9. Jsp的内置对象有哪些

四个域对象

pageContext page域 当前页面内可用

request reqeust域 单次请求

session session域 单次会话

application application 域项目运行

响应对象

response 响应对象

输出流对象

out 打印流对象

其他三个对象

servletConfig: 由于JSP本身也是一个Servlet,所以容器也会给我们准备一个ServletConfig

page 就是他this对象 当前JSP对象本身

exception 异常对象,在错误提示页上使用,当isErrorpage=true 才具有该对象

10.Servlet与JSP的联系和区别

联系

JSP和Servlet都是Sun公司推出的动态网页技术

基于Servlet开发页面的繁琐性,推出JSP来简化页面开发

JSP本质上是一个Servlet,会翻译成一个Servlet

区别

JSP使人们把显示和逻辑分隔成为可能,这意味着两者的开发可并行进行;而Servlet并没有把两者分开。

JSP是在HTML代码里写JAVA代码,框架是HTML;而Servlet是在JAVA代码中写HTML代码,本身是个JAVA类。

Servlet需要在web.xml中配置,而JSP无需配置。

目前JSP主要用在视图层负责显示,而Servlet主要用在控制层负责调度

强调

JSP表面上是一个HTML,本质上是一个Servlet

11.JSP的使用总结

① 创建Jsp文件,在项目的web目录下创建。

② 使用page指令设置Jsp的转译细节(一般自动生成的就够用)

③ 使用tablib指令引入第三方的自定义标签来使用(JSTL标签)

④ 使用HTML,CSS,JQuery完成页面的开发

⑤ 使用<%%>声明java脚本片段完成数据的动态拼接

⑥ 获取request或者session中的数据拼接到当前页面中(内置对象)

12.EL表达式

特点:

① 只能获取作用域对象中的资源

② 底层使用的是反射,我们直接声明作用域中的键名以及键对应的资源的属性名以此 类推即可获取数据

③ 简化了JSP中获取作用域资源的方式。

作用:

① 只能获取作用域对象中的资源

② 底层使用反射

③ 简化了jsp中获取作用域资源的方式

使用:

① 基本语法:

${键名},键名为作用域对象中存储的键值对数据的键名

${键名.属性名.属性名…},获取作用域中存储的数据的属性的属性的值

${键名[角标]},获取作用域中存储的list集合或者数组中指定角标的数据

注意:

在jsp页面使用EL表达式获取作用域数据自带输出功能,可以任意的嵌 套在前端代码中使用。如果作用域中没有对应的数据则什么都不显示也不 报错。

② 作用域数据查找流程

如果没有指明作用域的情况下,使用EL表达式获取作用域对象中的数据,也就是

直接使用${键名}获取数据。则底层会先从小到大依次查找数据,找打了则不再找, 直接显示,都没有找到则什么都不显示:

pageContext–>request–>session—>application

③ 指定获取某个作用域中的数据

${requestScope.键名} 指明获取request作用域对象中的资源

${sessionScope.键名} 指明获取session作用域对象中的资源

${applicationScope.键名} 指明获取application作用域对象中的资源

④ 获取request对象中的请求数据

${param.键名}

此种方式可以在Jsp中获取request对象中封装的请求实体数据。

⑤ 在EL表达式中可以使用逻辑表达式和算术运算:

${键名 逻辑表达式 键名}

${键名 算术表达式 键名}

注意:”+”符号只代表算术运算,不代表字符串拼接。

部分代码

获取普通字符串数据==== :${str}

13.JSTL标签库

介绍:

JSTL标签库是第三方发明的自定义的标签,每个标签都有自己特定的含义表示一个具 体的java逻辑。我们要在JSP中使用JSTL必须使用taglib标签引入第三方标签资源。

Jstl的作用

① 在页面里使用jstl标签可以使用像HTML标签一样,增加了阅读性

② 将业务封装到jstl可以很方便的重用

③ 将数据与显示分离

④ 简化了jsp的web应用系统的开发,并且使得jsp页面更加美观

⑤ 可以对其进行自定义扩展

使用:

① 导入jstl的jar包

② 在JSP页面中taglib指令标签引入第三方资源

③ 使用标签完成开发即可。

c:if标签,相当于java逻辑中的if语句

​ 使用:

​ <c:if test="${EL的逻辑表达式}">

​ 要输出的内容,可以直接声明HTML代码,也可以直接拼接EL表达式

​ </c:if>

c:foreach标签,相当于java逻辑中的for循环

属性:

​ items:使用EL表达式获取要遍历的数据

​ var:声明变量名记录每次遍历的结果,并在在循环体中使用EL表达式来获取遍历出

来的数据

​ begin:设置循环的开始值

​ end:设置循环结束值

​ step:设置循环的步长

​ varStatus:设置遍历记录每次循环的状态,结合EL表达式获取

最新回复(0)