打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
MVC模式(一)

MVC:模型-视图-控制器(Model-View-Controller)
MVC是一种通过3个不同的部分构造一个软件或组件的的理想方法:
①模型(Model)---用于存储数据的对象
②视图(View)---为模型提供数据显示的对象
③控制器(Controller)---负责具体的业务逻辑操作,即控制器根据视图提出的要求对数

据作出处理,并将有关结果存储到模型中,同时负责让模型和视图进行必要的交互,当模

型中的数据变化时,让视图更新显示。

从面向对象的角度看,MVC接口可以使得程序更具有对象化特性,也更容易维护。在设计程

序时候,可以将摸个对象看做“模型”,然后为“模型”提供欠当的显示组件,即“视图

”。在MVC模式中,“视图”、“模型”和“控制器”之间是松耦合结构,便于显示系统的

维护和扩展。

在JSP技术中,“视图”、“模型”、“控制器”的具体实现如下:
*模型(Model):一个或多个JavaBean对象,用于存储数据,JavaBean主要提供简单的

setXXX()方法和getXXX()方法,在这些方法中不涉及对数据的具体处理细节。
*视图(View):一个或多个JSP页面,为模型提供数据显示,JSP页面主要使用HTML标记和

JavaBean标记来显示数据。
*控制器(Controller):一个或多个Servlet对象,根据视图提交的要求进行数据处理操

作,并将有关的结果存储到JavaBean中,然后servlet使用重定向方式请求视图中的摸个

JSP页面更新显示,即让JSP页面通过使用JavaBean标记显示控制器存储在J avaBean中的数

据。


在MVC模式中,servlet创建的javabean也涉及到生命周期,生命周期分为request、session、application。

 

下面的是一个计算三角形面积的例子

现在设计一个web应用,该web应用提供了2个JSP页面,一个页面使得用户可以输入三角形三条边的长度;另一个页面可以显示三角形的三条边的长度和面积。web应用提供了一个servlet,负责处理三角形三条边数据,并根据三条边计算三角形的面积,然后将有关数据保存到javabean中;web应用提供的javabean负责刻画三角形模型,提供简单的获取数据和修改数据的方法。

另外,需要改写web.xml文件,

web.xml

Xml代码
 
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app version="2.5"    
  3.     xmlns="http://java.sun.com/xml/ns/javaee"    
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    
  5.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee    
  6.     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
  7.   <welcome-file-list>  
  8.     <welcome-file>index.jsp</welcome-file>  
  9.   </welcome-file-list>  
  10.   <servlet>  
  11.     <servlet-name>handle</servlet-name>  
  12.     <servlet-class>rain.snow.HandleData</servlet-class>  
  13.   </servlet>  
  14.   <servlet-mapping>  
  15.     <servlet-name>handle</servlet-name>  
  16.     <url-pattern>/handleData</url-pattern>  
  17.   </servlet-mapping>  
  18. </web-app>  

 

模型JavaBean

由于servlet类中要使用javabean,所以为了能顺利编译servlet类和javabean类,可以将Trangle.java存放在一个包中,方便识别

Trangle.java---在flower.grass包中

Java代码
 
  1. package flower.grass;   
  2.   
  3. public class Triangle {   
  4.     double sideA,sideB,sideC;   
  5.     double area;   
  6.     boolean isTriangle;   
  7.        
  8.     public double getSideA() {   
  9.         return sideA;   
  10.     }   
  11.     public void setSideA(double sideA) {   
  12.         this.sideA = sideA;   
  13.     }   
  14.     public double getSideB() {   
  15.         return sideB;   
  16.     }   
  17.     public void setSideB(double sideB) {   
  18.         this.sideB = sideB;   
  19.     }   
  20.     public double getSideC() {   
  21.         return sideC;   
  22.     }   
  23.     public void setSideC(double sideC) {   
  24.         this.sideC = sideC;   
  25.     }   
  26.     public double getArea() {   
  27.         return area;   
  28.     }   
  29.     public void setArea(double area) {   
  30.         this.area = area;   
  31.     }   
  32.     public void SetIsTriangle(boolean boo) {   
  33.         isTriangle = boo;   
  34.     }   
  35.     public boolean getIsTriangle() {   
  36.         return isTriangle;   
  37.     }   
  38.   
  39. }  

 注意:在这个javabean中getArea()方法并没有参与面积的计算,只是简单的返回存储的数据area

 

