目录
1.四大域对象
2.EL表达式的使用
EL表达式中的隐式对象(域对象)
3.JSTL标准标签库的使用步骤
标签的基本使用:
page域(pageContext):只能作用于当前页面,既不能用来做做转发的数据分享,也不能做重定向的数据分享。
request域:只能作用于同一个请求的数据共享,所以只能在请求的转发中使用。
session域:只能作用于一次对话中共享数据(一次对话:用户打开浏览器,浏览多个web站点后,关闭该浏览器),转发和重定向都可以使用
application域:只能在同一个web应用中使用。(全局的)
代码展示:
<%
pageContext.setAttribute("杨过", "小笼包");
request.setAttribute("张无忌", "赵敏");
session.setAttribute("风清扬", "海飞丝");
application.setAttribute("黄回", "坤坤");
%>
<%
out.println(pageContext.getAttribute("杨过") + "
");
out.println(request.getAttribute("张无忌") + "
");
out.println(session.getAttribute("风清扬") + "
");
out.println(application.getAttribute("黄回") + "
");
%>
<%
//request.getRequestDispatcher("demo2.jsp").forward(request, response);
%>
获取域对象的值:
<%=pageContext.getAttribute("杨过") %>
<%=request.getAttribute("张无忌") %>
<%=session.getAttribute("风清扬") %>
<%=application.getAttribute("黄回") %>
运行结果:
2.1 概述
EL 是 JSP 表达式语言,全称是 ExpressionLanguage,使用 EL 的目的是简化在 JSP 中访问变量的方式,简单静态 HTML 与 Java 代码的耦合。
2.2 基本语法格式
${ EL Expression}
2.3 示例代码
${ "Helloworld" } // 输出字符串常量
${ str } // 输出字符串变量 str 的值
${ 3 + 2 } // 输出 3+2 的结果
${ user.name} // 输出 user 对象的 name 属性
${user["name"] } // 同上
${ sessionScope ["user"].name } // 同上
${user.name} //访问对象 user 的 getName () 方法以得到 name 成员的值。
${list[1]} //访问 list 对象的第二项。
${map["key"]} //访问 map 指定键的值。
2.4 EL表达式中的操作符
(1)算术操作符 (+,-,*,/,%)
(2)逻辑操作符 (&&,||,! 或 and,or,not )
(3)比较操作符 (>,>=,<,<=,==,!==) 可以自动转换数据类型
(4)空操作符 (empty) 当值为 null 时返回 true
代码展示:
<%
pageContext.setAttribute("值1", "键1");
request.setAttribute("值2", "键2");
session.setAttribute("值3", "键3");
application.setAttribute("值4", "键4");
%>
通过EL表达式的方式去获取域对象所保存的值
${值1} <%=pageContext.getAttribute("值1") %>
${"值1"}
通过EL表达式获取数组,集合所保存的值
<%
String[] names = {"黄回","胡庆邦","谢文建","廖加俊"};
session.setAttribute("names",names);
List list = new ArrayList();
list.add("张无忌");
session.setAttribute("list",list);
Map maps=new HashMap();
maps.put("刘亦菲", "小老婆");
session.setAttribute("maps",maps);
List list2 = new ArrayList();
list2.add(new Student("东方不败",18));
session.setAttribute("list2",list2);
%>
${names[0]};
${list[0]};
${maps.刘亦菲};
${list2[0].name};
运行结果:
目的:根据指定隐式对象拿到键获取值
代码展示:
pageScope/requestScope/sessionScope/applicationScope
param 对象 paramValues也可获取指定值
<%
pageContext.setAttribute("zkingzz", "小笼包");
request.setAttribute("zkingzz", "赵敏");
session.setAttribute("zkingzz", "海飞丝");
application.setAttribute("zkingzz", "坤坤");
%>
${zkingzz }
${sessionScope.zkingzz }
这两者获取的值是一样的
${zkingzz }<%=request.getParameter("zkingzz") %>
1.导入jar 2个
2.利用taglib指令引入JSTL核心标签库依赖
prefix="c" 给JSTL命名为c标签
uri 核心标签库 依赖路径--通用标签:set out remove
--条件标签:if if...else
--迭代标签:forEach for循环3.out,set,remove,if,foreach
out标签的使用
<%
session.setAttribute("username", "admin");
%>
${username }
set标签的使用
remove标签的使用
移除前:
移除后:
if标签的使用(JSTL中有if没有else) if(){}
这是OK的
这是不OK的
foreach标签
${i }-----${sb.index }----${sb.count }
forEach案例
<%
List listStudents = new ArrayList();
listStudents.add(new Student("aa",12));
listStudents.add(new Student("bb",12));
listStudents.add(new Student("cc",12));
listStudents.add(new Student("ee",12));
listStudents.add(new Student("dd",12));
listStudents.add(new Student("ff",12));
session.setAttribute("listStudents", listStudents);
%>
${stu.name }-----${stu.age }