内蒙古科技大学 教 案 第七章基于Servlet的MWC模式 MVC模式介绍 )C架构是Wode1-Vie Control的缩写,中文译为模型-视图-控制 器”。MWC应用程症总是由这三个部分组成。 1.模型(model)用于存储数据的对象。 2.视图(viW)向控制器提交所需数据、显示模型中的数据。 3.控制器(controller)负贵业务的具体逻辑,即控制器根据视图提出的要求 对数据作出处理,将有关结果存储到模型中 并负责让模型和视图进行进行必 要的交互,当模型中的数据变化时,让视图更新显示。 (二)Trygve Reenskaug教授于1978年最早开发的一种设计模板或基本结构 WC结构可以使程序更具有对象化特征,也更容易维护。 一、TSp中的VC式 JSP技术中,“视图”、“模型”和控制器”的具体实现如下 )模型: 一个或多个Javabean对象,用于存储数据,Javabean主要提供简单 的setXXX方法和getXXX方法,在这些方法中不涉及对数据的具体处理细节,以便增强 模型的通用性。 (一)视图:一个或多个SP页面,其作用主要是向控制器提交必要的数据和为横 型提供数据显示,JSP页面主要使用mL标记和Jav n标来示勒捉 三)控制器 个或多个servlet对象,根据视图提交的要求进行数据处理操作 并将有关的结果存储到Javabean中,然后servlet使用重定向方式请求视图中的某个 JSP页面更新显示,即让该JSP页面通过使用Javabean标记显示控制器存储在Javabean 中的数据。 ·MWC模式的结构如下图所示: 视图:由一个或请求处理数据控制器:由一个或读取数据:数据库 多个SP页面构成 多个servlet构成 或文件 存储数据 个到 请求]SP显示数据 三、棋型的生命周期与视图更新 一)JSP+Javab an模式:由JSP页面通过使用Javabean标记创建Javabea <jsp:us anidbean的名字”class=-“创建bean的类”scope an有效范围 (二)MWC模式:由控制器servlet负责创建Javabean,并将有关数据存储到所包创 建的Javabean中,然后servlet请求某个JSP页面使用Javabean的getProperty 动作标记显示这个javabean中的数据 jsp:getProperty name=bean的名字”p tv=hean的性 C模式中,servlet创建Javabea也涉及生命周期,生命周期分为:request ssion、application 第1页
内 蒙 古 科 技 大 学 教 案 第 1 页 第七章 基于 Servlet 的 MVC 模式 一、MVC 模式介绍 (一)MVC 架构是“Model-View-Controller”的缩写,中文翻译为“模型-视图-控制 器”。MVC 应用程序总是由这三个部分组成。 1.模型(model)用于存储数据的对象。 2.视图(view)向控制器提交所需数据、显示模型中的数据。 3.控制器(controller)负责业务的具体逻辑,即控制器根据视图提出的要求 对数据作出处理,将有关结果存储到模型中,并负责让模型和视图进行进行必 要的交互,当模型中的数据变化时,让视图更新显示。 (二)Trygve Reenskaug 教授于 1978 年最早开发的一种设计模板或基本结构 MVC 结构可以使程序更具有对象化特征,也更容易维护。 二、JSP 中的 MVC 模式 JSP 技术中,“视图”、“模型”和“控制器”的具体实现如下: (一)模型:一个或多个 Javabean 对象,用于存储数据,Javabean 主要提供简单 的 setXXX 方法和 getXXX 方法,在这些方法中不涉及对数据的具体处理细节,以便增强 模型的通用性。 (二)视图:一个或多个 JSP 页面,其作用主要是向控制器提交必要的数据和为模 型提供数据显示,JSP 页面主要使用 HTML 标记和 Javabean 标记来显示数据。 (三)控制器:一个或多个 servlet 对象,根据视图提交的要求进行数据处理操作, 并将有关的结果存储到 Javabean 中,然后 servlet 使用重定向方式请求视图中的某个 JSP页面更新显示,即让该JSP页面通过使用Javabean标记显示控制器存储在Javabean 中的数据。 ·MVC 模式的结构如下图所示: 三、模型的生命周期与视图更新 (一)JSP+Javabean 模式:由 JSP 页面通过使用 Javabean 标记创建 Javabean。 <jsp:useBean id=“bean 的名字” class=“创建 bean 的类” scope=“bean 有效范围” > (二)MVC 模式:由控制器 servlet 负责创建 Javabean,并将有关数据存储到所创 建的 Javabean 中,然后 servlet 请求某个 JSP 页面使用 Javabean 的 getProperty 动作标记显示这个 javabean 中的数据 <jsp: getProperty name=“bean 的名字” property=“bean 的属性”> MVC 模式中,servlet 创建 Javabean 也涉及生命周期,生命周期分为:request、 session、application
内蒙古科技大学 教 案 以下假设创建Javabean的类是CreatJavabeanClass,该类的包名为moon.yourbean. Servlet创建生命周期为request的Javabean步骤如下: (l)用CreatJavabeanClass类的构造方法创建Javabean对象,例如: CreatJavabeanClass bean=new CreatJavabeanClass() (2)将创建的Javabean对象存放在HttpServletRequest对象request中,并指定 查找该Javabean对象的关健字 ,该步骤决定Javabean的生命周期为request。例如: request.setAttribute ("keyWord",bean) 2.视图更新 (1)当servlet使用RequestDispatcher对象向某个JSP页面发出请求时,该 lavabean只对servlet所请求的TSP页面有效 (2)servlet所请求的JSP页面可以使用相应的标记显示Javabean中的数据,然后 该Javabean所占有的内存被释放 结束生命 Servlet请求一个JSP页面show.jsp的代码如下: RequestDispatcher dispatcher=request.getRequestDispatcher("show.jsp") dispatcher.forword(request.response): 务建加页面使用知下标记参租elet所创建的avabean的列引用(该P页面不 <jsp:useBean id="keyWord" type="moon.yourbean.Create JavabeanClass' scope=“request'”> show.jsp页面使用如下标i记显示Javabean中的数据 <jsp:getPropert =keyWord"property=-“Javabean的属性y session周期的Ja bean l.Javabean的创建 Servlet创建生命周期为session的Javabean步如下: ()用CreatJavabeanClass类的构造方法创建Javabean对象,例如: ew creat lavabeanclass( ()②将创建的Javabean对象bem存放在 tpServletSession对象session中,并 指定查找该Javabean对象的关键字,该步骤决定Javabean的生命周期为session· 例如: HttpSession session=request.getSession(true) session.setAttribute("keyWord",bean): 2.视图更新 该servlet的有效期为用户的会话期间。只要用户会话没有消失,该Javabean就 直存在 ·个用户在访问Web服务目录的各个JSP中都可以使用usebean标记获得servle 所创建的Javabean的引用,然后使用getProperty标记显示该Javabean中的数据。 <isp'useBean id="keyWord" type="moon.yourbean.CreateJavabeanClass" cope-=“session”> <jsp:getProperty name=keyWord”propertya=Javabean的属性” 如果servlet希望某个JSP显示其中的数据, 第2页
内 蒙 古 科 技 大 学 教 案 第 2 页 以下假设创建 Javabean 的类是 CreatJavabeanClass,该类的包名为 moon.yourbean. ·request 周期的 Javabean 1. Javabean 的创建 Servlet 创建生命周期为 request 的 Javabean 步骤如下: (1)用 CreatJavabeanClass 类的构造方法创建 Javabean 对象,例如: CreatJavabeanClass bean=new CreatJavabeanClass() (2)将创建的 Javabean 对象存放在 HttpServletRequest 对象 request 中,并指定 查找该 Javabean 对象的关键字,该步骤决定 Javabean 的生命周期为 request。例如: request.setAttribute(“keyWord”,bean); 2. 视图更新 (1)当 servlet 使用 RequestDispatcher 对象向某个 JSP 页面发出请求时,该 Javabean 只对 servlet 所请求的 JSP 页面有效。 (2)servlet 所请求的 JSP 页面可以使用相应的标记显示 Javabean 中的数据,然后 该 Javabean 所占有的内存被释放、结束生命。 Servlet 请求一个 JSP 页面 show.jsp 的代码如下: RequestDispatcher dispatcher=request. getRequestDispatcher(“show.jsp”) dispatcher.forword(request,response); show.jsp 页面使用如下标记获得 servlet 所创建的 Javabean 的引用(该 JSP 页面不负 责创建 bean) <jsp:useBean id=“keyWord” type=“moon.yourbean.CreateJavabeanClass” scope=“request” > show.jsp 页面使用如下标记显示 Javabean 中的数据 <jsp: getProperty name=“keyWord” property=“Javabean 的属性”> ·session 周期的 Javabean 1. Javabean 的创建 Servlet 创建生命周期为 session 的 Javabean 步骤如下: (1)用 CreatJavabeanClass 类的构造方法创建 Javabean 对象,例如: CreatJavabeanClass bean=new CreatJavabeanClass() (2)将创建的 Javabean 对象 bean 存放在 HttpServletSession 对象 session 中,并 指定查找该 Javabean 对象的关键字,该步骤决定 Javabean 的生命周期为 session 。 例如: HttpSession session=request.getSession(true) session.setAttribute(“keyWord”,bean); 2. 视图更新 该 servlet 的有效期为用户的会话期间。只要用户会话没有消失,该 Javabean 就 一直存在。 一个用户在访问 Web 服务目录的各个 JSP 中都可以使用 usebean 标记获得 servlet 所创建的 Javabean 的引用,然后使用 getProperty 标记显示该 Javabean 中的数据。 <jsp:useBean id=“keyWord” type=“moon.yourbean.CreateJavabeanClass” scope=“session” > <jsp: getProperty name=“keyWord” property=“Javabean 的属性”> 如果 servlet 希望某个 JSP 显示其中的数据
内蒙古科技大学 教案 (I)使用RequestDispatcher对象向该页面发出请求, ()②使用HttpServletResponse类的重定向方法(sendRedirect).。 plication周期的Javabean .Javabean的创建 Servlet创建生命周期为application的Javabean步骤如下: (I)用CreatJavabeanClass类的构造方法创建Javabean对象,例如: Creat lavabeanclass bean=new creat lavabeanclass o 2 Servlet可以使用getServletContext0方法返回服务器创建的ServletConte 对象的引用,将所创建的Javabean对象存放到服务器的 定查找该Javabean的关键字。例如: getServletContext().setAttribute("keyWord",bean); 2.视图更新 servlet的生命周期为application。只要Web应用程序不结束,该Javabean就 直存在。 个用户在访问eb服务目录的各个JSP中都可以使用usebean标记获得servlet 所创建的Javabean的引用,然后使用getProperty标记显示该Javabean中的数据。 <isp:useBean id="keyWord"type="moon.yourbean.CreateJavabeanClass" <jsp:getProperty name=-"keyWord”property-Javabean的属性y 如果servlet希塑某个JSP显示其中的数据, (L)使用RequestDispatcher对象向该页面发出请求, (②)使用HttpServletResponse类的重定向方法(sendRedirect)。 所有用户的application生命周期的Javabean是相同的,即占有相同的内存空间。 四、MVC模式的简单实例 Web.xml <servlet> <servlet-name>computerSum</servlet-name> <servlet-class>sun.vourservlet.HandleSum</servlet-class> </servlet> <servlet-mapping〉 <servlet-name>computerSum</servlet-name> <url-pattern>/lookSum</url-pattern> </servlet-mapping> 第3页
内 蒙 古 科 技 大 学 教 案 第 3 页 (1) 使用 RequestDispatcher 对象向该页面发出请求, (2)使用 HttpServletResponse 类的重定向方法 (sendRedirect)。 ·application 周期的 Javabean 1. Javabean 的创建 Servlet 创建生命周期为 application 的 Javabean 步骤如下: (1)用 CreatJavabeanClass 类的构造方法创建 Javabean 对象,例如: CreatJavabeanClass bean=new CreatJavabeanClass() (2)Servlet 可以使用 getServletContext()方法返回服务器创建的 ServletContext 对象的引用,将所创建的 Javabean 对象存放到服务器的 ServletContext 对象中,并指 定查找该 Javabean 的关键字。例如: getServletContext().setAttribute(“keyWord”,bean); 2. 视图更新 该 servlet 的生命周期为 application。只要 Web 应用程序不结束,该 Javabean 就 一直存在。 一个用户在访问 Web 服务目录的各个 JSP 中都可以使用 usebean 标记获得 servlet 所创建的 Javabean 的引用,然后使用 getProperty 标记显示该 Javabean 中的数据。 <jsp:useBean id=“keyWord” type=“moon.yourbean.CreateJavabeanClass” scope=“application” > <jsp: getProperty name=“keyWord” property=“Javabean 的属性”> 如果 servlet 希望某个 JSP 显示其中的数据, (1) 使用 RequestDispatcher 对象向该页面发出请求, (2)使用 HttpServletResponse 类的重定向方法(sendRedirect)。 所有用户的 application 生命周期的 Javabean 是相同的,即占有相同的内存空间。 四、MVC 模式的简单实例 Web.xml <servlet> <servlet-name>computerSum</servlet-name> <servlet-class>sun.yourservlet.HandleSum</servlet-class> </servlet> <servlet-mapping> <servlet-name>computerSum</servlet-name> <url-pattern>/lookSum</url-pattern> </servlet-mapping>
内蒙古科技大学 教案 InputMess.jsp 第-个表单以post方式调用servlet Handlesum,jaN5 第二个表单以get坊式调用 ervlet HandleSum. servlet HandleSum.java 创建Javabeany对象shuile 将数据存储在shulie中 请求showResult.jsp显示shulie中的数据 showResult.isp 显示Javabean中的数据 Series.iava Javabean 第4页
内 蒙 古 科 技 大 学 教 案 第 4 页