利用MVC实现三角形、梯形面积计算
注:博客说明,本博客主要介绍jsp实现MVC模式的一个简单的例子。
通过对图形的计算,实现MVC,加深对MVC的理解。
一.主要内容
- 设计一个Web应用,该Web应用提供两个JSP页面,inputData.jsp页面使得用户可以输入三角形三边和梯形的上底、下底和高;showResult.jsp负责显示三角形和梯形的面积。
- Web应用提供一个名字为computerArea的Servlet对象(Servlet类名为AreaServlet),computerArea负责接收inputData.jsp页面中传递过来的参数,并负责计算三角形和梯形的面积,所有的数据都存储在Area.java这个JavaBean中。
二.实现步骤
-
编辑两个jsp页面,作为输入和输出的页面,设计的方式可以根据自己的喜好设计。输入的页面包括,图形的选择,图形的三个边的长度和提交按钮;输出界面包括计算的图形和计算面积的结果;然后将输入的结果提交给相应的servlet。
-
编写Javabean,作为图形的模式,包含的属性有图形的类型,图形的三个边的长度,以及计算的结果;包含的方法是由代码生成的各个属性的get和set函数。
-
编写servlet,作为提交数据的处理类,在这个类的函数中包含处理提交数据和返回结果的方法的实现,在存储数据的方式,可以采取request或者session,笔者采用了session。编写完servlet莫忘了要在web.xml配置相关属性,访问方式,以及在相应的jsp页面的提交,需要根据配置设置。实现关键的代码如下:
try{
//1. 获取的数据;
double a = Double.parseDouble(req.getParameter("n1"));
double b = Double.parseDouble(req.getParameter("n2"));
double c = Double.parseDouble(req.getParameter("n3"));
String str = req.getParameter("tuxing");
String strModel="";
//2.计算面积;
double area = 0;
if(str.equals("sanjiao"))
{
strModel="三角形";
double p=0;
p=(a+b+c)/2.0;
area=Math.sqrt(p*(p-a)*(p-b)*(p-c));
}
else
{
strModel="梯形";
area=(a+b)*c/2;
}
//3.创建JavaBean,并赋值,保存到session对象中;;
AreaBean aBean = new AreaBean();
aBean.setA(a);
aBean.setB(b);
aBean.setC(c);
aBean.setModel(strModel);
aBean.setResult(area);
HttpSession session = req.getSession(true);//获取session对象;
session.setAttribute("ABean", aBean);//保存在session对象中;
//4.重定向;
resp.sendRedirect("showResult.jsp");//重定向到输出界面:
}
catch(NumberFormatException e){
resp.sendRedirect("inputData.jsp");//输入错误,返回初始界面:
}
- 关于结果页面的jsp获取session内置对象。
<jsp:useBean id="ABean" type="beans.AreaBean" scope="session"
</jsp:useBean>
<jsp:getProperty property="model" name="ABean"/>计算面积:<jsp:getProperty property="result" name="ABean"/>
三.实验截图
-
计算三角形面积,输入如图1,输出结果如图2。
图1 三角形数据输入
图2 三角形面积的计算结果 -
计算梯形,数据的输入如图3,输出面积如图4.
图3 梯形数据的输入
图4 梯形面积的输出
四.结果反思
jsp的MVC模式,利用jsp+Javabean+servlet,实现网页的页面设计,数据模式
和数据的处理,使得网页的设计结构更加清楚,可读性更强,以及各部分的关系也更
好的分开,有利于网页的大规模开发。通过简单的面积计算的模拟,也可以看得出jsp
的MVC模式处理的优点,各部分的功能更加独立。
在设计的过程中,首先要明确自己的设计的内容,实现步骤,才能比较快速准确
的设计,少一些逻辑上的错误。
注:eclipse的项目链接:
https://pan.baidu.com/s/1CryLLOcN5DbMsHy3ZVHU3Q&shfl=sharepset