JSP重点知识:
一:三大元素:
1、脚本元素 <%!声明变量/方法 %> <%= %> (表达式后面不加分号) <%脚本(java代码)%>
2、指令元素 :page指令 include指令:在当前页面,静态导入另一个页面 taglib指令:导入标签库指令(需要在工程中将标签库的jar包导入)
3、动作元素:jsp自带的标准标签(减少jap在jap中的出现)
eg: < jsp:include> .... </jsp:include> <jsp:param>....</jsp:param> (表示参数 key value) <jsp:forword page=“页面url”>... ..</jsp:forword>(将参数发送到指定页面)
注: 在jsp文件中:
1、动作元素 之间 不能加注释语句,否则运行项目会报错!(原因:在.jsp翻译时,将注释翻译到了.java文件中了...)
2、在jsp:include动作元素标签中,需要加flush="true"属性及属性值 否则,就会报错!
二:九大内置对象:(在_jspService()方法中自动定义,即直接使用即可)
out request respone session application (5种)
page(当前的jsp页面) pageContext(当前的jsp页面的上下文) config exception(4种)
三、四大容器:(作用:存储数据)
page(等价于pageContext) request session application
四、静态导入与动态导入的区别:
1、静态导入:当前.jsp页面-----(静态)导入页面-----两页面一起翻译成--- .java文件----生成.class文件
(1)特点:(使用指令元素中的include指令)被导入页面发生在 翻译成.java文件阶段 之前 被导入的 即翻译阶段
(2)优点:执行效率高(两页面一起翻译成.java 一起生成.class文件 ),即.jsp文件执行速度快
(3)缺点:若被导入页面的内容修改,则.jsp文件需重新翻译成.java文件 ,重新生成.class文件
2、动态导入:当前jsp页面----当前页面翻译成----.java文件 ----编译------(动态)导入页面-----一起生成.class文件
(1)特点:(使用动作元素中的 jsp:include 元素) 被导入页面发生在 翻译成.java文件(servlet类) 之后 才会被导入 即执行阶段
(2)优点:若被导入页面内容修改,则.jsp文件不需要重新翻译(因为被导入页面本身就不在翻译之前被加载a!!!而是在翻译成.java之后加载滴!!!)
(3)缺点:执行效率低(因为两页面在执行阶段融合在一起,生成.class文件),即.jsp文件执行速度慢
五、JSTL:第三方标签库,即jsp标签集合(需要导入jar包才可以使用)
1、分类:
核心 标签库 <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
格式化 标签库<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
SQL标签库 <%@taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
XML标签库 <%@taglib prefix="xml" uri="http://java.sun.com/jsp/jstl/xml" %>
函数标签库 <%@taglib............................................../functions%>
2、使用:
在使用之前 都要进行定义 才可以使用标签 eg:<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
(1)<c:if> </c:if>
(2)<c:Foreach> </c:ForEach>
标签中的一些属性:
名字 类型 描述
var String 存放变量(迭代出来的)的属性名(scope为page)
items ${list} / ${map} 任何支持的类型遍历集合/数组/枚举/Iterator中的数据
varStatus String 迭代的状态,可以访问迭代的自身信息,如索引号
begin int items从index[begin]开始迭代 (若没有指定items从0开始做循环)
end int items从index[end]结束(若没有指定items在end结束)
step int 迭代的步长(step>0)
eg1:遍历list集合 eg2:遍历map集合
六、EL详解
1、形式: ${ }
2、作用: 从一个范围里面取值 即从某对象中取值 或 向页面输出值
3、示例:
(1)接收/获取 客户端参数为name1 对应的值.: ${param.name1 }
(2)指定容器 并取name2 对应的值: ${pageScope.name2 }
(3)可以不指定范围 再去取值: ${name}
注:按照pageContext(page) request session application四大容器 这样一个顺序依次的去找name对应的值,一旦找到,就显示该值,后面就会不再找!
(4)取出指定容器中 的指定对象中的 属性值: ${对象.属性} == ${requestScope.student.id}
(5)输出字符串 ${"hello"}