利用struts2,设计web程序。 已知三角形的三边长,计算并输出面积。 注意,若三边构成三角形,就输出面积,若三边不能构成三角形,返回输入界面重新输入,最好采用回显的方式实现输入界面。
时间: 2024-09-23 21:01:00 浏览: 46
在Struts2中设计一个Web程序来计算三角形面积,可以按照以下步骤进行:
1. **创建项目结构**:
使用Struts2框架,首先需要创建一个新的Web应用程序,包含Action、JSP页面以及相关的Java类。
2. **创建Action**:
创建一个名为`TriangleCalculatorAction`的Java类,它会处理用户请求并执行计算。这个类应该继承自`ActionSupport`,以便利用其默认的拦截器支持。
```java
import org.apache.struts2.interceptor.RequestAware;
public class TriangleCalculatorAction extends ActionSupport implements RequestAware {
private String a;
private String b;
private String c;
@Override
public void setRequest(HttpServletRequest request) {
// 如果从请求中获取边长信息,用于回显
a = request.getParameter("a");
b = request.getParameter("b");
c = request.getParameter("c");
}
public String execute() throws Exception {
double[] sides = {Double.parseDouble(a), Double.parseDouble(b), Double.parseDouble(c)};
if (isValidTriangle(sides)) {
double area = calculateTriangleArea(sides);
return "success"; // 跳转到显示面积的视图
} else {
return "input"; // 返回输入界面
}
}
// 边长是否能构成有效的三角形判断函数
private boolean isValidTriangle(double[] sides) {
for (double side : sides) {
if (side <= 0) return false;
}
int sortedSides[] = new int[3];
for (int i = 0; i < 3; i++) {
sortedSides[i] = Integer.parseInt(String.valueOf(sides[i]));
}
Arrays.sort(sortedSides);
return sortedSides[0] + sortedSides[1] > sortedSides[2];
}
// 计算面积的函数,这里使用海伦公式
private double calculateTriangleArea(double[] sides) {
double s = (sides[0] + sides[1] + sides[2]) / 2;
return Math.sqrt(s * (s - sides[0]) * (s - sides[1]) * (s - sides[2]));
}
}
```
3. **JSP页面设计**:
在`/WEB-INF/views/input.jsp`(假设为输入页面)中,创建表单供用户输入三角形的三边长度,并使用`<s:form>`标签绑定到Action:
```jsp
<form action="TriangleCalculatorAction" method="post">
<table>
<tr>
<td>A:</td>
<td><input type="text" name="a" value="%{#a}" readonly></td>
</tr>
<tr>
<td>B:</td>
<td><input type="text" name="b" value="%{#b}" readonly></td>
</tr>
<tr>
<td>C:</td>
<td><input type="text" name="c" value="%{#c}" readonly></td>
</tr>
<tr>
<td><button type="submit">Calculate</button></td>
</tr>
</table>
</form>
<!-- success.jsp 存放成功展示面积的部分 -->
<s:include file="success.jsp" />
```
4. **成功视图**:
`/WEB-INF/views/success.jsp` 中只展示计算结果:
```jsp
<p>三角形的面积是: ${area}</p>
```
5. **配置文件**:
在`struts.xml`中配置Action,指定URL模式:
```xml
<action name="triangleCalculator" class="com.example.TriangleCalculatorAction"
method="{1}">
<result name="success">success.jsp</result>
<result name="input">input.jsp</result>
</action>
```
现在,当用户提交表单后,如果输入的三边能构成有效三角形,就会显示面积;反之,将跳转回输入页面,已有的边长会被回显出来。注意,实际应用中可能还需要添加更多的错误检查和前端验证以提高用户体验。
阅读全文