JSP&EL&JSTL

1_ JSP

  分析JSP执行流程(重要)   用servlet方式向客户端响应所有商品信息   

  为什么有JSP技术? Servlet直接向客户端浏览器响应html标签比较繁荣,后期难以维护

  jsp3种脚本段

     <%!  %> 定义型语句  定义变量/方法/类  转换在Servlet成员区域

<%   %> 普通JAVA语句              service方法内部

<%=  %> 计算出结果的表达式    out.write(脚本段);

  jsp注释  <%– –%>  html  java  优先用JSP注释

  用jsp方式向客户端响应所有商品信息 jsp弊端(jsp中嵌入了大量JAVA代码段不合理)

  目的:希望通过技术将JSP中java脚本段去除

2_EL

    技术背景:获取域对象中的数据 

格式:  ${  }

作用:1_获取域对象中的数据  2_简单计算

测试API:

 1_获取各种各样的数据 String JavaBean 数据  集合<String> 集合<JavaBean>  Map<String,String>  Map<String,JavaBean>

         2_ 简单计算  ${x+y}   ${ ? : }  ${empty  }

 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws javax.servlet.ServletException, IOException {
        // 数组
        int[] arr = {1, 2, 3, 4, 5};
        request.setAttribute("arr", arr);

        // List集合
        List<String> list = new ArrayList<>();
        list.add("chen");
        list.add("qi");
        request.setAttribute("list", list);

        List<User> userList = new ArrayList<>();
        userList.add(new User(1, "chen", "111"));
        userList.add(new User(2, "qi", "222"));
        request.setAttribute("userList", userList);

        // map集合
        Map<String, String> map = new HashMap<>();
        map.put("name", "chenqi");
        map.put("age", "18");
//        map.put("name", "11");
//        map.put("age", "11");  会覆盖上面的数据
        request.setAttribute("map", map);

        Map<String, User> userMap = new HashMap<>();
        userMap.put("p1", new User(1, "chenqi", "qqq"));
        userMap.put("p2", new User(2, "chenqi", "qqq"));
        userMap.put("p3", new User(3, "chenqi", "qqq"));
        request.setAttribute("userMap", userMap);

        //获取JavaBean
        User user = new User();
        user.setId(1);
        user.setUsername("陈琦");
        user.setPassword("1111");
//        user.setId(2);
//        user.setUsername("嗯嗯");
//        user.setPassword("1111");
        request.setAttribute("user", user);
        request.getRequestDispatcher("/el.jsp").forward(request, response);
    }
<body>
获取数组的指定值:${arr[0]}<br/>
获取数组的指定值:${arr[1]}<br/>
<br/>

获取List集合;${list}<br/>
获取List集合指定数据;${list[0]}<br/>
获取List集合指定数据;${list[1]}<br/>
<br/>

获取userList集合${userList}<br/>
获取userList集合${userList[0].id}<br/>
获取userList集合${userList[1].id}<br/>
<br/>
获取Map集合;${map}<br/>
获取Map集合指定数据;${map.name}<br/>
获取Map集合指定数据;${map["age"]}<br/>
<br/>
${userMap}<br/>
${userMap.p1.id}<br/>
${userMap.p1.username}<br/>
${userMap.p1.password}<br/>
<br/>

获取javaBean:${user}<br/>
获取javaBean:${user.id}<br/>
获取javaBean:${user.username}<br/>
获取javaBean:${user["password"]}<br/>
<br/>

</body>

3_JSTL  

    标准标签库:别人写好的一组java代码。

作用:去除jsp中的java代码

使用:1_ jar导入 2_ <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

测试:<c:if>  <c:forEach>

<body>

// c:forEach    
<%
    int[] arr = {1, 2, 2, 4, 5};
    request.setAttribute("arr", arr);
%>
<c:forEach items="${arr}" var="arrs">
    ${arrs}
</c:forEach>
<hr/>

<%
    List<String> list = new ArrayList<>();
    list.add("aaa");
    list.add("bbb");
    list.add("ccc");
    request.setAttribute("list", list);
%>
<c:forEach items="${list}" var="lists">
    ${lists}
</c:forEach>
<hr/>

<%
    Map<String, String> map = new HashMap();
    map.put("id", "1");
    map.put("name", "chenqi");
    map.put("age", "18");
    request.setAttribute("map", map);
%>
<c:forEach items="${map}" var="maps">
    <%-- ${maps} name=chenqi id=1 age=18 --%>
    ${maps.key}
    ${maps.value}
</c:forEach>
<hr/>

${map}<br/>
${map.id}<br/>
${map.name}<br/>
${map.age}<br/>


// c:if

<c:if test="3>5" scope="session" var="result">
    测试test标签
</c:if>

在页面上判断:3是否大于5,若页面上能显示"测试test标签",证明test的返回值为true;
test中表达式的运算结果为:${session.result}

</body>

发表评论