首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

运用案例

2012-10-08 
应用案例7.2 应用案例本节通过二个案例来说明MVC的基本思想,MVC的工作模式。7.2.1 一个简单的例子第五章介

应用案例

7.2 应用案例       本节通过二个案例来说明MVC的基本思想,MVC的工作模式。7.2.1 一个简单的例子       第五章介绍了把triangle.jsp改造成为JSP+JavaBean模式,本节,在此基础上,改造成为MVC即JSP+JavaBean+servlet模式。在这个案例中,M层(JavaBean)保持原有设计不变,即为类Triangle(用于三角形的面积计算等功能)和类Stringtonum(用于把输入字符串转成三角形的三条边值)。按照MVC模式,设计servlet为TriangleMVC,参考代码如下。       package servlet;       import java.io.IOException;       import java.io.PrintWriter;       import javax.servlet.RequestDispatcher;       import javax.servlet.ServletException;       import javax.servlet.http.HttpServlet;       import javax.servlet.http.HttpServletRequest;       import javax.servlet.http.HttpServletResponse;       import model.Stringtonum;       import model.Triangle;       public class TriangleMVC extends HttpServlet {        public TriangleMVC() {super();}       public void doGet(HttpServletRequest request, HttpServletResponse response)                     throws ServletException, IOException {              String str=request.getParameter("boy");              Stringtonum angle=new Stringtonum();              boolean flag=false;              RequestDispatcher dispatcher = null;              Triangle tri=null;              if(!angle.strtonum(str))                     request.setAttribute("result", "请输入数字");              else{                     tri=new Triangle(angle.getNum1(),angle.getNum2(),angle.getNum3());                     if(!tri.isTriangle())                            request.setAttribute("result", "三边不能组成三角形");                     else{                            request.setAttribute("result", tri);                            flag=true;                            }                     }              if (flag ==false)                     dispatcher= getServletContext().getRequestDispatcher(                     "/trierror.jsp");              else                     dispatcher=getServletContext().getRequestDispatcher(                                   "/trisucess.jsp");              dispatcher.forward(request, response);       }       public void doPost(HttpServletRequest request, HttpServletResponse response)                     throws ServletException, IOException {              doGet(request,response);              }       }       上面servlet设计中,其基本处理流程为:       1、获取页面提交的数据(规格化的字符串)。       2、调用业务类Stringtonum的功能,若字符串能转成三条边,则继续以下步骤;否则,进行页面跳转至trierror.jsp,并传值"请输入数字"。       3、调用业务类Triangle的功能,若三条边能组成一个三角形,则继续以下步骤;否则,进行页面跳转至trierror.jsp,并传值"三边不能组成三角形"。       4、进行页面跳转至trisucess.jsp,并把三角形实例(tri)传至该页面。       JSP文件的参考代码如下。       trierror.jsp       <%@page contentType="text/html;charset=GB2312" %>                     <%=(String)request.getAttribute("result") %>                   trisucess.jsp       <%@page contentType="text/html;charset=GB2312" %>       <%@page  import="modle.*"%>                            <% Triangle tri=new Triangle();              tri=(Triangle)request.getAttribute("result"); %>      您输入的三边是:              <%=tri.getEdge1()%>        <%=tri.getEdge2()%>        <%=tri.getEdge3()%>             三角形面积是:<%=tri.calArea()%>                            主页面trimvc.jsp       <%@page contentType="text/html;charset=GB2312" %>              请输入三角形的三个边的长度,输入的数字用逗号分割:                           送出" name=submit>                    7.2.2 购物车MVC代码重构       第五章设计了购物车,本节进行MVC模式代码重构。显然M层(JavaBean)保持原有设计不变。另外,由于采用MVC模式,不建议在V层调用M层,所以把购物车(car)放在session中,这是主要的变动。另外,把V层(JSP)拆分成V层和C层,主要任务是设计servlet(即:OderServlet和ModifyMVC)。MVC模式下购物车的流程图如下所示。图7-2:MVC模式下购物车流程图。       先设计主页面goodsmvc.jsp,参考代码如下。       <%@ page contentType="text/html;charset=GB2312" %>                  网上书斋                                                                                             序号书名价格简介订购1computer12简介     >                    订购 >            2Cprogram20简介                                 订购>             3database30简介                         订购>                              购物详单   主页面基本保持原有设计风格。但提交目的地由原来的JSP页面改为servlet (OrderServlet),另外,应用了一个JS技术,其目的让用户购买商品时多一次提醒和确认。   lookmvc.jsp页面基本保持原有设计风格。同样,提交目的地由原来的JSP页面改为servlet(ModifyServlet)。代码如下。       <%@ page contentType="text/html;charset=GB2312" %>       <%@ page import="shop.*"%>       <%@page import="java.util.*" %>                         trisucess.jsp       <%@page contentType="text/html;charset=GB2312" %>       <%@page  import="modle.*"%>                            <% Triangle tri=new Triangle();              tri=(Triangle)request.getAttribute("result"); %>      您输入的三边是:              <%=tri.getEdge1()%>        <%=tri.getEdge2()%>        <%=tri.getEdge3()%>             三角形面积是:<%=tri.calArea()%>                            主页面trimvc.jsp       <%@page contentType="text/html;charset=GB2312" %>              请输入三角形的三个边的长度,输入的数字用逗号分割:                           送出" name=submit>                    7.2.2 购物车MVC代码重构       第五章设计了购物车,本节进行MVC模式代码重构。显然M层(JavaBean)保持原有设计不变。另外,由于采用MVC模式,不建议在V层调用M层,所以把购物车(car)放在session中,这是主要的变动。另外,把V层(JSP)拆分成V层和C层,主要任务是设计servlet(即:OderServlet和ModifyMVC)。MVC模式下购物车的流程图如下所示。图7-2:MVC模式下购物车流程图。       先设计主页面goodsmvc.jsp,参考代码如下。       <%@ page contentType="text/html;charset=GB2312" %>                  网上书斋                                                                                             序号书名价格简介订购1computer12简介     >                    订购 >            2Cprogram20简介                                 订购>             3database30简介                         订购>                              购物详单   主页面基本保持原有设计风格。但提交目的地由原来的JSP页面改为servlet (OrderServlet),另外,应用了一个JS技术,其目的让用户购买商品时多一次提醒和确认。   lookmvc.jsp页面基本保持原有设计风格。同样,提交目的地由原来的JSP页面改为servlet(ModifyServlet)。代码如下。       <%@ page contentType="text/html;charset=GB2312" %>       <%@ page import="shop.*"%>       <%@page import="java.util.*" %>                 <% car car1=(car)session.getAttribute("shop");       if(car1==null){car1=new car();}//第一次;     Vector v=car1.getV();%>                                                                          <% for(int i=0;i              {   Book book=(Book)v.get(i);                     out.println("");                     out.println("");                     out.println("");                     out.println("");                     out.println("");                     out.println("");                     }              %>      序号                    书名                    价格                    数量                    删除             "+book.getBooknum()+""+book.getBookname()+""+book.getPrice()+"");                     out.println("                  value="+book.getNum()+">");                     out.println("");                     String str=book.getBooknum();                     out.println("");                     out.println("       提交>                   返回购物                   对于控制层(C层),主要设计二个servlet。分别是OrderServlet和ModifyMVC。其代码如下所示。       OrderServlet.java       package servlet;       import java.io.IOException;       import java.io.PrintWriter;       import javax.servlet.RequestDispatcher;       import javax.servlet.ServletException;       import javax.servlet.http.*       import shop.car;       public class OrderServlet extends HttpServlet {              public OrderServlet() {super();}              public void doGet(HttpServletRequest request, HttpServletResponse response)                     throws ServletException, IOException {                     String goods=request.getParameter("goods");                     HttpSession session=request.getSession();                     car car1=(car)session.getAttribute("shop");                   if(car1==null){ car1=new car();}//第一次;                   car1.add(car1.newgoods(goods));                   session.setAttribute("shop",car1);                   RequestDispatcher dispatcher = null;                   dispatcher=getServletContext().getRequestDispatcher("/goodsmvc.jsp");                   dispatcher.forward(request, response);                     }              public void doPost(HttpServletRequest request, HttpServletResponse response)                     throws ServletException, IOException {                     doGet(request,response);                     }              }       显然,OrderServlet完成了第五章解决方案中的success.jsp功能。       ModifyMVC,java       package servlet;       import java.io.IOException;       import java.io.PrintWriter;       import javax.servlet.RequestDispatcher;       import javax.servlet.ServletException;       import javax.servlet.http.*;       import shop.car;       public class ModifyMVC extends HttpServlet {       public ModifyMVC() {super();}       public void doGet(HttpServletRequest request, HttpServletResponse response)                     throws ServletException, IOException {              HttpSession session=request.getSession();              car car1=(car)session.getAttribute("shop");              String str[]= request.getParameterValues("book");              if(str!=null){                     for(int i=0;ilength;i++)                            car1.delete(str[i]);                    }              String strbook=null;              String booknum=null;              for(int n=0;n                    strbook=car1.getBook(n).getBooknum();//书的编号(购物中心);                    booknum=request.getParameter(strbook);//根据编号取出被修改的书的数量;                    if(booknum==null)booknum="";                    int num=Integer.parseInt(booknum);                    car1.modify(strbook,num);//修改书的数量;                    }            RequestDispatcher dispatcher = null;            dispatcher=getServletContext().getRequestDispatcher(              "/lookmvc.jsp");            dispatcher.forward(request, response);       }       public void doPost(HttpServletRequest request, HttpServletResponse response)                     throws ServletException, IOException {              doGet(request,response);              }       }       显然,ModifyMVC完成了第五章解决方案中的modify.jsp功能。7.2.3 项目结构图       前节例子的工程结构图如下所示。图7-3 项目结构图
?

热点排行