jsp基础-指令,内置对象,动作,EL表达式,JSTL技术
一、指令
1、page指令
1):语法:<%@ page 属性名1=属性值1 属性名2=属性值2%>
2):Page指令用来定义jsp文件的全局属性
3):只有impot属性可以出现多次,其他的属性只能出现一次
4):常用属性:
language属性:声明使用脚本的语言。
extends属性:表明jsp编译成servlet的时候继承的类。默认值:HttpJspBase
session属性:表明jsp中时候可以直接使用session对象
errorPage属性:当当前页面出错后跳转到哪个页面
isErrorPage属性:当前页面是一个处理错误的页面
import属性:导包
isElgnored属性:通知jsp是否忽略El表达式
2、include指令
1):语法<%@ include 属性名=属性值% >
2):作用:在jsp页面静态包含一个文件,同时又jsp解析包含的文件内容
3:):常用属性:
file属性:指示jsp包含属性的路径
3、Taglib指令
1):语法<%@ taglib 属性名=属性值%>
2):用于在jsp页面引入标签库
3:):常用属性
uri属性:引入标签库的路径
prefix属性:引入标签库的别名
二、内置对象
定义:可以直接在jsp页面使用的对象。(九大内置对象)
1、out:输出对象 out.write(object o);
2、request:客户端发送的请求对象
3、response:服务器发送的相应对象
4、config:服务器的全局配置对象
5、application:服务器的全局域对象
6、session:服务器对应客户端的session对象
7、page:当前jsp被翻译为的servlet对象
8、pageContext:当前jsp的上下文对象
9、exception:本jsp运行时产生异常的对象
注意:exception只有在声明 isErrorPage="true" 后才生成
pageContext对象:页面的上下文对象
作用一:提供page范围的数据存取的方法(域对象)
1):存入数据:setAttribute(String str,Object val,[int i]):第一个参数为key ,第二个参数为value,第三个参数为需要调用其他的域对象所对应的 int 值(可以不写)
2):获取数据:getAttribute(String str,[int i]):第一个参数为key ,第二个参数为需要调用其他的域对象所对应的 int 值(可以不写)
3):移除数据:removeAttribute(String str,[int i]):第一个参数为key ,第二个参数为需要调用其他的域对象所对应的 int 值(可以不写)
4:):获取数据:findAttribute(String str,[int i]):第一个参数为key ,第二个参数为需要调用其他的域对象所对应的 int 值(可以不写),依次从 pageContext,request,session,application 域中查找,找到后即刻返回
作用二:通过这个对象可以获取其他的八大内置对象
pageContex.get****():获取其他八大内置对象
三、jsp标签(动作)
1、页面包含(动态包含):<jsp:include page="被包含的页面"/>
2、请求转发:<jsp:forward page="要转发的资源" />
注意:静态包含与动态包含的区别?
静态包含:编译为一个java文件
动态包含:便以为多个java文件
四、EL表达式:
1、概述:EL(Express Lanuage)表达式可以嵌入在jsp页面内部,减少jsp脚本的编写,EL 出现的目的是要替代jsp页面中脚本的编写。
2、语法 ${EL表达式}
3、EL获取pageContext域中的值:${}pageScope.key}
EL获取reqest域中的值:${requestScope.key}
EL获取session域中的值:${sessionScope.key}
EL获取application域中的值:${applicationScope.key}
EL获取四个域中的某个值${key}依次从 pageContext,request,session,application中查找
4、通过pageContext获取其他8大内置对象
${pagetContext.8大内置对象}
5、EL执行表达式
${num1+num2}:可以是当前页面的变量,也可以是从域中获取的字符串,不需要转int类型
${empty user}:判断是不是为空 ${!empty user} 或 ${not empty user} 判断不为空
${三元表达式}
五、JSTL技术
1、实现过程:
1)下载工具类并导入项目
2)导包:<%@ taglib uri="标签库地址" prefix="前缀"%>
3)调用:<c:if test="${EL表达式}">成立后需要显示的内容</c:if>
2、if表达式
<c:if test="${EL表达式(判断条件)}"></c:if>
3、forEach表达式
<c:forEach items="${从域中获取需要遍历的容器 }" var="遍历后对应的每一项" >
${pro.name }
</c:forEach>
常用属性:varStatus 表示 比表示循环的状态 对应的属性有 count :第几次循环,index:循环的索引