自定义MVC

简介: 自定义MVC

1.什么是MVC

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范。用一种业务逻辑、数据、界面显示分离的方法,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。

2.MVC的结构

Model:是应用程序中用于处理应用程序数据逻辑的部分,通常模型对象负责在数据库中存取数据。

View:是应用程序中处理数据显示的部分,通常视图是依据模型数据创建的。

Controller:是应用程序中处理用户交互的部分,通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。

3.三层架构和MVC的区别

1. 三层架构是基于业务逻辑来分的,而MVC是基于页面来分的;

2. 三层是种软件架构,通过接口实现编程,MVC模式是一种复合设计模式,一种解决方案;

3. 三层架构模式是体系结构模式,MVC是设计模式;

4. 三层架构模式又可归于部署模式,MVC可归于表示模式。

4.MVC的原理

5.MVC的实现

package com.xuyahui.framework;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.xuyahui.web.BookAction;
/**
 * 对应图中的ActionServlet:中央控制器
 * 
 * @author 86155
 *
 */
@WebServlet("*.action")
public class DispathServlet extends HttpServlet{
  public Map<String, Action> actionMap = new HashMap<String, Action>();
  @Override
  public void init() throws ServletException {
    actionMap.put("/book", new BookAction());
  }
  @Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    this.doPost(req, resp);
  }
  @Override
  protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    String uri = req.getRequestURI();
    uri = uri.substring(uri.lastIndexOf("/"),
        uri.lastIndexOf("*"));
    Action action = actionMap.get(uri);
    action.execute(req, resp);
  }
}

5.1控制器

package com.xuyahui.framework;
import java.io.IOException;
import java.lang.reflect.Method;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * 子控制器
 * 
 * @author 86155
 *
 */
public class Action {
  protected void execute(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    String methodName = req.getParameter("methodName");
    try {
      Method m = this.getClass().getDeclaredMethod(methodName, HttpServletRequest.class,HttpServletResponse.class);
      m.setAccessible(true);
      m.invoke(this, req,resp);
    } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
}

5.2增删改查方法类

package com.xuyahui.web;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.xuyahui.framework.Action;
public class BookAction extends Action{
  public void add(HttpServletRequest req, HttpServletResponse resp) {
    System.out.println("BookAction.add....");
  }
  public void upd(HttpServletRequest req, HttpServletResponse resp) {
    System.out.println("BookAction.upd....");
  }
  public void del(HttpServletRequest req, HttpServletResponse resp) {
    System.out.println("BookAction.del....");
  }
  public void list(HttpServletRequest req, HttpServletResponse resp) {
    System.out.println("BookAction.list....");
  }
}

5.3效果展示

出现了增删改查方法就说明代码没有问题

 


目录
相关文章
|
2月前
|
前端开发 Java 数据库
springBoot:template engine&自定义一个mvc&后端给前端传数据&增删改查 (三)
本文介绍了如何自定义一个 MVC 框架,包括后端向前端传递数据、前后端代理配置、实现增删改查功能以及分页查询。详细展示了代码示例,从配置文件到控制器、服务层和数据访问层的实现,帮助开发者快速理解和应用。
|
7月前
|
前端开发 Java
自定义mvc的增删改查
自定义mvc的增删改查
65 0
|
7月前
|
XML 前端开发 数据格式
自定义MVC引用XML配置文件实现
自定义MVC引用XML配置文件实现
66 0
|
7月前
|
设计模式 前端开发 搜索推荐
自定义mvc框架
自定义mvc框架
70 0
|
设计模式 前端开发
自定义mvc
自定义mvc
52 0
|
XML 前端开发 数据格式
自定义MVC超详细易懂----增删改查
自定义MVC超详细易懂----增删改查
105 0
|
存储 前端开发 架构师
自定义MVC实现 很详细(下)---优化版
自定义MVC实现 很详细(下)---优化版
|
存储 设计模式 前端开发
自定义MVC实现
自定义MVC实现
|
安全 Java
自定义mvc----增删改查终极篇
自定义mvc----增删改查终极篇
44 0
|
XML 设计模式 前端开发
自定义MVC---引用XML
自定义MVC---引用XML
50 0