java_logo.png

[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

arrow
arrow
    全站熱搜

    allen0818 發表在 痞客邦 留言(0) 人氣()