1、编写JSP程序,以多种方法计算输入整数的阶乘。 1)通过Java代码在本文件内计算 a.使用HTML定义表单,提交参数到本文件; b.在本文件内,以Java代码定义计算阶乘的方法; c.通过Java代码片获取表单提交的参数(request.getParameter()),对该参数作判断(try..catch),是整数则进行阶乘计算,不是整数则给出提示。 2)通过表单提交到外部文件,计算后通过<jsp:forward>传回 a.使用HTML定义表单,提交参数到外部文件; b.在外部文件提取参数,做整数判
时间: 2023-06-15 22:05:14 浏览: 119
断,并计算阶乘; c.使用<jsp:forward>将计算结果传回原文件,并在页面上显示。
以下是使用Java代码在本文件内计算阶乘的实现:
```
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Calculate Factorial</title>
</head>
<body>
<h1>Calculate Factorial</h1>
<form method="post">
Input an integer: <input type="text" name="num"><br>
<input type="submit" value="Calculate">
</form>
<%
String numStr = request.getParameter("num");
if (numStr != null && numStr.matches("\\d+")) {
int num = Integer.parseInt(numStr);
long factorial = 1;
for (int i = 1; i <= num; i++) {
factorial *= i;
}
out.println("<p>" + num + "! = " + factorial + "</p>");
} else if (numStr != null) {
out.println("<p>Please input an integer.</p>");
}
%>
</body>
</html>
```
该页面使用了HTML定义了一个表单,用户可以在输入框中输入一个整数,然后点击“Calculate”按钮提交表单。在页面底部的Java代码片中,我们通过`request.getParameter()`方法获取表单提交的参数,并使用正则表达式判断该参数是否为整数。如果是整数,则使用`for`循环计算阶乘,并将结果输出到页面上。如果不是整数,则给出错误提示。
如果我们希望将计算阶乘的代码放在另一个JSP文件中,可以使用`<jsp:forward>`标签将表单提交到该文件,并将该文件计算得到的结果传回本文件显示。以下是使用这种方法的实现:
```
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Calculate Factorial</title>
</head>
<body>
<h1>Calculate Factorial</h1>
<form method="post" action="factorial.jsp">
Input an integer: <input type="text" name="num"><br>
<input type="submit" value="Calculate">
</form>
<%-- Do not display result here --%>
</body>
</html>
```
在这个页面中,我们将表单的`action`属性设置为`factorial.jsp`,表示提交表单时将数据传递到该文件中。而在本文件中,我们不再计算阶乘,而是使用注释告诉浏览器不要在这里显示结果。
下面是计算阶乘的外部文件`factorial.jsp`的实现:
```
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String numStr = request.getParameter("num");
if (numStr != null && numStr.matches("\\d+")) {
int num = Integer.parseInt(numStr);
long factorial = 1;
for (int i = 1; i <= num; i++) {
factorial *= i;
}
request.setAttribute("factorial", factorial);
request.getRequestDispatcher("showFactorial.jsp").forward(request, response);
} else if (numStr != null) {
out.println("<p>Please input an integer.</p>");
}
%>
```
该文件首先获取表单提交的参数,并进行整数判断。如果是整数,则计算阶乘,并将结果保存在请求对象中的一个属性中。然后使用`request.getRequestDispatcher()`方法获取显示结果的文件`showFactorial.jsp`的请求转发器,并调用`forward()`方法将请求转发到该文件。如果不是整数,则在页面上输出错误提示。
最后,以下是用于显示计算结果的文件`showFactorial.jsp`的实现:
```
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Calculate Factorial</title>
</head>
<body>
<h1>Calculate Factorial</h1>
<%
long factorial = (long) request.getAttribute("factorial");
int num = Integer.parseInt(request.getParameter("num"));
out.println("<p>" + num + "! = " + factorial + "</p>");
%>
</body>
</html>
```
该文件首先从请求对象中获取保存的阶乘结果,然后再获取输入的整数,并将两者输出到页面上。
通过以上两种方法,我们可以实现计算阶乘的JSP程序。需要注意的是,第一种方法在同一个文件中实现了所有功能,比较简单,但代码量较大,不利于维护;而第二种方法将计算功能分离到了另一个文件中,使代码更加清晰,但需要使用请求转发器来传递数据,稍微麻烦一些。
阅读全文