`
utopialxw
  • 浏览: 369135 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MVC的控制层

    博客分类:
  • MVC
阅读更多

控制层主要用来转发从视图层传来的数据和请求到相对应的模型层,因此,实现它最好的方式莫过于使用Servlet了。当从视图层获取请求后,首先通过对web.xml文件的配置,使其转入Servlet,在Servlet中完成对页面中数据的封装和对相应模型的选择,然后再到相应的模型层进行数据处理;当在模型层数据处理完毕后,通过RequestDispatcher将处理后的数据返回相应的视图页面.在Servlet中,将使用doPost()来处理相应的中转请求,如果开发人员使用get提交方式,则使用如下方式进行处理。示例代码如下:

public void doGet(HttpServletRequest req, HttpServletResponse res)

throws ServletException, IOException {

    doPost(req, res);

}

//使用post提交方式

public void doPost(HttpServletRequest req, HttpServletResponse res)

throws ServletException, IOException {

    do_Dispatcher (req, res);

}

— 不论采用get还是post提交方式,都将执行do_Dispatcher(req, res)方法。

— do_Dispatcher(req, res)是用来处理视图层发送来的请求的方法。

直接使用request方式来获取从页面提交的数据,在要获取的数据比较多的情况下,会比较烦琐,而且直接将request传递给模型层不符合Model 2规范。所以,这里将对从页面传来的值进行封装,将其放在一个Map中,然后再传递给模型层,这样在模型层就可以直接使用Map

private HashMap getRequestToMap(HttpServletRequest req) throws Exception {

    req.setCharacterEncoding("GBK");

        HashMap infoIn = new HashMap();

        for (Enumeration e = req.getParameterNames(); e.hasMoreElements ();)

                {//获取页面中所有元素名

            String strName = (String)e.nextElement();

            String[] values = (String[]) req.getParameterValues (strName);

                //根据名称获取对应的值

            if (values == null) {//假如没有值

                infoIn.put(strName, "");

            } else if (values.length == 1) {//假如只有一个值

                infoIn.put(strName, values[0]);

            } else {//假如有多个值

                infoIn.put(strName, values);

            }

        }

    return infoIn;

}

一个视图对应一个模型,也可能一个视图对应多个模型,但只有一个控制器,所以,为了实现一个控制器可以转发到多个模型中去,就需要使用接口,让所有模型都实现这个接口,然后在控制器里,仅仅是面对接口编程即可。这里定义一个接口Action.java,Action.java的示例代码如下:

package com.gd.;

import java.util.*;

public interface Action{

    public HashMap doAction(HashMap infoIn);

}

在控制器中只针对这个接口处理即可。示例代码如下:

Actionaction = (Action) Class.forName(getActionName(systemName,

logicName)).newInstance();

HashMap infoOut = action.doAction(infoIn);

—  getActionName()方法是获取实现接口Action的类的名称和所在的包。示例代码如下:

private String getActionName(String systemName ,String actionName) 

throws IOException, Exception {

return "com. " + systemName + ".action." + actionName;

}
使用RequestDispatcher返回视图层。示例代码如下:

req.setAttribute("infoOut", infoOut);

RequestDispatcher rd = req.getRequestDispatcher("/"+ systemName +

"/jsp/" + forwardJsp+ ".jsp");

rd.forward(req, res);

定义web.xml文件,是将所有以do为后缀的请求,都转入控制器进行分派。web.xml文件的示例代码如下:

<?xml version="1.0" encoding="GBK"?>

<web-app version="2.4"

 xmlns="http://java.sun.com/xml/ns/j2ee"

 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee

 http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

    <display-name>web.xml的示例</display-name>

    <description>

    控制器示例

    </description>

<!--定义控制器-->

<servlet>

        <servlet-name>gdServlet</servlet-name>

        <servlet-class>com.gd.action.GdServlet</servlet-class>

</servlet> 

<!--拦截所有以do为后缀的请求-->

    <servlet-mapping>

         <servlet-name>gdServlet</servlet-name>

         <url-pattern>*.do</url-pattern>

    </servlet-mapping>

</web-app>

—  com.gd.web.GdServlet,表示控制器为com.gd.web.GdServlet。

—  *.do,表示拦截所有以do为后缀的请求。

分享到:
评论

相关推荐

    C#MVC 三层架构 ,清晰明了 bootsrap

    - 这是用户与系统交互的接口,对应于MVC中的视图和控制器,负责接收用户输入,展示数据,并将用户操作转发到业务逻辑层。 2. 业务逻辑层: - 业务逻辑层处理应用程序的核心业务规则和流程。它调用数据访问层进行...

    asp.net MVC三层架构

    Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。 通常模型对象负责在数据库中存取数据。 View(视图)是应用程序中处理数据显示的部分。...这个适合刚接触三层架构的来学习,比较简单。

    MVC 三层架构示例

    **MVC 三层架构示例** 在软件开发中,MVC(Model-View-Controller)模式是一种广泛应用的设计模式,尤其在Web开发领域。MVC架构将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller),...

    MVC三层架构实例

    在“MVC 三层架构实例”中,可能包含了一个简单的Web应用,演示了如何将业务逻辑(模型)、用户界面(视图)和用户交互处理(控制器)进行分离。文件名"testFrame"可能是一个框架或项目的基本结构,其中包含了实现...

    MVC 三层架构应用

    ### MVC 三层架构详解 #### 一、引言 MVC三层架构是现代软件开发中常用的模式之一,尤其是在Web应用程序的开发过程中。该模式通过将应用程序分为三个主要部分——模型(Model)、视图(View)和控制器(Controller),来...

    ASP.NET MVC 三层

    ASP.NET MVC框架是表现层的核心,它提供了模型-视图-控制器(MVC)的设计模式。模型负责管理应用程序的数据和业务规则,视图负责呈现用户界面,而控制器处理用户输入并协调模型和视图的交互。通过这种方式,MVC分离...

    ASP.NET MVC 三层架构与mvc实例

    ASP.NET MVC 是微软提供的一种基于模型-视图-控制器(Model-View-Controller)的Web应用程序框架,它将业务逻辑、数据访问以及用户界面进行了分离,使得开发过程更加清晰、可维护。三层架构则是一种软件设计模式,...

    mvc三层搭建

    **MVC三层架构详解** 在软件开发领域,MVC(Model-View-Controller)模式是一种广泛应用的架构设计模式,尤其在Web应用开发中占据主导地位。MVC将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器...

    C# mvc三层结构

    在IT行业中,C# MVC(Model-View-Controller)三层结构是一种广泛应用于Web应用程序开发的设计模式,它将应用程序的不同部分分离出来,以提高代码的可维护性和可扩展性。这里我们将深入探讨C# MVC三层架构及其核心...

    MVC三层架构

    - **表示层**:由MVC中的视图和控制器组成,负责用户交互和数据呈现。 - **业务逻辑层**:独立于表示层和数据访问层,处理业务规则和流程,通常包含各种服务类。 - **数据访问层**:负责与数据库或其他持久化存储...

    MVC三层架构源代码

    **MVC三层架构源代码详解** MVC(Model-View-Controller)模式是一种常见的软件设计模式,广泛应用于Web开发中,以实现业务逻辑与用户界面的分离,提高代码的可维护性和可重用性。柳老师的这个MVC源代码提供了一个...

    MVC 三层模式 有数据库

    **MVC(Model-View-Controller)模型是一种广泛应用于Web应用程序设计的架构模式,它将应用程序分为三个主要组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于实现业务逻辑、数据处理与用户...

    MVC三层结构视频之C#_3

    **MVC三层结构详解** MVC(Model-View-Controller)是一种广泛应用于Web应用程序开发的设计模式,它将应用程序的不同部分分离,使得代码更加模块化、易于维护和扩展。在这个"MVC三层结构视频之C#_3"中,我们将会...

    J2EE中MVC三层架构的实现

    MVC模式将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller),旨在提高代码的可维护性和可扩展性。 1. **JSP+持久层结构存在的问题**: - JSP页面混合了业务逻辑和展示逻辑,导致页面...

    Mvc4.0 三层结构框架

    在Mvc4.0的三层架构中,我们添加了一个额外的业务层,这层位于模型和控制器之间。业务层包含业务实体和服务接口,处理应用程序的核心业务逻辑。它可以对模型对象进行操作,如计算、验证和业务规则检查。此层的引入...

    基于JAVA班主任管理系统的毕业设计,系统采用了MVC三层架构,分为视图层、控制层和模型层 视图层使用JSP技术实现,控制层使用

    系统采用了MVC三层架构,分为视图层、控制层和模型层。视图层使用JSP技术实现,控制层使用Servlet技术实现,模型层使用JavaBean技术实现。数据层使用MySQL数据库实现数据的存储和管理。 视图层主要实现用户界面,接收...

    MVC三层架构——超市订单管理系统

    **MVC三层架构详解** MVC(Model-View-Controller)是一种常见的软件设计模式,尤其在Web开发领域广泛应用。在超市订单管理系统中,MVC架构能够有效地分离业务逻辑、数据处理和用户界面,提高代码的可维护性和复用...

    mvc三层架构应用案例简单代码

    **MVC三层架构详解** 在软件开发中,MVC(Model-View-Controller)模式是一种广泛应用的架构设计,尤其在Web应用中。该模式将应用逻辑分为了三个主要部分,以实现良好的解耦和职责划分。这个“mvc三层架构应用案例...

    茶叶MVC 三层架构

    【茶叶MVC 三层架构】是一种在开发Web应用程序时常用的设计模式,特别是在使用Microsoft的ASP.NET MVC框架时。这个架构模式旨在将业务逻辑、数据访问和用户界面这三层分离,以便于代码的维护和扩展。在Visual Studio...

    ThinkPHP的MVC开发机制实例解析

    ThinkPHP是目前国内应用非常...C Control层 控制器:就是通过控制器来实现模版,模型之间的控制关系。 二、实例分析: 1.ACTION 控制器: 位置 D:\www\aoli\Home\Lib\Action\IndexAction.class.php 代码如下: p

Global site tag (gtag.js) - Google Analytics