EL表达式可以替换jsp表达式,但是EL表达式局限:不能条件判断,不能赋值,不能迭代jsp标签:替代
jsp脚本,完成条件判断,赋值,迭代等等功能。
1)jsp内置标签(动作标签):使用的时候不需要导入标签库
2)jstl标签(标准标签) :使用的时候需要导入标签库
3)自定义标签 使用的时候需要导入标签库
转发标签
<% request.getRequestDispatvher("").forward(request,response);%>
参数标签
${paramValues['name'][0]}
包含标签
包含标签的原理:包含于被包含的页面单独翻译不同的java文件,然后再运行时合并在一起
(先翻译再合并)
静态包含 vs 动态包含
静态包含 先合并在翻译 不能懈怠参数
动态包含: 先翻译再合并 可以携带参数
包含的页面
${param['name']}
jstl标签:java standard tag libarary java 标签标签库
特点:在使用jstl标签是需要导入标签库
jstl标签库分类
核心标签库(最要)(c)
国际化标签库 (fmt)
EL函数库 (fn)
SQL标签库 (sql)
XML标签库 (x)
1)导入jstl的支持jar包,在java5.0之后jstl已经属于5.0的支持包里面
2)使用jsp页面。需要使用jsp的顶部使用taglib指令导入需要的标签库
url:表示需要导入的标签库的URL名称,每个标签库都会有一个tld后缀名声明文件,在tld文件中都有唯一
的URI名称,这个URL名称就是当前标签库的名称http://java.sun.com/jsp/jstl/core
prefix:使用标签库的前缀,通常和tld文件的short-name名称相同
<%@ taglib url="http://java.sun.com/jsp/jstl/core" prefix="c"%>
3)使用标签
1)保存数据 给域对象赋值
<% String name="reic";
pageContext.setAttribute(‘name“,name);
%>
<,c:set var="name" value="eric" scope="request"/>
var数据名称
value保存数据值
scope:保存到那个域默认page域
page->page域
request-》request域
session-》session域
applocation-》applocation域
2)获取数据
获取域对象的数据
value:代表获取域中某个名称内容,如果数据在中,必须使用EL语法去获取
default:默认值,当前获取内容为null,那么使用默认值代替
escapeXml:默认的情况下为true(原样输出+标签) out标签会把输出的内容进行转义
如果不需要转义,则为false
3)单条件判断
test:条件表达式:返回true的时候,就会执行if标签体的内容,否则,不执行
4)多条件判断
登录之后:一定会把数据存到session域 user名称
欢迎回来
请先注册或登录
5)用于迭代(循环)
List集合
<%
List list=new ArrayList();
list.add(new student("1",‘123456“));
list.add(new student("2",‘123456“));
list.add(new student("3",‘123456“));
pageContext.setAttribute(list",list);
%>
${ list[0].name] $list{list[0].password}
begin:从那个元素开始去遍历,从0开始
end:到那个元素为止 默认到最后
step:增加步长, 默认step为1
items:控制需要遍历的数据(数组|List集合|Map集合)如果是获取域的数据,name要有EL表达式获取
var:每个元素的名称
varStatus:当前状态对象,该对象封装当前元素状态信息,例如count属性,表示当前遍历的是哪个元素
,从1开始
序号:${vatSta.count] 姓名:${student.name}-密码${student.password}
Map集合
<%
Map map=new HashMap();
map.put("001",(new student("1",‘123456“));
map.put("001",(new student("1",‘123456“));
map.put("001",(new student("1",‘123456“));
pageContext.setAttribute(lmap",map);
%>
注意:forEach标签遍历map集合把每个Map的对象使用Entry封装键对象,值对象通过getKey()获取键对象
通过getValue()获取值对象
${map['001'].name}
编号:${entry.key} -姓名${enrey.value.name} -密码${entry.value.password}
遍历一个特殊的字符串
<%
String str=(String ) copeContext.getAttribute("str“);
String[] strs=str.split("-";
%>
items:需要遍历的字符串
delims:指定分割符号
var:每个内容的名称
${s},
6)从定向
<%
response.sendRedirect(’‘);
%>