MVC是一种通过三个不同部分构造一个软件或组件的理想办法:
1.模型(Model) =JavaBean
用于存储数据或实现业务逻辑的对象。
2. 视图(View) =JSP
向控制器提交所须数据、显示模型中的数据。
3.控制器(Controller) =Servlet
负责具体的业务逻辑操作,即控制器根据视图提出的要求对数据做出(商业)处理,并将有关结果存储到模型中,并负责让模型和视图进行必要的交互,当模型中的数据变化时,让视图更新显示。
编写HandleArea.jsp、web.xml、Area.java和HandleArea.java
1、 视图
JSP页面输入平行四边形的底和高,并显示出平行四边形的底、高和面积;
HandleArea.jsp:
<%@ page language="java" contentType="text/html; charset=gb2312"%>
<jsp:useBean id="data" class="mybean.data.Area" scope="session"></jsp:useBean>
<!DOCTYPE html>
<html>
<body bgcolor=lightblue><Font size=5>
<form action="handlearea" Method="get">
平行四边形:
<br>输入底:<input type=text name="d" size=4>
输入高:<input type=text name="h" size=4>
<input type=submit value="提交">
</form>
<jsp:getProperty name="data" property="mess"/>
底:<jsp:getProperty name="data" property="d"/>
高:<jsp:getProperty name="data" property="h"/>
<br>它的面积是:<jsp:getProperty name="data" property="area"/>
</Font>
</body>
</html>
如果Web应用没有用到数据库独有的一些特性,而仅仅是查询数据而已,并且这些数据
可能占用较大的存储空间。在这种情况下,如果选择用数据库来处理数据显然得不偿失,因为使用数据库要付出降低程序运行效率的代价。
当需要查询文件中的某些内容时,显然希望这种文件应当具有某种特殊的形式结构,即文件应当按照一定的标准来组织数据,这就是XML文件。
所以需要编写web.xml
<?xml version="1.0" encoding="gb2312"?>
<web-app>
<servlet>
<servlet-name>handle</servlet-name>
<servlet-class>myservlet.control.HandleArea</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>handle</servlet-name>
<url-pattern>/handle</url-pattern>
</servlet-mapping>
</web-app>
2、 数据模型
提供Javabean负责刻画平行四边形,即可以存储其相关数据,提供获取及修改数据的方法;
Area.java:
package mybean.data;
public class Area {
double d,h,area;
String mess;
public void setMess(String mess) {
this.mess=mess;
}
public String getMess() {
return mess;
}
public void setD(double d) {
this.d=d;
}
public double getD() {
return d;
}
public void setH(double h) {
this.h=h;
}
public double getH() {
return h;
}
public void setArea(double area) {
this.area=area;
}
public double getArea() {
return area;
}
}
3、 控制器
负责计算面积并存储到Javabean数据模型中,然后转交或重定向请求视图显示数据模型中的数据。
HandleArea.java:
package myservlet.control;
import java.io.IOException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import mybean.data.Area;
@WebServlet("/HandleArea")
public class HandleArea extends HttpServlet {
private static final long serialVersionUID = 1L;
public HandleArea() {
super();
}
public void init(ServletConfig config) throws ServletException {
super.init(config);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Area dataBean=new Area();
HttpSession session=request.getSession(true);
session.setAttribute("data", dataBean);
try {
double d=Double.parseDouble(request.getParameter("d"));
double h=Double.parseDouble(request.getParameter("h"));
dataBean.setD(d);
dataBean.setH(h);
double s=-1;
s=d*h;
dataBean.setArea(s);
dataBean.setMess("平行四边形");
}
catch(Exception e) {
dataBean.setArea(-1);
dataBean.setMess(" "+e);
}
response.sendRedirect("HandleArea.jsp");
}
}
运行结果