资源描述
ACCP V4.0,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,*,第,13,章,MVC,设计模式,回顾,过滤器是向,Web,应用程序的请求和响应添加功能的,Web,服务组件,过滤器是根据用户的请求和,Web,资源的响应配置的,过滤器生命周期包括的各个阶段分别为:实例化、初始化、过滤和销毁,过滤器定义将过滤器名称与特定类关联起来,过滤器映射用于将过滤器映射到,Web,资源,过滤器定义和过滤器映射用于部署描述符中,2,目标,掌握,Model I,体系结构,掌握,Model II,体系结构,掌握,MVC,应用程序,3,Model I,体系结构,6,-1,Model I,体系结构结合使用,JSP,页面和,JavaBean,来开发,W,eb,应用程序,请求,应用服务器,响应,JSP,页面,JavaBean,数据库,服务器,4,Model I,体系结构,6,-2,Model I,体系结构用于开发简单的应用程序,Model I,体系结构包括多个用户可与之交互的页面,客户端能够直接访问加载到服务器上的页面,Model I Web,应用程序由复杂的,Web,逻辑组成,并链接至,Web,应用程序的其他页面,5,Model I,体系结构,6,-3,本示例演示,Model I,体系结构。客户输入产品,ID,时,显示相关产品信息,public void,setProductname(String,prodname,),this.productname,=,prodname,;,public String,getProductname,(),return,productname,;,public void,setProducttype(String,prodtype,),this.producttype,=,prodtype,;,public String,getProducttype,(),return,producttype,;,这是一个,JavaBean,,它为产品名称和类型定义了各种方法,6,Model I,体系结构,6-4,public class ColProduct,.,private ConnBean cBean=ConnBean.newInstance();,public Collection getProduct(String sql),Collection col=new ArrayList();,try,con=cBean.getConnDB();,stmt=con.createStatement();,rs=stmt.executeQuery(sql);,while(rs.next(),ProductBean product=new ProductBean();,product.setProductname(rs.getString(2);,product.setProducttype(rs.getString(3);,product.setProductprice(rs.getInt(4);,product.setBrand(rs.getString(5);,product.setDescription(rs.getString(6);,col.add(product);,.,这个,J,avaBean,将数据通过,ProductBean,放入集合,ArrayList,7,Model I,体系结构,6-5,public class,ConnBean,Connection con=null;,private static,ConnBean,me=new,ConnBean,();,.,public static,ConnBean,newInstance,(),return me;,public Connection,getConnDB,(),try,Class.forName(sun.jdbc.odbc.JdbcOdbcDriver).newInstance,();,con=,DriverManager.getConnection(jdbc:odbc:accp,);,.,return,con;,这个,JavaBean,实现数据库连接,8,ModelI,体系结构,6-6,这个,JSP,页面包含各,JSP,操作,可以用来访问,JavaBean,组件对象,9,Model,II,体系结构,5,-1,Model I,体系结构结合使用,JSP,页面和,JavaBean,来开发,W,eb,应用程序,请求,应用服务器,响应,JSP,页面,JavaBean,Servlet,数据库,服务器,10,Model II,体系结构,5-2,设计模式为软件设计问题提供标准的解决方案,Model II,是一种设计模式,MVC,将交互式应用程序组织成三个独立的模块:,应用程序模块,用于表示数据和业务逻辑,数据表示,控制器,用于发送请求和控制应用程序的流程,11,Model II,体系结构,5-,3,Model II,体系结构的优点:,可以很灵活地设计,和实现模型对象,使用同一模型处理多个请求,增加新客户端更容易,MVC,的优点,12,Model II,体系结构,5-4,MVC,体系结构的各种对象包括:,MVC,对象,控制器,模型,视图,13,Model II,体系结构,5-5,模型,对象 表示,Web,应用程序的数据元素,用户可与这些数据元素进行交互,控制器,对象 充当应用程序视图对象和模型对象之间的中间对象,视图,对象 提供模型组件以开发用户界面,Model II,体系结构的各种对象包括:,14,基于,MVC,体系结构的应用程序,6-1,MVC,体系结构遵循分层方式,用户使用该方式可将代码分别写入不同的类和方法中。以一个,简单论坛系统的部分功能,为例,加以理解,.,标题,.,.,这个,JSP,提供图形界面用于客户发新贴,15,演示:,示例,2,基于,MVC,体系结构的应用程序,6-,2,.,public class,newtopicservlet,extends,HttpServlet,.,public void,doGet(HttpServletRequest,request,HttpServletResponse,response)throws,ServletException,IOException,.,request.setCharacterEncoding(GBK,);,String title=,request.getParameter(title,);,.,DataBaseConn,dbBean,=,DataBaseConn.newInstance,();,Connection con=,dbBean.getConnDB,();,Statement stmt=,con.createStatement,();,.,/*,*,把视图派发到,viewForum.jsp,*/,javax.servlet.RequestDispatcher,dis,=,request.getRequestDispatcher,(,viewforum.jsp,);,dis.forward(request,response);,.,这个,Servlet,转发视图,16,基于,MVC,体系结构的应用程序,6-3,.,.,.,首页,上一页,.,示例,3,查看论坛的内容,并且进行分页显示,视图对象,17,基于,MVC,体系结构的应用程序,6-4,public class,ForumServlet,extends,HttpServlet,.,PageBean,page1=new,PageBean,();,PageBean,page2=page1.getResult(String)request.getParameter(jumpPage);,/,把,PageBean,保存到,request,对象中。,request.setAttribute(page2,page2);,.,/*,*,把视图派发到,view.jsp,*/,javax.servlet.RequestDispatcher,dis,=,request.getRequestDispatcher(view.jsp,);,dis.forward(request,response,);,.,控制器对象,18,基于,MVC,体系结构的应用程序,6-5,.,public,int,getMaxPage,(),return,this.maxPage,;,public void,setCurPage(int,curPage,),this.curPage,=,curPage,;,.,while(,rset.next,(),if(i (,pageNum,-1)*,pageBean.rowsPerPage,-1),Object,obj,=new Object3;,obj0=rset.getString(2);,.,public void,setPageBean,()throws Exception,/,得到总行数,this.setMaxRowCount(this.getAvailableCount,();,if(,this.maxRowCount,%,this.rowsPerPage,=0),/,根据总行数计算总页数,this.maxPage,=,this.maxRowCount,/,this.rowsPerPage,;,else,this.maxPage,=,this.maxRowCount,/,this.rowsPerPage,+1;,.,模型对象,19,基于,MVC,体系结构的应用程序,6-6,.,public class,DataBaseConn,Connection con=null;,private static,DataBaseConn,me=new,DataBaseConn,();,public static,DataBaseConn,newInstance,(),return me;,public Connection,getConnDB,(),try,Class.forName(sun.jdbc.odbc.JdbcOdbcDriver).newInstance,();,con=,DriverManager.getConnection(jdbc:odbc:accp,);,.,public,DataBaseConn,(),演示:,示例,3,数据库连接,20,总结,2-1,Model I,和,Model II,体系结构用于开发,Web,应用程序,在,Model I,体系结构中,,JSP,页面单独负责开发,Web,应用程序,Model I Web,应用程序由复杂的,Web,逻辑和指向,Web,应用程序中其他页面的链接组成,Model I,体系结构是一个很费时费力的过程,Model I,体系结构提供的安全功能也很有限,为了克服,Model I,体系结构的缺陷,引入了,Model II,体系结构,21,总结,2-2,Model II,体系结构也称为模型,视图,控制器组件体系结构,(MVC),模型、视图和控制器是,MVC,体系结构的组件,模型对象引用应用程序中所使用的数据元素,视图对象是应用程序的图形化表示,控制器对象截取视图的请求,并将它传递给模型以执行相应的动作,22,
展开阅读全文