上机指导第十二章

输入三角形三条边的长度,计算并显示三角形的面积。

设计分析:

• 界面 JSP:输入三条边(input.jsp),显示三角形面积(show.jsp);

• 模型 JavaBean:(Triangle.java)判断三条边是否能组成三角形,计算三角形面积;

• 控制器 Servlet:从input.jsp 接收三条边输入的数据,创建响应的JavaBean 实例,验证输入合法性后再计算三角形面积结果发给show.jsp。

思考:如果输入比较复杂,验证合法性工作怎么处理比较好(从功能上考虑)?

package com.inspur.ch12;

import java.io.IOException;

import java.io.UnsupportedEncodingException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

/**

*

*

*/

public class ComputServlet extends HttpServlet {

@Override

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws UnsupportedEncodingException, IOException {

HttpSession session = request.getSession();

// 从input.jsp 接收三条边输入的数据,创建响应的JavaBean 实例,验证输入合法性后再计算三角形面积结果发给show.jsp。

// 如果输入比较复杂,验证合法性工作怎么处理比较好

String length1 = request.getParameter("length1");

String length2 = request.getParameter("length2");

String length3 = request.getParameter("length3");

//

// if((a+b)>c&&(a+c>b)&&(b+c)>a)

//1.校验输入的三条边是否为大于0的数值

double num1 = 0;

double num2 = 0;

double num3 = 0;

try {

num1 = Double.parseDouble(length1);

num2 = Double.parseDouble(length2);

num3 = Double.parseDouble(length3);

} catch (NumberFormatException e) {

session.setAttribute("error", "输入的三条边的长度必须为大于0的数值");

response.sendRedirect(request.getContextPath() + "/input.jsp");

return;

}

if(num1<=0||num2<=0||num3<=0){

session.setAttribute("error", "输入的三条边的长度必须为大于0的数值");

response.sendRedirect(request.getContextPath() + "/input.jsp");

return;

}

//2.校验是否能组成三角形

Triangle triangle = new Triangle();

boolean isTriangle = triangle.isTrTriangle(num1, num2, num3);

if (!isTriangle) {

session.setAttribute("error", "输入的三条边的长度不能组成三角形,必须任何两条边之和大于第三边");

response.sendRedirect(request.getContextPath() + "/input.jsp");

return;

}

//3.计算面积

double area=triangle.computArea(num1,num2,num2);

session.setAttribute("area", area);

response.sendRedirect(request.getContextPath() + "/show.jsp");

}

}

package com.inspur.ch12;

/**

* 判断三条边是否能组成三角形,计算三角形面积;

*

*/

public class Triangle {

/**

* 判断三条边是否能组成三角形

*

* @return 如果能组成三角形则返回true,否则返回false

*/

public boolean isTrTriangle(double num1, double num2, double num3) {

if ((num1 + num2) > num3 && (num1 + num3) > num2

&& (num2 + num3) > num1) {

return true;

}

return false;

}

/**

* 计算面积

*

* @return 面积

*/

public double computArea(double num1, double num2, double num3) {

double area = 0.0;

double p = (num1 + num2 + num3) / 2;

area = Math.sqrt(p * (p - num1) * (p - num2) * (p - num3));

return area;

}

}

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme() + "://"

+ request.getServerName() + ":" + request.getServerPort()

+ path + "/";

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<base href="<%=basePath%>">

<title>接收三条边输入的数据</title>

</head>

<body>

<font color="red"> ${sessionScope.error } </font>

<form action="computServlet" method="post">

<hr>

<h2>请输入三角形的三条边的长度</h2>

<p>

请输入第一条边长度:<input type="text" name="length1">

</p>

<p>

请输入第二条边长度:<input type="text" name="length2">

</p>

<p>

请输入第三条边长度:<input type="text" name="length3">

</p>

<p>

<input type="submit" value="计算面积">

</p>

</form>

<br>

</body>

</html>

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<base href="<%=basePath%>">

<title>显示用户名</title>

</head>

<body>

<p>该三角形的面积:<%=session.getAttribute("area") %></p>

</body>

</html>

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

" target="_blank">http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

<servlet>

<servlet-name>computServlet</servlet-name>

<servlet-class>com.inspur.ch12.ComputServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>computServlet</servlet-name>

<url-pattern>/computServlet</url-pattern>

</servlet-mapping>

</web-app>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值