新建2个JSP页面,用input.jsp页面通过表单提交用户名和一个圆的半径,将它们存入session对象中,然后重定向到show.jsp 页面,输出用户名,获取半径值并计算出圆的面积并输出。需要对空对象进行处理,对异常数据进行处理。
时间: 2024-11-10 17:24:57 浏览: 65
在Java中,你可以按照以下步骤创建两个JSP页面来实现这个功能:
首先,在`input.jsp`页面,你需要添加一个HTML表单,用于输入用户名和圆的半径,并通过`<form>`标签设置POST请求,以便提交数据:
```jsp
<form action="processInput" method="post">
<label for="username">用户名:</label>
<input type="text" id="username" name="username" required><br>
<label for="radius">圆的半径:</label>
<input type="number" id="radius" name="radius" min="0" required><br>
<input type="submit" value="提交">
</form>
```
接下来,在`WEB-INF`目录下的`servlet-context.xml`(如果不存在则新建)配置一个Servlet处理器,例如叫`ProcessInputServlet`:
```xml
<servlet>
<servlet-name>ProcessInputServlet</servlet-name>
<servlet-class>com.example.ProcessInputServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ProcessInputServlet</servlet-name>
<url-pattern>/processInput</url-pattern>
</servlet-mapping>
```
在`ProcessInputServlet.java`中,处理表单提交并将数据存入Session:
```java
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;
import java.util.Map;
public class ProcessInputServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取表单数据
String username = request.getParameter("username");
Double radius = Double.parseDouble(request.getParameter("radius"));
// 数据验证和处理
if (username == null || radius == null || radius <= 0) {
// 对空对象或异常数据处理
response.getWriter().println("请输入有效的用户名和半径值。");
return;
}
// 存储数据到Session
HttpSession session = request.getSession();
session.setAttribute("username", username);
session.setAttribute("radius", radius);
// 重定向到show.jsp
response.sendRedirect("/show.jsp");
}
}
```
最后,在`show.jsp`页面,取出并展示数据,同时计算并显示圆的面积:
```jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>展示结果</title>
</head>
<body>
<%@ include file="header.jsp" %> <!-- 假设包含通用头部信息 -->
<h1>用户信息:</h1>
<p>用户名: <%= session.getAttribute("username") %></p>
<h2>圆的面积:</h2>
<%
Double radius = (Double) session.getAttribute("radius");
double area = Math.PI * radius * radius;
if (area != null) {
out.println("半径为 " + radius + " 的圆面积为: " + area);
} else {
out.println("无法计算面积,因为半径缺失或无效。");
}
%>
<%@ include file="footer.jsp" %> <!-- 假设包含通用底部信息 -->
</body>
</html>
```
阅读全文