JSP技术解析 (二)

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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值