栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JSP、EL表达式、JSTL标签库

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JSP、EL表达式、JSTL标签库

一、jsp介绍

jsp的全称是javaserverpages。Java的服务器页面。
jsp的主要作用是代替Servlet程序回传html页面的数据
因为Servlet程序回传html页面数据是一件非常繁锁的事情。开发成本和维护成本都极高
jsp页面和html页面一样,都是存放在web目录下。访问也跟访问html页面一样。

jsp的本质

jsp页面本质上是一个Servlet程序。当我们第一次访问jsp页面的时候。Tomcat服务器会帮我们把jsp页面翻译成为一个java源文件。并且对它进行编译成为.class字节码程序。
跟踪原代码发现,HttpJspbase类,它直接地继承了HttpServlet类。也就是说,jsp翻译出来的java类,它间接了继承了HttpServlet类。翻译出来的是一个Servlet程序

jsp的三种语法

1. jsp头部的page指令
jsp的page指令可以修改jsp页面中一些重要的属性,或者行为。

<%@ page contentType="text/html;charset=UTF-8" language="java"%>

language		属性表示jsp翻译后是什么语言文件。暂时只支持java。
contentType		属性表示jsp返回的数据类型是什么。也是源码中response.setContentType()参数值pageEncoding	属性表示当前jsp页面文件本身的字符集。
import			属性跟java源代码中一样。用于导包,导类。

========================两个属性是给out输出流使用=============================
autoFlush		属性设置当out输出流缓冲区满了之后,是否自动刷新冲级区。默认值是true。
buffer			属性设置out缓冲区的大小。默认是8kb

errorPage		属性设置当jsp页面运行时出错,自动跳转去的错误页面路径。
isErrorPage		属性设置当前jsp页面是否是错误信息页面。默认是false。如果是true可以获取异常信息。
session			属性设置访问当前jsp页面,是否会创建HttpSession对象。默认是true。
extends			属性设置jsp翻译出来的java类默认继承谁。

2. jsp中的常用脚本
声明脚本(极少使用)

声明脚本的格式是:	<%!  声明java代码  %>
作用:可以给jsp翻译出来的java类定义属性和方法甚至是静态代码块。内部类等。

表达式脚本(常用)

表达式脚本的格式是:	<%= 表达式 %>
表达式脚本的作用是:的jsp页面上输出数据。

表达式脚本的特点:
1、所有的表达式脚本都会被翻译到_jspService()方法中
2、表达式脚本都会被翻译成为out.print()输出到页面上
3、由于表达式脚本翻译的内容都在_jspService()方法中,所以_jspService()方法中的对象都可以直接使用。
4、表达式脚本中的表达式不能以分号结束。

代码脚本

代码脚本的格式是:
	<%
		java语句
	%>
代码脚本的作用是:可以在jsp页面中,编写我们自己需要的功能(写的是java语句)。

二、jsp九大内置对象、四大域对象

jsp中的内置对象,是指Tomcat在翻译jsp页面成为Servlet源代码后,内部提供的九大对象,叫内置对象。

request  		 请求对象
response 		 响应对象
pageContext		 jsp的上下文对象
session 		 会话对象
application 	 ServletContext对象
config 			 ServletConfig对象
out 			 jsp输出流对象
page 			 指向当前的jsp对象
exception 		 异常对象
四大域对象
pageContext			(PageContextImpl类)当前jsp页面范围内有效
request				(HttpServletRequest类)、一次请求内有效
session				(HttpSession类)、一个会话范围内有效(打开浏览器访问服务器,直到关闭浏览器)
application			(ServletContext类)整个web工程范围内都有效(只要web工程不停止,数据都在)

域对象是可以像Map一样存取数据的对象。四个域对象功能一样。不同的是它们对数据的存取范围。虽然四个域对象都可以存取数据。在使用上它们是有优先顺序的。四个域在使用的时候,优先顺序分别是,他们从小到大的范围的顺序

pageContext====>>>request====>>>session====>>>application
jsp中的out输出和response.getWriter输出的区别

response中表示响应,我们经常用于设置返回给客户端的内容(输出)
out也是给用户做输出使用的。

由于jsp翻译之后,底层源代码都是使用out来进行输出,所以一般情况下。我们在jsp页面中统一使用out来进行输出。避免打乱页面输出内容的顺序。

out.write()输出字符串没有问题
out.print()输出任意数据都没有问题(底层都转换成为字符串后调用的write输出)


