目录
1.四大域对象
page域(pageContext):只能作用于当前页面,既不能用来做做转发的数据分享,也不能做重定向的数据分享。
request域:只能作用于同一个请求的数据共享,所以只能在请求的转发中使用。
session域:只能作用于一次对话中共享数据(一次对话:用户打开浏览器,浏览多个web站点后,关闭该浏览器),转发和重定向都可以使用
application域:只能在同一个web应用中使用。(全局的)
代码展示:
<%
pageContext.setAttribute("杨过", "小笼包");
request.setAttribute("张无忌", "赵敏");
session.setAttribute("风清扬", "海飞丝");
application.setAttribute("黄回", "坤坤");
%>
<%
out.println(pageContext.getAttribute("杨过") + "<br/>");
out.println(request.getAttribute("张无忌") + "<br/>");
out.println(session.getAttribute("风清扬") + "<br/>");
out.println(application.getAttribute("黄回") + "<br/>");
%>
<!-- 请求转发 -->
<%
//request.getRequestDispatcher("demo2.jsp").forward(request, response);
%>
<jsp:forward page="work_02.jsp"></jsp:forward>
获取域对象的值:
<%=pageContext.getAttribute("杨过") %><br/>
<%=request.getAttribute("张无忌") %><br/>
<%=session.getAttribute("风清扬") %><br/>
<%=application.getAttribute("黄回") %><br/>
运行结果:
2.EL表达式的使用
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");
%>
<!-- 注意事项:1.通过EL表达式输出一个变量,如果该变量不存在,啥都没有
2.如果输出为${"值1"}字符串,则为改变量;
-->
<h4>通过EL表达式的方式去获取域对象所保存的值</h4>
${值1} <%=pageContext.getAttribute("值1") %>
${"值1"}
<h4>通过EL表达式获取数组,集合所保存的值</h4>
<%
String[] names = {"黄回","胡庆邦","谢文建","廖加俊"};
session.setAttribute("names",names);
List<String> list = new ArrayList<String>();
list.add("张无忌");
session.setAttribute("list",list);
Map<String,String> maps=new HashMap<String,String>();
maps.put("刘亦菲", "小老婆");
session.setAttribute("maps",maps);
List<Student> list2 = new ArrayList<Student>();
list2.add(new Student("东方不败",18));
session.setAttribute("list2",list2);
%>
${names[0]};
${list[0]};
${maps.刘亦菲};
${list2[0].name};
运行结果:
EL表达式中的隐式对象(域对象)
目的:根据指定隐式对象拿到键获取值
代码展示:
pageScope/requestScope/sessionScope/applicationScope
<br/><br/>
param 对象 paramValues也可获取指定值
<%
pageContext.setAttribute("zkingzz", "小笼包");
request.setAttribute("zkingzz", "赵敏");
session.setAttribute("zkingzz", "海飞丝");
application.setAttribute("zkingzz", "坤坤");
%>
<br/><br/>
${zkingzz }
<br/><br/>
${sessionScope.zkingzz }
这两者获取的值是一样的
${zkingzz }<!-- --><%=request.getParameter("zkingzz") %>
3.JSTL标准标签库的使用步骤
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
标签的基本使用
<h4>out标签的使用</h4>
<%
session.setAttribute("username", "admin");
%>
${username }
<!-- 如果el表达式的变量不存在 默认输出sb default -->
<c:out value="${username2 }" default="sb"></c:out>
<h4>set标签的使用</h4>
<!-- var 变量的名称 -->
<!-- value 变量的值 -->
<!-- scope 域对象的范围,默认page -->
<c:set var = "mylove" value="刘亦菲" scope="session" ></c:set>
<c:out value="${mylove }"></c:out>
<h4>remove标签的使用</h4>
<c:set var = "stu" value = "${87+2 }" scope="session"></c:set>
移除前: <c:out value="${stu }"></c:out>
<br/>
<c:remove var="stu" scope="request" />
移除后: <c:out value="${stu }"></c:out>
<h4>if标签的使用(JSTL中有if没有else) if(){}</h4>
<c:if test="${1==1 }">
这是OK的
</c:if>
<c:if test="${1!=1 }">
这是不OK的
</c:if>
<h4>foreach标签</h4>
<!-- 打印输出1-100的结果 -->
<!-- step="5" 计布器(步长) -->
<c:forEach var = "i" begin="1" end ="100" step="2" varStatus="sb">
${i }-----${sb.index }----${sb.count } <br/>
</c:forEach>
forEach案例
<!-- 遍历集合 使用的属性 items = "遍历的集合"start end 不需要-->
<%
List<Student> listStudents = new ArrayList<Student>();
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);
%>
<c:forEach items="${listStudents }" var = "stu">
${stu.name }-----${stu.age }
</c:forEach>