pageContext域 : 可以調用 其他三種域種的方法。
容错性强 并且域中没有该值 什么都不显示 不会显示null ${name=”名字”}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 测试 pageContext域 -->
<%
/* 该域对象 只在本页面有效 出了页面 获取不到 */
pageContext.setAttribute("page", "pageContext");
%>>
<%=pageContext.getAttribute("page") %>>
<!-- 不要在中间加注释 -->
<!-- JSP动作标签 -- 请求转发 -->
<%-- 转发的同时 还可以携带请求的参数 --%>
<%-- 携带参数相当于 在网址后面进行拼接 /2.jsp?username = wanglong&password=123 --%>
<jsp:forward page="/2.jsp">
<jsp:param value="wl" name="username"/>
<jsp:param value="123" name="password"/>
</jsp:forward>
</body>
</html>
獲取1.jsp種的參數
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 获取 1.jsp中转发的参数 -->
<!-- 没保存到域中用域的方法获取不到 -->
<%-- <%=request.getAttribute("username")%> --%>
<!-- 获取pageContext 中的内容 -->
<%=pageContext.getAttribute("page") %>>
<%=request.getParameter("username")%>
<%=request.getParameter("password")%>
</body>
</html>
pageContext域 :測試pageContext獲取其他域後的查找順序
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 测试域中的查找顺序 -->
<%
/* 一般系统方法中需要一个int参数 一般会是常量 */
/* 向 pageContext 域中 添加一个 键值对 */
/* 填那个 域 就往 那个域里提添加 */
/* 只要有配置 pageContext 就能向各个域中 添加值 参数三是 表示对应域的常量*/
/* 思考如何 测试 同名时 查询 域中的值 */
pageContext.setAttribute("p", "pageContext", PageContext.PAGE_SCOPE);
pageContext.setAttribute("p", "request", PageContext.REQUEST_SCOPE);
pageContext.setAttribute("p", "session", PageContext.SESSION_SCOPE);
pageContext.setAttribute("p", "applicattion", PageContext.APPLICATION_SCOPE);
%>>
<%-- <!-- 从小到大找 -->
<%=pageContext.findAttribute("p") %> --%>
<!-- 使用EL表达式 获取域中的数据 报错就重新粘贴一下 -->
<!-- 实际上就是使用 pageContext.findAttribute("p") 这个方法-->
${p }
</body>
</html>
用EL 表達式獲取域中的值(對象類型)
<%@page import="com.lanou3g.Address"%>
<%@page import="com.lanou3g.User"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 域中保存对象使用 EL表达式获取 -->
<%
User user = new User();
user.setUsername("wl");
user.setPassword("123");
Address address = new Address();
address.setCity("中国");
user.setAddress(address);
out.print(user);
request.setAttribute("l", user);
%>>
<!-- 相当于调用了 get方法 前提 必须有get 方法 -->
<!-- 如果我user对象中有个属性 也是个对象 -->
${l.username}
<!-- javaBean 导航 通过调用get 方法获取的 直接使用点(.)-->
${u.address.city}
<!-- 使用[] 获取值 -->
<!--注意:使用[] 要加引号 -->
<!-- 如果域中保存的是个集合 怎么获取 -->
${u["username"]}
${u['username']}
</body>
</html>
用EL 表達式獲取域中的值(使用集合保存的對象)
<%@page import="java.util.HashMap"%>
<%@page import="com.lanou3g.User"%>
<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 创建一个list 集合 和map集合 添加几个值 测试el表达式的获取-->
<%
ArrayList<String> list = new ArrayList<>();
list.add("a");
list.add("a1");
list.add("a2");
request.setAttribute("list", list);
HashMap<String,String> map = new HashMap<String,String>();
map.put("d", "dddd");
map.put("d", "eeee");
map.put("d", "ffff");
request.setAttribute("map", map);
%>
<!--如果是集合的话 只能使用[] -->
${list[0]}
${list[1]}
${map.d}
${map['d']}
</body>
</html>
使用EL表達式 判斷 empty 是否爲空值
<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 使用 EL表达式判断 Empty是不是空值 -->
<%
String str1 = null;
request.setAttribute("str1", str1);
String str2 = "";
request.setAttribute("str2", str2);
ArrayList<String> list = new ArrayList<String>();
list.add("saasad");
request.setAttribute("list", list);
ArrayList<String>list2 = new ArrayList<String>();
request.setAttribute("list2", list2);
ArrayList<String>list3 = null;
request.setAttribute("list3", list3);
String sex = "nan";
request.setAttribute("s", sex);
%>>
<!-- 判断是否是空的 只要没有值 就返回 true-->
${empty str1} <br/>
${empty str2} <br/>
<!-- 判断集合中指向空 和 不添加值 返回啥 -->
${empty list} <br/>
${empty list2} <br/>
${empty list3}<br/>
<!-- 支持三目 运算符 ? "" : "" -->
${empty list3?"我是前面的":"我是后面的" }<br/>
<br/>
<!-- 根据域中的值 来默认选中男女 -->
<input type="radio" value= "nan" name="sex" ${s== "nan" ? "checked='checked'" : ""} >男<br/>
<input type="radio" value= "nv" name="sex" ${s== "nv" ? "checked='checked'" : ""}>女<br/>
</body>
</html>
測試有那些隱式對象可以在EL表達式種使用
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 测试隐式对象 可以直接在el表达式中使用的对象-->
<%
pageContext.setAttribute("p", "pageContext", PageContext.PAGE_SCOPE);
pageContext.setAttribute("p", "request", PageContext.REQUEST_SCOPE);
pageContext.setAttribute("p", "session", PageContext.SESSION_SCOPE);
pageContext.setAttribute("p", "applicattion", PageContext.APPLICATION_SCOPE);
%>>
${pageScope.p}
${requestScope.p}
${sessionScope.p}
${applicattionScope.p}
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- el表达式中的 pageContext 可以代表对象 可以使用方法 -->
<form action="${pageContext.request.contextPath}/9.jsp" method="post">
<input type="text" name="username"><br/>
<input type="text" name="password"><br/>
<input type="checkbox" name="hobby" value="唱歌">唱歌
<input type="checkbox" name="hobby" value="篮球">篮球
<br/>
<input type="submit" value="提交">
</form>
</body>
</html>
利用 EL表達式獲取請求種的對象
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("UTF-8");
%>>
<!-- 用el表达式获取请求中的参数 -->
<!-- 就相当于调用 getParameter()方法 -->
${param.username} <br/>
${paramValues.hobby[0]} <br/>
<!-- 取请求头 -->
${header["User-Agent"]} <br/>
<!-- 取cookie中的值 -->
${cookie.JSESSIONID.value} <br/>
</body>
</html>
JSTL表達式 聲明變量 打印變量 刪除變量
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body> <!-- 不常用 -->
<!-- JSTL 需要的包 jstl-1.2.jar 和/standard-1.1.2.jar-->
<!-- JSTL表达式 实际上就处理jsp页上的 逻辑处理 -->
<!-- 通用标签 set out remove -->
<!-- 声明一个变量 默认是放在page 域中 -->
<c:set var="num" value="10" scope="session"></c:set>
<!-- 打印一个变量 相当于直接输出到 网页上 和out对象一样 -->
<c:out value="${num} }" default="aaa"></c:out>
${num}<br/>
<!-- 删除 -->
<c:remove var="num" scope="session"/>
${num}
</body>
</html>
JSTL表達式種的 邏輯表達式 if choose
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 声明一个变量 -->
<c:set var="n" value="10" scope="session"></c:set>
<!-- 逻辑表达式 if choose -->
<c:if test="${n<5}">
aaaa
</c:if>
<c:if test="${n>5}">
bbbb
</c:if>
<!-- -->
<c:choose>
<c:when test="${n==5}">5</c:when>
<c:when test="${n==10}">10</c:when>
<c:otherwise>sss</c:otherwise>
</c:choose>
</body>
</html>
JSTL種的邊利 forEach 循環增量step 用集合存儲時可作爲目標容器itrems 容器的名字var來定義
<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
ArrayList<String> list = new ArrayList<String>();
list.add("aaaa");
list.add("bbbb");
list.add("cccc");
list.add("dddd");
list.add("eeee");
request.setAttribute("list", list);
%>>
<!-- 循环 step 循环增量-->
<c:forEach var="i" begin="0" end="10" step="1">
${i }<br/>
</c:forEach>
<!-- 循环list中的值 -->
<c:forEach var="i" begin="0" end="10" step="1">
${list[i] }<br/>
</c:forEach>
<!-- itrems 我要遍历的目标容器 var 代表容器中保存的对象-->
<c:forEach items="${list}" var="l" step="2">
${l}</br>
</c:forEach>
</body>
</html>
遍歷AarraList集合後生成表格
<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
ArrayList<String> list = new ArrayList<String>();
list.add("aaaa");
list.add("bbbb");
list.add("cccc");
list.add("dddd");
list.add("eeee");
request.setAttribute("list", list);
%>>
<!-- 值 索引 计数 第一个元素 最后一个元素 -->
<table border="1">
<tr>
<th>值</th>
<th>索引</th>
<th>计数</th>
<th>第一个元素</th>
<th>最后一个元素</th>
</tr>
<c:forEach items="${list} }" var="list" varStatus="vs">
<tr>
<td>${list} }</td>
<td>${vs.index} </td>
<td>${vs.count}</td>
<td>${vs.first}</td>
<td>${vs.last}</td>
</tr>
</c:forEach>
</table>
</body>
</html>