视图(JSP)

input.jsp

Java代码
 
  1. <%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>   
  2. <html>   
  3.   <body>   
  4.     <form action="handleData" method="post">   
  5.         <p>输入三角形的三条边(提交给servlet去处理):</p>   
  6.         <br/>边A:<input type=text name="sideA" value=0 size=4>   
  7.             边B:<input type=text name="sideB" value=0 size=4>   
  8.             边C:<input type=text name="sideC" value=0 size=4>   
  9.             <input type=submit value="提交">   
  10.     </form>   
  11.   </body>   
  12. </html>  

 show.jsp

Java代码
 
  1. <%@ page language="java" import="flower.grass.Triangle" pageEncoding="GB18030"%>   
  2. <jsp:useBean id="triangle" type="flower.grass.Triangle" scope="request"></jsp:useBean>   
  3.   
  4. <html>   
  5.   <body>   
  6.     <font size=2>   
  7.         <p>三角形的三条边是:   
  8.         <br>边A:<jsp:getProperty property="sideA" name="triangle"/>   
  9.             边B:<jsp:getProperty property="sideB" name="triangle"/>   
  10.             边C:<jsp:getProperty property="sideC" name="triangle"/>   
  11.             <br/>这三条边能构成一个三角形吗?   
  12.             <jsp:getProperty name="triangle" property="isTriangle"/>   
  13.             面积是:   
  14.             <jsp:getProperty property="area" name="triangle"/>   
  15.     </font>   
  16.   </body>   
  17. </html>  

 

 

控制器(Servlet)

HandleData.java---在rain.snow包中

Java代码
 
  1. package rain.snow;   
  2.   
  3. import java.io.IOException;   
  4.   
  5. import javax.servlet.RequestDispatcher;   
  6. import javax.servlet.ServletConfig;   
  7. import javax.servlet.ServletException;   
  8. import javax.servlet.http.HttpServlet;   
  9. import javax.servlet.http.HttpServletRequest;   
  10. import javax.servlet.http.HttpServletResponse;   
  11.   
  12. import flower.grass.Triangle;   
  13.   
  14. public class HandleData extends HttpServlet {   
  15.     public void init(ServletConfig config)throws ServletException   
  16.     {   
  17.         super.init(config);   
  18.     }   
  19.     public void doPost(HttpServletRequest request,HttpServletResponse response)   
  20.     throws ServletException,IOException   
  21.     {   
  22.         Triangle tri = new Triangle();//创建JavaBean对象   
  23.         request.setAttribute("triangle", tri);//将tri存储到HttpServletRequest对象中   
  24.         double a = Double.parseDouble(request.getParameter("sideA"));   
  25.         double b = Double.parseDouble(request.getParameter("sideB"));   
  26.         double c = Double.parseDouble(request.getParameter("sideC"));   
  27.         double p = (a   b   c)/2.0;   
  28.         double area = Math.sqrt(p*(p-a)*(p-b)*(p-c));   
  29.         //将数据存储到tri中   
  30.         tri.setSideA(a);   
  31.         tri.setSideB(b);   
  32.         tri.setSideC(c);   
  33.         tri.setArea(area);   
  34.            
  35.         if (a b>c&a c>b&b c>a)   
  36.             tri.SetIsTriangle(true);   
  37.         else  
  38.             tri.SetIsTriangle(false);   
  39.         RequestDispatcher  dispatcher = request.getRequestDispatcher("/show.jsp");   
  40.         dispatcher.forward(request, response);//清酒show.jsp显示tri中的数据   
  41.            
  42.     }   
  43.     public void doGet(HttpServletRequest request, HttpServletResponse response)   
  44.     throws ServletException,IOException   
  45.     {   
  46.         doPost(request,response);   
  47.     }   
  48.   
  49. }  

 

运行结果如下:



 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
3实验1 三角形、梯形和圆形的类封装
Java Servlet
基于mvc模式的struts框架概述
用struts framework开发应用程序
几种常用的Web框架简介 - AJava
Spring 2 和 JPA 简介
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服