您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 第8章-Struts和MVC设计模式
第8章Struts和MVC设计模式第8章Struts和MVC设计模式8.1MVC框架简介8.2用Struts2实现MVC设计模式8.3Struts的Web应用开发实例8.4小结8.5习题8.1MVC框架简介在Web应用开发中,MVC框架应用非常广泛,特别是在大型的、比较复杂的项目中。8.1.1MVC框架是什么8.1.2为什么要用MVC8.1.3MVC的实现8.1.1MVC框架是什么基于Java的动态Web开发有两种常用的开发模型:Model1和Model2。Model1◦在Model1模式下,整个Web应用几乎全部由JSP页面组成,JSP页面接收处理客户端请求,对请求处理后直接做出响应。用少量的JavaBean来处理数据库连接、数据库访问等操作。Web服务器响应请求浏览器JSPJavaBean企业数据库Model1模式的实现比较简单,适用于快速开发小规模项目。但从工程化的角度看,它的局限性非常明显:◦JSP页面身兼View和Controller两种角色,将控制逻辑和表现逻辑混杂在一起,从而导致代码的重用性非常低,增加了应用的扩展性和维护的难度。Model2Model2实现了业务逻辑、显示逻辑和控制逻辑的分离,即是基于MVC的框架。MVC框架即模型-视图-控制器(Model-View-Controller)设计模式。其中,◦M代表Model,V代表View,C代表ControllerMVC的目的是增加代码的可重用性,减少数据描述和应用操作的可耦合度,并提高代码的可读性。同时,也可以使软件的可维护性、可扩展性、可修复性、灵活性以及封装性大大提高。在Model2模式下,模型(Model)由JavaBean充当,视图(View)由JSP页面充当,而控制器(Controller)则由Servlet充当。实例化(模型)JavaBeanWeb服务器响应请求浏览器(控制器)Servlet企业数据库(视图)JSPMVC包括以下三部分:视图:视图是应用程序的表示层,代表用户交互界面。在Web应用中,交互界面可能是HTML界面,也有可能是XML界面、Applet界面或其他界面。模型:模型是应用程序的业务处理层,负责所有业务流程的处理和业务规则的制定。模型处理由控制器发来的视图的请求数据,并将最终的处理结果返回给视图。控制器:控制器的作用实际上就是一个分发器,负责决定将请求数据转发给什么样的模型组件,以及决定选择什么样的视图来显示模型返回的数据。一个基于MVC的应用程序对用户请求的处理过程:(1)终端用户通过应用程序发出了一个请求,该请求被转发给控制器。(2)控制器收到该请求后,检查该请求然后决定用什么样的业务逻辑来处理该请求,这时控制器会将该请求转发给一个相应的业务组件去处理。(3)模型中包含处理该用户请求的所有业务组件,并且也执行用户所需要的全部数据存取。代表终端用户查询检索出的任何数据都被打包返回给控制器。(4)控制器接收从模型返回的数据,并选择显示这些数据的相应的视图,然后将视图返回给用户。MVC模式适合大型项目的开发,是组件式的开发,但开发起来相对Model1复杂,步骤较多。8.1.2为什么要用MVCMVC框架的优点如下:◦有利于程序的维护和功能的扩展。◦有利于开发中的分工。◦有利于组件的重用。8.1.3MVC的实现【例8.1】MVC的实现。本节采用JSP+Servlet+JavaBean技术开发一个体重指数测量程序。本例是一个根据身高和体重数据来衡量体重状况的程序。程序包含4个文件,分别是:◦view_Table.jsp◦controller_Servlet.java◦model_Bean.java◦view_Result.jsp对身高和体重数据的处理计算是在模型层实现的,其中运用的业务规则是世界卫生组织拟定的体重状况的判断标准。体重指数(BMI)的计算公式是:体重指数(BMI)=体重(kg)/身高(米)的平方世界卫生组织拟定的BMI指数与体重状况的对应关系是:◦BMI在18.5-25体重在正常范围◦BMI大于25小于30体重状况为超重◦BMI大于30体重状况为较肥胖◦BMI小于18.5体重状况为偏瘦(1)Model层的实现Model(模型)层是软件中的核心模块,负责实现软件所有的业务逻辑,所有的数据处理都是在这里进行的。Model层用JavaBean来实现。类model_Bean是Model层的具体实现。新建一个类model_Bean,文件名为model_Bean.java,目录名为WEB-INF/src,存放在mvc_Test包中。Model_Bean.java文件源代码如下:packagemvc_Test;publicclassmodel_Bean{//构造函数publicmodel_Bean(){}//私有成员privateStringresult;privateStringbmi;//体重指数//公有成员publicvoidsetBmi(Stringw,Stringh){//BMI体重指数doublewt=Double.parseDouble(w);//将字符串类型的体重数据转换成double类型doubleht=Double.parseDouble(h);//将字符串类型的身高数据转换成double类型doublebmit=wt/(ht*ht);//按给定公式计算BMI体重指数bmit*=10;intbmitt=(int)bmit;bmit=(double)bmitt/10;bmi=String.valueOf(bmit);//通过在浮点型和整型之间,先后进行相互的强制转换,使BMI指数只保留一位小数。}publicStringgetBmi(){returnbmi;}publicvoidsetResult(Stringbmi){//根据BMI指数大小判定体型doublebmit=Double.parseDouble(bmi);if(bmit18.5&&bmit=25)result=您的体重在正常范围,请继续保持!;elseif(bmit25&&bmit=30)result=您的体重超重,请加强锻炼!;elseif(bmit30)result=您太.........重了,请注意饮食结构,加强锻炼!;elseresult=您的体形偏瘦,请注意营养!;}publicStringgetResult(){returnresult;//将处理结果返回控制层组件controller_Servlet}}模型层负责对其接收的身高和体重数据进行处理,这些数据是视图层以表单的方式采集而来的,接下来将给出视图层的代码。(2)View层的实现View(视图)层提供了一个表单以采集用户的身高和体重数据。view_Table.jsp文件源代码如下:%@pagecontentType=text/html;charset=GB2312%%@pageimport=mvc_Test.controller_Servlet%!--世界卫生组织标准体重测定--htmlheadtitle世界卫生组织标准体重测定/title/headbodycenterfontcolor=redsize=5看看您的体重状态如何/fonthrbrformname=view1action=controller_Servletmethod=POST 体重 inputtype=textname=weightvalue=公斤br身高 inputtype=textname=heightvalue=米brinputtype=submitvalue=提交  inputtype=resetvalue=重填/form/center/body/html视图层采集的数据提交给控制层,控制层转发给模型层处理,模型层接收控制层转发来的数据并对数据进行处理,处理结果返回给控制层。(3)Control层的实现控制层的具体功能是向模型层转发请求数据以及回收数据处理的结果,同时生成结果显示页面,返回给用户。Control层用Servlet实现。首先新建一个类controller_Servlet,对应文件名为controller_Servlet.java,目录名为WEB-INF/src,放在包mvcTest中。controller_Servlet.java源代码如下:packagemvc_Test;importjava.io.*;importjavax.servlet.*;importjavax.servlet.http.*;importmvc_Test.model_Bean;publicclasscontroller_ServletextendsHttpServlet{publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException,ServletException{//抛出接受请求的过程中的异常信息doPost(request,response);}publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException,ServletException{//抛出发送信息的过程中异常信息Stringweight=request.getParameter(weight);//获取表单中体重的字符串信息Stringheight=request.getParameter(height);//获取表单中身高的字符串信息model_BeanPro=newmodel_Bean();//建立一个model_Bean的实例ProPro.setBmi(weight,height);StringBMI=Pro.getBmi();Pro.setResult(BMI);Stringresult=Pro.getResult();//通过建立一个model_Bean的实例Pro,调用模型层组件model_Bean处理身高和体重信息response.setContentType(text/html;charset=gb2312);//指定以中文字符集显示返回信息request.setAttribute(result,result);request.setAttribute(BMI,BMI);//使用RequestDispatcher转发至显示视图页面/view_Result.jspRequestDispatcherrequestDispatcher=request.getRequestDispatcher(/view_Result.jsp);//获得RequestDispatcher对象requestDispatcher.forward(request,response);//转发}}显示测试结果的页面view_Result.jsp文件源代码如下:%@pagecontentType=text/html;charset=GB2312%%//输出返回信息StringBMI=(String)request.getAttribute(BMI);Stringresult=(String)request.getAttribute(result);out.println(html);out.println(body);out.println(center);out.println(您的BMI体重指数为:+fontcolor=red+BMI+/fontbr);out.println(result);out.println(/center);%注意:编译controller_Servlet.java文件时,需
本文标题:第8章-Struts和MVC设计模式
链接地址:https://www.777doc.com/doc-5386813 .html