1. 程式人生 > >Web應用開發: JSP語法程式設計實踐(五):JSTL程式設計實踐

Web應用開發: JSP語法程式設計實踐(五):JSTL程式設計實踐

一、實驗內容

1、JSTL標籤庫的熟練使用
在頁面中接收使用者輸入的字串,使用JSTL將此字串反向輸出。不允許使用Java程式碼。
2、JSTL標籤庫的熟練使用
使用JSTL在頁面中輸出1到100的質數。不允許使用Java程式碼。。

二、實驗要求

原始碼和測試截圖(均直接輸入到答題框中)

三、實驗程式碼

題目一:

//form.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>表單輸入</title>
</head>
<body>


	<form action="reout.jsp" method="post">
		<table border="1" width="50%" align="center">
		<tr>
				<td>輸入一串字元:</td>
				<td><input type="text" name="str"></td>
		</tr>
		<tr>
				<td colspan="2" align="center"><input type="submit" value="提交"></td>
		</tr>
			
		</table>
	</form>


</body>
</html>
//reout.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>逆向輸出</title>
</head>
<body>
<!-- 利用EL表示式param獲取到表單傳入的str字串 -->
<c:set var="str" value ="${param.str}" />
<!-- 輸出正序的str字串 -->
<c:out value="${str}"></c:out>

<!--獲取字串長度  -->
<c:set var="strlen" value="${fn:length(str)}" />

<!-- 獲JSTL的foreach迴圈,從頭到字串末尾,以1計數
fn:substring()函式返回字串中指定開始和結束索引的子串
依次拼接在newstr的前面,最後輸出則為逆序 -->

<c:forEach var="i" begin="0" end="${strlen}" step="1">
<c:set var = "newstr" value="${fn:substring(str,i,i+1)}${newstr}" />
</c:forEach>

<c:out value="${newstr}"></c:out>
</body>
</html>

表單輸入

逆序輸出

題目二:

見註釋

//zhishu.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
     <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

<p>1到100的質數:</p>
<!-- 質數定義為在大於1的自然數中,除了1和它本身以外不再有其他因數 -->

<c:forEach begin="2" end="100" varStatus="vs">
<!-- 設定一個exitId用於避免重複輸出,即有一個數能整除你,則代表你不是質數 -->
 <c:set var="exitId" value="1"></c:set> 
 
 		<!-- 繫結的status封裝了當前遍歷的狀態,可以從該物件上檢視是遍歷到了第幾個元素,從2開始到自己本身-->
		<c:forEach begin="2" end="${vs.index}" varStatus="vs2"> 
		
			<!-- 如果能被除自己以外的數整除(非質數),則exitId賦值0 -->
 			<c:if test="${vs.index%vs2.index==0&&vs.index!=vs2.index}">  
   				 <c:set var="exitId" value="0"></c:set>  
  			</c:if> 
  			
  			<!-- 如果只能被自己整除(質數)且exitId=1保留到了最後-->
			<c:if test="${vs.index%vs2.index==0&&exitId==1 }">
				 <c:set var="exitId" value="1"></c:set> 
					${vs.index}
			</c:if>
			
		</c:forEach>
		
</c:forEach>


</body>
</html>

1到100的質數