`
lindingyu
  • 浏览: 29062 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
文章分类
社区版块
存档分类
最新评论

MVC设计模式

阅读更多

      MVC是一种目前广为流传的经典设计模式,具体是模型(Model)—视图(View)—控制(Control)三方面结合起来的设计模式。这样设计的目的是:实现Web系统的职能分工。在实际的开发过程中,一个团队可以进行模块分工,分工开发完毕之后,再将模块组合起来合成一个项目。

 


      这里先介绍介绍下每个模块:
        1.View模块,就是用户可以看到的界面,如网页。用jsp,html编写,可以向控制(Control)模块发送请求。
        2.Control模块,是一个ControlServlet类,作为服务器处理请求,每个请求都要经过该模块。是连接View模块和Model模块之间沟通的桥梁。
        3.Model模块,实现服务器中的业务逻辑,通常可以用JavaBean(dao,pojo等)实现。如 LoginAction中验证用户名密码是否正确 之类。并将处理后的结果(url)返回给Control模块。

 

 

 

     下面再从代码实现方面介绍MVC设计模式:
        1.用jsp,html代码实现视图功能。
      代码示例:
          

<html>
          <head>
          <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
          <title>Login</title>
          </head>
          <body>

          <form action="LoginAction.ldy" method="post">
          用户名:<input type="text" name="userName"><br>
          密&nbsp;&nbsp;&nbsp;&nbsp;码:<input type="text" name="pwd"><br>
          <input type="submit"  name="login" value="登陆" >
          </form>

          </body>
          </html>

             
            
    
        这里必须先说明web.xml中的配置:

         代码示例如下:
      

  <servlet>
           <servlet-name>ControlServlet</servlet-name>
           <servlet-class>cn.java.controlservlet.ControlServlet</servlet-class>
             <!-- 处理登陆请求的Action实现 -->
             <init-param>
               <param-name>LoginAction</param-name>
               <param-value>cn.java.action.ActionLogin</param-value>
             </init-param>
             <!-- 处理注册请求的Action实现 -->
             <init-param>
               <param-name>RegUserAction</param-name>
            <param-value>cn.netjava.action.RegUserAction</param-value>
             </init-param>
          </servlet>

          <servlet-mapping>
          <servlet-name>ControlServlet</servlet-name>
          <url-pattern>*.ldy</url-pattern>
          </servlet-mapping>

       
                 在 <init-param>标签中用模糊匹配 * 来配置请求路径。这样的结果是,所有以.ldy结尾的请求路径都经过控制模块,即cn.java.controlservlet.ControlServlet类。然后是&lt;init-param&gt;标签,对应的是Action的实现类,如cn.java.action.ActionLogin类。

 

 

 

        2.ControlServlet类,即接受所有请求的控制模块,就是配置文件web.xml中的  cn.java.controlservlet.ControlServlet类。
          实现的功能:
            首先取得请求的路径(*.ldy),再解析出请求路径中*指代的字符串(如LoginAction),      然后取得web.xml中配置的Action实现类名字(cn.java.action.ActionLogin),之后通过Factory类(随后介绍)创建取得Action实现类的对象,经过Action实现类处后,最后取得响应的url.

             代码示例:

 

  public class ControlServlet extends HttpServlet{

    public void service(HttpServletRequest request,HttpServletResponse response){
              try {
               //取得请求路径LoginAction.ldy  
               String reqPath = request.getServletPath();
  
               //取得*指代的字符串LoginAction
               String actionName = reqPath.substring(1, reqPath.lastIndexOf(".ldy"));
  
                /**根据请求ActionName取得servlet中配置的Action实现类的名字
                *     cn.java.action.ActionLogin
                 */           
               String acionClassName = this.getInitParameter(actionName);
 
  
               //在Factory类中创建Action对象(Factory类在下面介绍)
               Action action = ActionFactory.getIns().getAction(acionClassName);
  
               //从实现Action类中取得响应发送的url
               String url = action.execute(request, response);
  
               if(null!=url){   
                    this.getServletContext().getRequestDispatcher(url).forward(request, response);  
  
               }else{
                    this.getServletContext().getRequestDispatcher("/error.jsp").forward(request, response);  
  
  }
  
                 } catch (Exception e) {  
                 e.printStackTrace();
    } 
 }
  
}

 

 


             3.Action接口,被Action实现类实现。
       代码示例
     

  public interface Action {
   public String execute(HttpServletRequest request,
                              HttpServletResponse response); 
}

   

 


         4.ActionFactory类,批量生产Action实现类对象。
      代码示例:
      

  public class ActionFactory extends HttpServlet{
 
      private static ActionFactory ac=null;
      private ActionFactory(){};//构造器私有化
 
    public static ActionFactory getIns(){
                if(null==ac){
                   ac = new ActionFactory();
                  }  
                   return ac;
                   }
 
 //在工程中批量生产Action类型的对象
    public Action getAction(String actionClass){
               Action actionInstance = null;
            try{
            actionInstance = (Action)Class.forName(actionClass).newInstance(); 
         
                }catch(Exception ef){
            ef.printStackTrace();  
                  }    
              return actionInstance;  
    }

}

 

        

 

 

 

         5.Action实现类,继承Action接口。处理各种业务逻辑,包过调用数据库。处理信息等等。
          代码示例:    

 

 public String execute(HttpServletRequest request,
         HttpServletResponse response) {
                 String name = request.getParameter("userName");
                 String pwd = request.getParameter("pwd");
     
     UserInfo user=MemoDBAccess.hasUser(userName, pwd);
                if(null!= user){
                  request.getSession().setAttribute("user", user);
                  return "/mainPage.jsp";
              }else{
                  request.setAttribute("error_msg", "您输入的账号或密码有误");
                  return "/login.jsp";
              }
     
 }
       }

 
        
        

 


             MVC的这5步实现中没有涉及pojo和dao类,但是Model模块是必须包过pojo和dao类的。有兴趣的可以自己编写。


      最后再介绍点MVC典型的优点吧,当然缺点也还是有的。低耦合性,视图层和业务层分离,样就允许更改视图层代码而不用重新编译模型和控制器代码。同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可,因为模型层与控制器和视图层向分离,这是可以实现的。分离视图层和业务逻辑层也使得WEB应用更易于维护和修改。使用MVC模式使开发时间得到相当大的缩减,它使程序员(Java开发人员)集中精力于业务逻辑,界面程序员(HTML和JSP开发人员)集中精力于表现形式上。

 

  


    


      

 

 

 

 

 

 


 

分享到:
评论

相关推荐

    MVC设计模式例子程序

    **MVC设计模式详解** MVC(Model-View-Controller)设计模式是一种广泛应用于软件开发,尤其是Web应用程序中的架构模式。它将应用程序分为三个主要组件:模型(Model)、视图(View)和控制器(Controller),以此...

    java中MVC设计模式

    Java 中 MVC 设计模式 MVC 设计模式是软件架构中的一种经典设计模式,广泛应用于 Java Web 开发中。MVC 模式将应用程序分为三个主要部分:Model(模型)、View(视图)和 Controller(控制器),每个部分都有其特定...

    mvc设计模式 详解

    mvc设计模式详解 mvc设计模式是一种广泛流行的软件设计模式,早在70年代,IBM就推出了Sanfronscisico项目计划,其实就是mvc设计模式的研究。mvc模式在j2ee平台上非常流行,也是广大java开发者非常感兴趣的设计模型...

    MVC设计模式范例

    **MVC设计模式详解** **一、MVC模式概述** MVC(Model-View-Controller)设计模式是一种软件设计架构模式,广泛应用于Web应用开发,主要用于分离应用程序的业务逻辑、用户界面和数据处理。该模式将应用程序分为三...

    mvc设计模式介绍与详细讲解

    ### MVC设计模式介绍与详细讲解 #### 一、MVC设计模式概述 MVC(Model-View-Controller)设计模式是一种广泛应用于软件工程中的架构模式,尤其在Web应用开发领域非常常见。它将应用程序分为三个核心组件:模型...

    JAVA WEB中MVC设计模式

    **Java Web中的MVC设计模式** MVC(Model-View-Controller)设计模式是一种广泛应用于Web应用程序开发的架构模式,它的主要目标是将业务逻辑、数据处理和用户界面分离,从而提高代码的可维护性和可扩展性。在Java ...

    MVC设计模式详解

    **MVC设计模式详解** **一、什么是MVC设计模式** MVC,即Model-View-Controller(模型-视图-控制器)设计模式,是一种在软件工程中广泛应用于构建用户界面的架构模式。它将应用程序的数据处理、业务逻辑与用户界面...

    jsp的MVC设计模式

    总的来说,理解和掌握MVC设计模式对于任何Java Web开发者来说都是至关重要的,它能够帮助我们构建更加健壮、可维护的Web应用程序。通过学习“jsp的MVC设计模式”教程源码,你可以更深入地了解这一模式,并将其应用到...

    MVC设计模式概念及优缺点

    ### MVC设计模式概念及优缺点 #### 一、MVC设计模式的概念 MVC(Model-View-Controller)设计模式是一种广泛应用于软件工程中的架构模式,尤其在Web开发领域非常流行。该模式的核心理念在于将应用程序划分为三个...

    mvc设计模式和模板模式ppt

    ### MVC设计模式详解 #### 一、MVC模式的起源 MVC模式即“模型-视图-控制器”模式(Model-View-Controller),这一概念最早由Trygve Reenskaug于1978年提出[1]。该模式最初是在施乐帕罗奥多研究中心(Xerox PARC)为...

    mvc设计模式demo1

    **MVC设计模式详解及其在Android中的应用** MVC(Model-View-Controller)设计模式是一种广泛用于软件工程,特别是Web应用程序开发的经典架构模式。它将应用程序的不同组件划分为三个主要部分,以实现职责分离,...

    MVC设计模式框图解

    让你对MVC设计模式有一个更加深刻的认识,深入浅出的搞明白MVC

    J2EE平台上MVC设计模式的研究与实现.pdf

    ### J2EE平台上MVC设计模式的研究与实现 #### 概述 在现代软件开发,尤其是在Web应用领域,设计模式的运用已经成为提升软件质量和开发效率的关键。其中,MVC(Model-View-Controller)设计模式因其强大的组织能力...

    mvc设计模式demo

    **MVC设计模式详解及其在Android应用中的实践** **一、MVC设计模式介绍** MVC(Model-View-Controller)是一种广泛应用于软件工程,尤其是Web应用开发中的设计模式。它将应用程序分为三个核心组件:模型(Model)...

    MVC设计模式云盘分享

    MVC设计模式云盘分享JAVA课程资源。MVC设计模式云盘分享

    MVC设计模式.doc

    【MVC设计模式详解】 MVC(Model-View-Controller)设计模式是由Trygve Reenskaug在SmallTalk-80环境中首次提出的,后来成为众多交互和界面系统设计的基础,包括Microsoft的MFC(Microsoft Foundation Classes)...

    MVC设计模式了解什么是mvc

    在实际应用中,许多Web框架如ASP.NET MVC、Ruby on Rails、Spring MVC等都采用了MVC设计模式。例如,书shop应用可能使用MVC来实现用户浏览书籍、添加到购物车、结算等功能: - **模型**:包含书籍的信息(ID、标题...

Global site tag (gtag.js) - Google Analytics