JSTL知識點學習

這裏寫圖片描述

代碼演示中需要用到的domain值對象USer類:

package cn.hncu.domain;

public class User {
    private String id;
    private String name;
    private String pwd;
    private Integer age;
    public User(String name, String pwd) {
        this.name = name;
        this.pwd = pwd;
    }
    public User(String name, String pwd, Integer age) {
        this.name = name;
        this.pwd = pwd;
        this.age = age;
    }
    public User(){
    }

    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPwd() {
        return pwd;
    }
    public void setPwd(String pwd) {
        this.pwd = pwd;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return  name + "," + pwd +", "+ age;
    }
}

Servlet後臺數據:

package cn.hncu.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import cn.hncu.domain.User;

public class ShowServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        doPost(request, response);
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        response.setContentType("text/html;charset=utf-8");
        request.setCharacterEncoding("utf-8");
        PrintWriter out = response.getWriter();
        //模擬後臺,查詢並封裝出很多用戶信息
        List<User> list = new ArrayList<User>();
        for(int i=1;i<21;i++){
            User user = new User("Rose玫瑰"+i, "hncu"+i, i);
            list.add(user);
        }
        //通過轉發發送到前臺頁面
        request.setAttribute("list", list);
        request.getRequestDispatcher("/jsps/Show.jsp").forward(request, response);
    }

}

腳註(類似版權所有的那種):

<%@page language="java" import="java.util.*"  pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  <h2>版本所有:湖南城市學院</h2>
  <img src="<%=request.getContextPath()%>/jsps/1.jpg"></img>

1.jpg文件
這裏寫圖片描述


代碼演示

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>

  <body>
    <%
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
    %>
    <p> c:out標籤 ---輸出表達式或標識符的值(功能和${標識符}類似,差別體現在default和escapeXml兩個屬性上)</p>
    <%
        request.setAttribute("name", "空罐子的牛奶瓶");
    %>  
    <!-- c:out標籤可以進行自封閉,也可以收尾封閉,請注意:JSTL離不開EL表達式,兩者必須結合起來使用!!!! -->
    c:out標籤:<c:out value="${name }" />-------EL表達式演示:${name }<br/>
    c:out標籤:<c:out value="${param.nm }" />-------EL表達式演示:${param.nm }<br/>
    <!--default屬性的功能:當"變量aa"爲空時,輸出該屬性中的值  -->

    c:out標籤:<c:out value="${aa }"></c:out>-----EL表達式演示:${aa }<br/>

    <%
        pageContext.setAttribute("str", "<font color='red'>湖南城市學院</font>");
     %>
    <!-- escapeXml="true"會把信息中的"<"號編碼成"&lt;"輸出,若該屬性爲flase則編碼  -->
    c:out標籤:<c:out value="${str }" escapeXml="true"></c:out>------EL表達式:${str }
    <!-- 上面代碼將escapeXml設置爲false時不對xml或html進行轉換,直接輸出,這樣就會在頁面上看到紅色的Red字符,因爲瀏覽器會解析html數據。 -->


    <hr color='red'/>
    <p> c:set標籤 </p>    
    <!-- 給JavaBean設置屬性 -->
    <jsp:useBean id="user" class="cn.hncu.domain.User"></jsp:useBean>
    <c:set target="${user }" property="name" value="tom張三"></c:set>
    <c:set target="${user }" property="age" value="35"></c:set>
    設置屬性之後的user對象:<c:out value="${user }"></c:out><br/>

    <br/><br/>
    <!-- 給String類型的變量設置值 -->
    <c:set var="sum" value="200"></c:set>
    <c:out value="${sum }"></c:out>

    <br/><br/><br/>
    <p> c:if標籤  ---用於判斷控制 </p>  
    <%
        request.setAttribute("age", 33);
    %>
    EL表達式實現判斷功能(問號表達式):${age>25? 'old':'young' }
    <br/>
    c:out標籤實現判斷功能(c:if):(相當於java中的if-else)
    <c:if test="${age>25 }" var="boo" scope="session">
        年齡:<c:out value="${age }"></c:out><br/>
        湖南城市學院<br/>
        <font color='red'>我愛你I LOVE YOU!</font><br/>
    </c:if>
    <c:if test="${!boo }">
        <font color='blue'>I HATE YOU!不知名</font>
    </c:if>
  </body>
