Servlet的MVC模式(计算一元二次方程的根)
设计一个Web应用,该Web应用提供两个jsp页面,一个页面是用户输入一元二次方程的系数,另一个显示一元二次方程的系和根。Web应用提供一个名字为handle的servlet对象,handle负责计算一元二次方程的根,然后将有关数据存储到JavaBean中;Web应用提供的javaBean负责刻画一个一元二次方程,提供简单的获取数据和修改数据的方法。
用户需要为web.xml文件添加的如下字标记:
1 <servlet> 2 <servlet-name>handle</servlet-name> 3 <servlet-class>sun.yourservlet.HandleData</servlet-class> 4 </servlet> 5 <servlet-mapping> 6 <servlet-name>handle</servlet-name> 7 <url-pattern>/handleData</url-pattern> 8 </servlet-mapping>
1>模型(javabean)
1 package moon.yourbean; 2 3 public class Equation 4 { double a,b,c; 5 String rootOne,rootTwo; 6 boolean squareEquation; 7 public void setA(double a) 8 { this.a=a; 9 } 10 public double getA() 11 { return a; 12 } 13 public void setB(double b) 14 { this.b=b; 15 } 16 public double getB() 17 { return b; 18 } 19 public void setC(double c) 20 { this.c=c; 21 } 22 public double getC() 23 { return c; 24 } 25 public void setRootOne(String root) 26 { rootOne=root; 27 } 28 public String getRootOne() 29 { return rootOne; 30 } 31 public void setRootTwo(String root) 32 { rootTwo=root; 33 } 34 public String getRootTwo() 35 { return rootTwo; 36 } 37 public void setIsSquareEquation(boolean b) 38 { squareEquation=b; 39 } 40 public boolean getIsSquareEquation() 41 { return squareEquation; 42 } 43 }
2>试图(jsp页面)
input.jsp
1 <%@ page contentType="text/html;charset=GB2312" %> 2 <HTML><BODY ><Font size=2> 3 <FORM action="handleData" Method="post" > 4 <BR>输入一元二次方程的系数: 5 <BR> 二次项系数a:<Input type=text name="a" size=4> 6 一次项系数b:<Input type=text name="b" size=4> 7 常数项c:<Input type=text name="c" size=4> 8 <Input type=submit value="提交"> 9 </FORM> 10 </Font></BODY></HTML>
show.jsp
1 <%@ page contentType="text/html;charset=GB2312" %> 2 <%@ page import="moon.yourbean.*"%> 3 <jsp:useBean id="equation" type="moon.yourbean.Equation" scope="request"/> 4 <HTML><BODY ><Font size=2> 5 一元二次方程的系数是: 6 <BR> 二次项系数:<jsp:getProperty name="equation" property="a"/> 7 一次项系数:<jsp:getProperty name="equation" property="b"/> 8 常数项:<jsp:getProperty name="equation" property="c"/> 9 <BR>是一元二次方程吗?<jsp:getProperty name="equation" property="isSquareEquation"/> 10 <BR>方程的两个根是:<jsp:getProperty name="equation" property="rootOne"/>, 11 <jsp:getProperty name="equation" property="rootTwo"/> 12 </FONT></BODY></HTML>
3>控制器(servlet)
1 package sun.yourservlet; 2 import moon.yourbean.*; 3 import java.io.*; 4 import javax.servlet.*; 5 import javax.servlet.http.*; 6 public class HandleData extends HttpServlet 7 { public void init(ServletConfig config) throws ServletException 8 {super.init(config); 9 } 10 public void doPost(HttpServletRequest request,HttpServletResponse response) 11 throws ServletException,IOException 12 { Equation equ=new Equation(); //创建Javabean对象 13 request.setAttribute("equation",equ);// 将equ存储到HttpServletRequest对象中 14 double a=Double.parseDouble(request.getParameter("a")); 15 double b=Double.parseDouble(request.getParameter("b")); 16 double c=Double.parseDouble(request.getParameter("c")); 17 equ.setA(a); //将数据存储在equ中 18 equ.setB(b); 19 equ.setC(c); 20 if(a!=0) 21 equ.setIsSquareEquation(true); 22 else 23 equ.setIsSquareEquation(true); 24 double disk=b*b-4*a*c; 25 if(disk<0) 26 { equ.setRootOne("无实根"); 27 equ.setRootTwo("无实根"); 28 } 29 else 30 { double root1=(-b+Math.sqrt(disk))/(2*a), 31 root2=(-b-Math.sqrt(disk))/(2*a); 32 equ.setRootOne(""+root1); 33 equ.setRootTwo(""+root2); 34 } 35 RequestDispatcher dispatcher=request.getRequestDispatcher("show.jsp"); 36 dispatcher.forward(request,response); //请求show.jsp显示equ中的数据 37 } 38 public void doGet(HttpServletRequest request,HttpServletResponse response) 39 throws ServletException,IOException 40 { doPost(request,response); 41 } 42 }