在 [JSP/Servlet][讀書筆記]會話管理-使用HttpSession 這篇文章中,
我們利用HttpSession來實作了一個簡易型的問卷網頁,現在我們嘗試用JSTL標籤來改寫這個網頁
程式碼如下: question.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html> <c:set target="${pageContext.request}" property="characterEncoding" value="UTF-8" /> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Questionnaire</title> </head> <body> <form action="question.jsp" method="post"> <c:choose> <c:when test="${param.page == 'page1'}"> 問題一: <input type="text" name="p1q1"> <br> 問題二: <input type="text" name="p1q2"> <br> <input type="submit" name="page" value="page2"> </c:when> <c:when test="${param.page == 'page2'}"> <c:set var="p1q1" value="${param.p1q1}" scope="session" /> <c:set var="p1q2" value="${param.p1q2}" scope="session" /> 問題三: <input type="text" name="p2q1"> <br> <input type="submit" name="page" value="finish"> </c:when> <c:when test="${param.page == 'finish'}"> ${sessionScope.p1q1} <br> ${sessionScope.p1q2} <br> ${param.p2q1} <br> </c:when> </c:choose> </form> </body> </html>
這邊我們可以注意幾個地方:
1. 首先,我們必須宣告要使用的taglib相關資訊,譬如:
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
表示我們將使用以<c:為開頭的標籤來操作JSTL的核心標籤庫
2. 我們利用<c:set /> 標籤設定了Request的頁面編碼
<c:set target="${pageContext.request}" property="characterEncoding" value="UTF-8" />
3. 原先我們用HttpSession.setAttribute的方式來暫存請求範圍的屬性,現在一樣透過<c:set />完成
<c:set var="p1q1" value="${param.p1q1}" scope="session" /> <c:set var="p1q2" value="${param.p1q2}" scope="session" />
4. 我們可以透過sessionScope來取得請求範圍的屬性值及透過param來取得Request中的參數值
${sessionScope.p1q1} <br> ${sessionScope.p1q2} <br> ${param.p2q1} <br>
5. 我們可以透過<c:choose /> <c:when> <c:when/> 來做到程式中的流程控制
參考資料:
1. 「Servlet&JSP教學手冊 第二版」
2. [JSP/Servlet][讀書筆記]會話管理-使用HttpSession
全站熱搜