假设在页面page1.jsp中,使用include动作包含页面page2.jsp,并使用param动作传递参数n。然后在page2.jsp中接收参数n,并计算1!+2!+3!+...+n!的和并显示。写出程序代码
时间: 2024-11-12 12:38:47 浏览: 5
在JSP中,你可以使用`<jsp:include>`和`<c:param>`标签来动态地从一个页面包含另一个页面并传递参数。假设你有如下结构:
**page1.jsp:**
```jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<body>
<!-- 使用include和param传递参数 -->
<jsp:include page="page2.jsp" id="content" param="n" />
</body>
</html>
```
在这个例子中,`id="content"`用于引用将要包含的内容区域。
**page2.jsp:**
```jsp
<%@ page import="java.util.*" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:set var="sum" value="0"></c:set> <!-- 初始化和 -->
<c:forEach items="${params.n}" begin="1" end="${params.n}" step="1">
<c:set var="factorial" value="${factorial(${c:eval('it')})}"/>
<c:set var="sum" value="${sum + factorial}" />
</c:forEach>
<script>
function factorial(n) {
return (n <= 1) ? 1 : n * factorial(n - 1);
}
// 显示结果
document.write("The sum of factorials from 1 to " + ${params.n} + " is: " + sum);
</script>
</jsp:include>
```
在这里,我们首先导入了需要的库,并通过`${params.n}`获取从page1.jsp传递过来的参数。接着使用`<c:forEach>`遍历1到n,计算阶乘并将它们加起来。`<c:eval>`用于运行表达式计算当前迭代值,然后递归地计算阶乘。最后,我们在页面上显示计算结果。
阅读全文