`
吸血鬼猎人
  • 浏览: 19156 次
  • 性别: Icon_minigender_2
  • 来自: 长沙
社区版块
存档分类
最新评论

MVC的学习

阅读更多

MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。

MVC模式的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。除此之外,此模式通过对复杂度的简化,使程序结构更加直观。软件系统通过对自身基本部份分离的同时也赋予了各个基本部分应有的功能。专业人员可以通过自身的专长分组:

  • (控制器Controller)- 负责转发请求,对请求进行处理。控制器可以是一个servlet
  • (视图View) - 界面设计人员进行图形界面设计。例如:jsp html css ajax。只是接收由session request application传来的参数。
  • (模型Model) - 程序员编写程序应有的功能(实现算法等等)、数据库专家进行数据管理和数据库设计(可以实现具体的功能)。例如:db pojo dao,都是用javabean实现的。模型主要掌管的是

 

 

(模式如图所示)

 

 

 

 

下面的是控制器(Controller)的一种实现方法:

package cn.netjava.servlet;
import java.io.IOException;
import javax.servlet.*;
import cn.netjava.action.Action;
import cn.netjava.action.ActionFactory;
/**
*@author www.NetJava.cn
*系统控制器实现
*功能:1.解析请求中的命令名
*      2.根据请求的命令名调用工厂对象创建命令处理对象
*      3.调用命令对象处理请求和应答对象,返回目标路径名
*      4.本控制器将请求和应答转发至目标路径名
*/
public class ControlServlet extends HttpServlet {
      //主控servlet分发用户请求的入口
     public void   service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
         try{  
    	 //得到请求的命令名字:解析出*.netjava请求中*所指代的字符串,即动作名字
        String actionName= getActionName(request);
        System.out.println(" request action is: "+actionName);
            //根据请求的动作名,得到控制器servlet中配置的Action实现类名字
          String actionClassName=this.getInitParameter(actionName);
          System.out.println("actionClassName is: "+actionClassName);
           //通过工厂类创建命令对象
          Action action = ActionFactory.getIns().getAction(actionClassName);
            //使用动作对像处理动作,返回结果为处理后要输出的目标页面
          String url = action.execute(request, response);
          if (url != null){
            //输出目标页面
        	  System.out.println("dest url is: "+url);
          getServletContext().getRequestDispatcher(url).forward(request, response);
           }
         }catch(Exception ef){
        	 ef.printStackTrace();
        	 //出错时,输出到错误页面
   getServletContext().getRequestDispatcher("/error.jsp").forward(request, response);
         }
}
//解析得到请求中的"命令"字 
//如请求路径为loginAction.netjava解析得到loginAction
     protected String getActionName(HttpServletRequest request) {
          String path = request.getServletPath();
          return path.substring(1, path.lastIndexOf("."));
     }
}

 

package cn.netjava.action;
/**
*命令对象工厂类实现
*根据命令名字,创建命令对象
*/
public class ActionFactory {
    //单实例访问方法
    public static ActionFactory getIns(){
    	if(null==ac){
    		ac=new ActionFactory();
    	}
    	return ac;
    }
	
    /**
     * 根据具体的Action类名字创建Action对象
     * @param actionName:具体的Action类全名
     * @return :Action类型对象
     */
     public Action getAction(String actionClass) {
          Action actionInstance = null;
          try {
        	  Class c=Class.forName(actionClass);
               actionInstance = (Action) c.newInstance();
          } catch (Exception e) {
               e.printStackTrace();
          }
          return actionInstance;
     }
     //不需要创建对象
     private ActionFactory() {    }
     private static ActionFactory ac=null;
}

 

package cn.netjava.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
*系统中的命令处理器接口定义
*/
public interface Action {
	/**
	 * 所有的具体Action实现这个接口
	 * @param request:请求对象
	 * @param response:应答对象
	 * @return :结果页面
	 */
     public String execute(HttpServletRequest request, HttpServletResponse response);
    
}

 

需要在web.xml中配置请求发送给控制器Servlet

<description>控制器servlet</description>
    <display-name>控制器servlet</display-name>
    <servlet-name>ControlActionServlet</servlet-name>
<servlet-class>cn.netjava.control.ControlActionServlet</servlet-class>
<!-- 将具体Action名字和全类名配置到Servlet参数中 -->
     <init-param>
      	<param-name>ActionName</param-name>
    	<param-value>cn.netjava.action.TheActionImpClassName</param-value>
     </init-param>
  </servlet>
<servlet-mapping>
      <servlet-name>ControlActionServlet</servlet-name>
      <url-pattern>*.netjava</url-pattern>
  </servlet-mapping>

 

然后通过接口实现具体的Action比如登录注册提交问题什么的。

View和Model那些可以按照自己的喜好所设置。一个控制界面,一个控制数据的操作等。

分享到:
评论
1 楼 贾懂凯 2011-04-16  

相关推荐

    Spring.MVC学习指南.pdf

    这份“Spring.MVC学习指南.pdf”很可能是为了帮助开发者深入理解和掌握Spring MVC的核心概念、工作原理以及实践技巧。下面将详细阐述Spring MVC的相关知识点。 1. **核心组件**: - **DispatcherServlet**:Spring...

    asp.net mvc 学习手册

    ### ASP.NET MVC 学习手册知识点详解 #### 一、ASP.NET MVC 框架简介 **ASP.NET MVC**(Model-View-Controller)是由微软官方提供的用于开发**Web应用程序**的一种框架。它基于MVC架构模式设计,适用于构建动态...

    Spring.MVC学习指南(林仪明、崔毅著,人民邮电出版社)

    《Spring MVC学习指南》是由林仪明和崔毅两位作者共同编著,由人民邮电出版社出版的一本专业书籍,主要面向希望深入理解和掌握Spring MVC框架的Java开发者。Spring MVC是Spring框架的重要组成部分,用于构建Web应用...

    微软MVC学习案例Oxite(源码)

    **微软MVC学习案例Oxite(源码)详解** 微软MVC(Model-View-Controller)框架是一种广泛应用于Web开发的设计模式,它为开发者提供了更灵活的结构和更高的代码可维护性。Oxite是微软发布的一个开源的、基于ASP.NET ...

    mvc学习实例mvc学习实例mvc学习实例

    **总结来说,"mvc学习实例"是关于使用ASP.NET MVC框架进行Web开发的学习资源,重点在于理解MVC模式的工作原理和实际应用,特别是如何利用MvcPager控件实现高效且用户友好的分页功能。通过这个实例,开发者可以深入...

    [转] 老板让俺总结的puremvc学习笔记

    在阅读《PureMVC学习笔记.docx》时,你可能会深入了解每个组件的工作原理,以及如何在实践中应用它们。这份文档可能包含了示例代码、最佳实践和常见问题解答,帮助你更好地理解和掌握PureMVC框架。通过学习和实践,...

    Spring MVC学习指南 高清完整.pdf版下载

    通俗移动的Spring MVC入门书籍。请尊重版权,禁止用于商业目的。

    Spring.MVC-A.Tutorial-Spring.MVC学习指南 高清可复制版PDF

    Spring MVC 是一个基于Java的轻量级Web应用框架,它是Spring框架的重要组成部分,主要用于构建Web应用程序的后端控制器。...通过学习,开发者可以熟练地运用Spring MVC来构建高效、可维护的Web应用。

    EFMVC学习项目

    **EFMVC学习项目概述** EFMVC,全称Entity Framework MVC,是基于.NET框架的Web应用程序开发模型,结合了Entity Framework(EF)和ASP.NET MVC(Model-View-Controller)的优势,为开发者提供了一个高效、灵活的...

    大优惠 Spring MVC学习指南(第2版)2017.pdf

    Spring MVC是Spring框架中用于Web应用快速开发的一个模块,其中的MVC是Model-View-Controller的缩写。作为当今业界最主流的Web开发框架,Spring MVC已经成为当前最热门的开发技能,同时也广泛用于桌面开发领域。 ...

    spring mvc 学习指南

    这个“spring mvc 学习指南”涵盖了从基础到高级的Spring MVC开发技术,旨在帮助开发者深入理解并熟练掌握这一强大的框架。 首先,Spring MVC的核心概念包括DispatcherServlet、Controller、Model、View和ViewModel...

    C# MVC 学习资料

    以下内容将详细介绍C# MVC学习资料中涉及的知识点: 1. **MVC Web应用程序的创建**: 通过文档,我们可以了解到创建*** MVC Web应用程序的基本步骤。MVC模式将应用分为三个主要组件:模型(Model)、视图(View)和控制...

    Spring.MVC-A.Tutorial-Spring.MVC学习指南

     《Spring MVC学习指南》重在讲述如何通过Spring MVC来开发基于Java的Web应用。全书共计12章,分别从Spring框架、模型2和MVC模式、Spring MVC介绍、控制器、数据绑定和表单标签库、传唤器和格式化、验证器、表达式...

    ExtJS4.0 MVC 学习资料集合

    总的来说,这些资料集合为初学者提供了一个完整的ExtJS4.0 MVC学习路径,从理论到实践,从基础到高级,逐步深入,帮助你掌握这个强大的前端框架,构建出高效、美观的Web应用程序。在学习过程中,不仅要理解每个组件...

    spring-mvc学习文档资料

    Spring MVC 学习文档资料 Spring MVC 是一个基于 Java 的 Web 框架,提供了一个灵活、可扩展的方式来构建 Web 应用程序。本文档提供了 Spring MVC 的学习资料,涵盖了 Spring MVC 框架的基本概念、架构、组件、配置...

    spring mvc学习视频相关资料

    在本“Spring MVC学习视频相关资料”中,我们可以通过提供的资源来深入理解并掌握这一强大的MVC(Model-View-Controller)架构模式。 首先,源码在学习Spring MVC时起着至关重要的作用。通过阅读和分析Spring MVC的...

Global site tag (gtag.js) - Google Analytics