</html>
<%@page import="cn.hncu.domain.User"%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>

  <body>
    <p> c:forEach標籤 </p>
        一、普通for循環的功能
        <c:forEach begin="1" end="10" var="i" step="2">
            ${i }<br/>
            <c:out value="${i }"></c:out>
        </c:forEach>
        <br/>
         二、增強for循環的功能<br/>
   1.遍歷數組<br/>
   <%
        String[] strs = {"湖南","城市","學院","呵呵噠"};
        pageContext.setAttribute("strs", strs);
    %>
   <c:forEach items="${strs }" var="str">
        ${str },
   </c:forEach>

   <hr/>
    2.遍歷List<br/>
    <%
        List<String> list = new ArrayList<String>();
        list.add("我愛");
        list.add("我的");
        list.add("祖國");
        request.setAttribute("list", list);
     %>
     <c:forEach items="${list }" var="lst">
        ${lst },
     </c:forEach>

     <hr color='red'/>
     3.遍歷map<br/>
     <%
        User user = new User();
        user.setName("Rose玫瑰");
        user.setAge(33);
        user.setPwd("hncu123456");
        Map<String,Object> map = new HashMap<String,Object>();
        map.put("name", "Jack李四");
        map.put("age", 38); 
        map.put("sex", "男");
        map.put("user", user);
        session.setAttribute("map", map);
      %>
      <c:forEach items="${map }" var="m">
        ${m },
      </c:forEach>
      <hr/>
      <br/>
    3.遍歷元素爲值對象的集合,如List&lt;User&gt; <br/>
    <%
        List<Object> list2 = new ArrayList<Object>();
        list2.add(new User("Rose玫瑰","hncu1234",33));
        list2.add(new User("Jack張三","hncu5678",28));
        list2.add(new User("Mike李四","hncu1235",15));
        list2.add(new User("Rose李白","hncu12135",41));
        pageContext.setAttribute("list2", list2);
     %>
        直接輸出整個對象:
     <c:forEach items="${list2 }" var="lst2" varStatus="idx">
        ${idx.count }
        ${lst2 }<br/>
     </c:forEach>
     <hr color='blue'/>
        分別輸出對象中的每個屬性值:
     <c:forEach items="${list2 }" var="lst2" varStatus="idx">
        ${idx.first }:::${idx.index }::::${lst2.name },${lst2.age },${lst2.pwd }<br/>
     </c:forEach>

     <hr/>
     <%
        request.setAttribute("score", 55);
      %>
     <p> c:choose,when,otherwise標籤 </p>
     <c:choose>
        <c:when test="${score>90 }">
            優秀!
        </c:when>
        <c:when test="${score>80 }">
            良好!
        </c:when>
        <c:when test="${score>70 }">
            合格!
        </c:when>
        <c:when test="${score>60 }">
            差評!
        </c:when>
        <c:when test="${score>50 }">
            讀你媽比的書!
        </c:when>
     </c:choose>

     <hr/>
     <p> forTokens標籤(相當於JAVA語言中的str.split(",")方法,根據指定的字符來拆分某一字符串) </p>
     <c:forTokens items="a,b,c,d,love,rose玫瑰" delims="," var="x">
        <c:out value="${x }"></c:out>
     </c:forTokens>

     <hr color='red'/>
     <p> url相關的標籤: url,import,redirect </p>
     <!-- 重寫url技術,路徑中的斜槓就是項目根目錄 -->
     <a href="<c:url value='/servlet/ShowServlet' />">顯示所有用戶信息</a> <br/>

     <c:import url="/jsps/foot.jsp"></c:import>

     <!-- 重定向演示 -->
     <%--小心,頁面中寫了c:redirect,就會立即重定向到其它頁面。不會再停留在當前頁面
    <c:redirect url="/jsps/Show.jsp"></c:redirect>
     response.sendRedirect("/jsps/show.jsp");
    --%>

    <p> c:remove標籤:移除屬性變量, 和set是相反 </p> 
  <c:remove var="score"/>
  score: ${score}
  </body>
</html>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章