自定义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效果展示

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

 


目录
相关文章
|
4月前
|
XML 开发框架 前端开发
J2EE之自定义MVC框架知识(中篇)
J2EE之自定义MVC框架知识(中篇)
54 0
|
4月前
|
存储 前端开发 数据可视化
自定义MVC(上)
自定义MVC(上)
40 1
|
3月前
|
前端开发 Java
自定义mvc的增删改查
自定义mvc的增删改查
34 0
|
3月前
|
XML 前端开发 数据格式
自定义MVC引用XML配置文件实现
自定义MVC引用XML配置文件实现
36 0
|
3月前
|
设计模式 前端开发 搜索推荐
自定义mvc框架
自定义mvc框架
30 0
|
3月前
|
设计模式 前端开发
自定义mvc
自定义mvc
25 0
|
3月前
|
XML 前端开发 数据格式
自定义MVC超详细易懂----增删改查
自定义MVC超详细易懂----增删改查
|
3月前
|
存储 前端开发 架构师
自定义MVC实现 很详细(下)---优化版
自定义MVC实现 很详细(下)---优化版
|
3月前
|
存储 设计模式 前端开发
自定义MVC实现
自定义MVC实现
|
3月前
|
安全 Java
自定义mvc----增删改查终极篇
自定义mvc----增删改查终极篇
20 0

相关产品

  • 云迁移中心