三、jsp的常用标签 jsp静态包含
<%@include file=""%>就是静态包含
file属性指定你要包含的jsp页面的路径
地址中第一个斜杠/表示为http://ip:port/工程路径/映射到代码的web目录

静态包含的特点:
1、静态包含不会翻译被包含的jsp页面。
2、静态包含其实是把被包含的jsp页面的代码拷贝到包含的位置执行输出。

jsp动态包含
这是动态包含
page属性是指定你要包含的jsp页面的路径动态包含也可以像静态包含一样。
把被包含的内容执行输出到包含位置

动态包含的特点:
1、动态包含会把包含的jsp页面也翻译成为java代码
2、动态包含底层代码使用如下代码去调用被包含的jsp页面执行输出。JspRuntimeLibrary.include(request,response,"/include/footer.jsp",out,false);
3、动态包含,还可以传递参数

jsp标签-转发
是请求转发标签,它的功能就是请求转发
page属性设置请求转发的路径

四、EL表达式 什么是EL表达式,EL表达式的作用

EL表达式的全称是:expressionLanguage。是表达式语言。
EL表达式的什么作用:EL表达式主要是代替jsp页面中的表达式脚本在jsp页面中进行数据的输出。因为EL表达式在输出数据的时候,要比jsp的表达式脚本要简洁很多


	<%
		request.setAttribute("key","值");
	%>
	表达式脚本输出key的值是:
<%=request.getAttribute("key1")==null?"":request.getAttribute("key1")%>
EL表达式输出key的值是:${key1}

EL表达式的格式是:${表达式}
EL表达式在输出null值的时候,输出的是空串。jsp表达式脚本输出null值的时候,输出的是null字符串。

EL表达式搜索域数据的顺序

EL表达式主要是在jsp页面中输出数据。
主要是输出域对象中的数据。
当四个域中都有相同的key的数据的时候,EL表达式会按照四个域的从小到大的顺序去进行搜索,找到就输出。

EL表达式输出Bean的普通属性,数组属性。List集合属性,map集合属性
输出Person:							${p}
输出Person的name属性: ${p.name}
输出Person的pnones数组属性值: ${p.phones[2]}
输出Person的cities集合中的元素值: ${p.cities}
输出Person的List集合中个别元素值: ${p.cities[2]}
输出Person的Map集合: ${p.map}
输出Person的Map集合中某个key的值: ${p.map.key3}
输出Person的age属性: ${p.age}
EL表达式——运算

支持关系运算、逻辑运算、算数运算
empty运算:
empty运算可以判断一个数据是否为空,如果为空,则输出true,不为空输出false。

EL表达式的11个隐含对象
EL个达式中11个隐含对象,是EL表达式中自己定义的,可以直接使用。
	变量				类型					作用
pageContext			PageContextImpl			它可以获取jsp中的九大内置对象

pageScope			Map		它可以获取pageContext域中的数据
requestScope		Map		它可以获取Request域中的数据
sessionScope		Map		它可以获取Session域中的数据
applicationScope	Map		它可以获取ServletContext域中的数据

param				Map		它可以获取请求参数的值
paramValues			Map	它也可以获取请求参数的值,获取多个值的时候使用。

header				Map		它可以获取请求头的信息
headerValues		Map	它可以获取请求头的信息,它可以获取多个值的情况

cookie				Map		它可以获取当前请求的cookie信息
initParam			Map		它可以获取在web.xml中配置的上下文参数
五、JSTL标签库

JSTL标签库全称是指JSPStandardTagLibraryJSP标准标签库。是一个不断完善的开放源代码的JSP标签库。
EL表达式主要是为了替换jsp中的表达式脚本,而标签库则是为了替换代码脚本。这样使得整个jsp页面变得更佳简洁。

JSTL由五个不同功能的标签库组成
JSTL标签库的使用步骤
1.先导入jstl标签库的jar包。
taglibs-standard-impl-1.2.1.jar
taglibs-standard-spec-1.2.1.jar
2、第二步,使用taglib指令引入标签库。

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
core核心库使用

(使用很少)
作用:set标签可以往域中保存数据


if标签用来做if判断。


	

12等于12

12不等于12

标签
作用:多路判断。跟switch…case…default非常接近


	<%--这是html注释--%>
	190}">
		

小巨人

180}">

很高

170}">

还可以

160}">

大于160

150}">

大于150

140}">

大于140

其他小于140


作用:遍历输出使用。


	
		第${i}行
	

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/462253.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号