自定义mvc框架

目录

1.什么是自定义mvc?

2.自定义mvc架构

2.1 为什么要学习自定义MVC框架自定义MVC框架的重要性主要体现在以下几个方面:

2.自定义MVC工作原理

3、自定义MVC实例流程

3.1自定义mvc开发流程

3.2子控制器(老板:发布任务)

3.3子控制器的子类(打工人:执行任务):

3.3主控制器(门禁)

3.4jsp界面

 4.总结:


1.什么是自定义mvc?

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计模式,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
MVC 把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。
MVC 的目标是将业务逻辑从用户界面的考虑中分离。这样,开发者就可以更容易地改变每一部分而不会影响其他。
 

2.自定义mvc架构

自定义MVC(Model-View-Controller)框架是一种能够帮助开发者构建和组织应用程序的软件框架,它基于MVC设计模式。

2.1 为什么要学习自定义MVC框架
自定义MVC框架的重要性主要体现在以下几个方面:

结构清晰:MVC框架将应用程序的不同部分进行了划分,使得代码的结构更加清晰和可读性更高。通过明确定义模型、视图和控制器的职责,可以使开发人员更容易理解和维护应用程序的代码。

可维护性:由于MVC框架使代码结构变得清晰,因此应用程序变得更容易维护。当需要进行修改或者添加新功能时,开发人员可以更加准确地找到和理解相关代码的位置,从而提高代码的可维护性。

可扩展性:MVC框架将应用程序的不同部分解耦,使得各个部分可以独立进行开发和测试。这意味着当需要添加新功能或者进行需求变更时,只需要修改相应的模型、视图或控制器,而不会对其他部分造成影响,从而提高了代码的可扩展性。

代码复用:通过合理使用MVC框架,可以将一些通用的代码逻辑封装在模型、视图或控制器中,从而实现代码的复用。例如,多个视图可以共享同一个模型来展示不同的数据,或者多个控制器可以共享同一个模型来处理相同的请求。这样可以减少冗余代码的编写,提高开发效率。

2.自定义MVC工作原理

 

开发者可以根据MVC模式自定义属于自己的MVC框架,并根据实际情况进行相应的优化和扩展。

3、自定义MVC实例流程

3.1自定义mvc开发流程

   👨‍💻 首先我给大家讲一个生活中的案例,假如我是一个施工人员,只有施工证才能进行施工。那么我要进行施工,每次都要经过施工点的门禁,门禁则根据施工证进行存档,通过了才能到达施工点,听从安排进行具体任务施工。

        那么这里的的施工人员就是一个个子控制器子类,必须要继承实现父类子控制器的执行方法,才有资格进行操作,而我们子控制器子类真正要实现功能,要每次都经过主控制器的控制过滤,才能到指定子类进行施工,分发任务的就是子控制器了。


3.2子控制器(老板:发布任务)

package com.xzs.formwork;

import java.lang.reflect.Method;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Action {
	public void execute(HttpServletRequest request, HttpServletResponse response) throws Exception {
		// 获取methodName值,这里指前端点击功能传来的方法名
		String methodName = request.getParameter("methodName");
 
		/**
		 * this--->BookAction/BlogAction/PermissionAction...可能是很多对象
		 * 所以需要通过反射找到对象带request,response参数的methidName方法
		 */
		Method m = this.getClass().getDeclaredMethod(methodName, HttpServletRequest.class, HttpServletResponse.class);
		m.setAccessible(true);
		// 动态调用其方法
		m.invoke(this, request, response);
	}
 


}

3.3子控制器的子类(打工人:执行任务):

package com.xzs.servlet;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.xzs.formwork.Action;

public class BookAction extends Action {
	public void query(HttpServletRequest req, HttpServletResponse resp) {
		System.out.println("查询的业务逻辑");
	}
 
	public void edit(HttpServletRequest req, HttpServletResponse resp) {
		System.out.println("修改的业务逻辑");
	}
 
	public void delete(HttpServletRequest req, HttpServletResponse resp) {
		System.out.println("删除的业务逻辑");
	}
 
	public void add(HttpServletRequest req, HttpServletResponse resp) {
		System.out.println("新增的业务逻辑");
	}


}

施工证就是 : public class BookAction extends Action如果我没有继承Action父类子控制器,我是没有这个方法的,那么就不能进行施工操作…

3.3主控制器(门禁)

package com.xzs.formwork;

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.xzs.servlet.BookAction;

/**
 * Servlet implementation class DisPathServlet
 */
@WebServlet("*.action")
public class DisPathServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	
	//实例化集合作为储存
	private Map<String, Action> actionMap = new HashMap<String, Action>();
 
	@Override
	public void init() throws ServletException {
		/**
		 * 初始化存值就是给每个施工员根据施工证进行存档:
		 */
		actionMap.put("book", new BookAction());
	}
 
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doPost(request, response);
	}
 
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// http://localhost:8080/MVC_project/book.action?methodName=delete...
		/**
		 * 获取请求路径
		 */
		String uri = request.getRequestURI();
		// 截取book
		uri = uri.substring(uri.lastIndexOf("/") + 1, uri.lastIndexOf("."));
		// 通过截取后的key(url)在map集合中找到指定的类进行处理
		Action action = actionMap.get(uri);
		try {
			action.execute(request, response);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

3.4jsp界面

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<a href="${pageContext.request.contextPath }/book.action?methodName=add">增加</a>
	<a href="${pageContext.request.contextPath }/book.action?methodName=delete">删除</a>
	<a href="${pageContext.request.contextPath }/book.action?methodName=edit">修改</a>
	<a href="${pageContext.request.contextPath }/book.action?methodName=query">查询</a>
	<a href="${pageContext.request.contextPath }/book.action?methodName=load">回显</a>
</body>
</html>

最后的结果:

 点击按钮:

 4.总结:

学好编程先学会编程思想,分析流程才能提高效率,本篇只是简单的介绍及流程,自定义MVC框架主要是促进了代码的重用性、可维护性和可扩展性。将代码进行分离,明确定义它们的职责。因此可以更容易地进行单元测试和集成测试。此外,当某个组件需要变更时,也只需要修改该组件而不影响其他组件。

 

现在是571
关注 关注
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
自定义MVC框架简单入门、开发
qq_44641053的博客
06-05 426
自定义MVC框架(一)自定义MVC框架MVC简介MVC结构MVC开发自定义MVC工作原理简单计算器案例 自定义MVC框架 MVC简介 什么是MVC ? MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,它是一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码. Model1 jsp+jdbc Mode...
自定义MVC框架
01-11
自己写的MVC框架源码,实现了几乎所有Struts的功能,利用此代码可以很好的了解市面上的MVC框架,包括Spring MVC和Struts。
自定义MVC 框架
qq_62898618的博客
07-17 277
中央控制器(ActionServlet)复杂接收所有的请求,并分别给控制器具体处理。自控制器(Action)负责处理中央处理器分配的请求视图(view)jsp页面,负责显示模型(Model)负责业务处理逻辑创建一个web工程,需要加入必要的依赖。所使用的所有架包与配置文件路径配置文件请看上几篇文章(2条消息)Xml的(DTD,xml解析,xml建模)_嘴强程序员的博客-CSDN博客所需的架包下载xml解析架包密码hlx8/**/***...............
自定义MVC框架框架实现)
m0_74915426的博客
07-02 227
MVC自定义框架是指基于MVC模式而构建的自定义框架,用于开发和管理特定的Web应用程序。通过自定义框架,开发者可以按照自己的需求和约定构建自己的应用程序结构,并实现对模型、视图和控制器的定制和扩展。自定义框架通常提供了一系列工具和库,用于简化开发过程、处理路由和请求、管理数据和视图的输出等。开发者可以根据自己的项目需求,选择或编写适合的模块和扩展来拓展框架的功能。这样,开发者可以更加高效和灵活地构建符合自己需求的应用程序。定义目录结构:创建一个合适的目录结构,用于组织框架的各个组件和功能模块。
PHP笔记-自定义MVC框架
IT1995的博客
01-10 1806
膜拜 膜拜下黑马大佬程序员的项目,学习到了这样的手写MVC框架的方式,受益匪浅,感觉自己在C/C++和Java方面,还有许多要学习的地方,看看能不能抄下这个php自己撸一个C/C++的MVC框架。 下面记录下PHP自定义MVC框架。 项目结构 首先是项目结构: ├─app │ ├─admin │ │ ├─controller │ │ ├─model │ │ └─view │ └─home ├─config ├─core ├─public ├─resources │ └─vi
深入解析Java自定义MVC框架的原理与实现)
m0_74018330的博客
06-29 1432
自定义MVC框架适用于需要在Java应用程序中实现清晰分离模型、视图和控制器的场景。优点模块化:自定义MVC框架可以实现模块化的开发,不同部分的修改不会对其他部分产生影响。可扩展性:通过添加新的模型、视图或控制器,可以轻松扩展应用程序的功能。可维护性:将应用程序分解为三个组件,使得代码更易于理解、维护和测试。注意事项控制器的职责:控制器的职责是协调模型和视图的交互,应尽量避免在控制器中实现过多的业务逻辑。视图的独立性:视图应尽量保持独立性,不依赖于特定的模型或控制器。
php mvc自定义框架视频教程,基于PHP面向对象的自定义MVC框架高级项目开发12天视频video...
weixin_36293680的博客
03-10 120
php教程当前位置:主页 > php教程 > 基于PHP面向对象的自定义MVC框架高级项目开发12天视频video基于PHP面向对象的自定义MVC框架高级项目开发12天视频video教程大小: 发布时间:2016-02-26   下载次数:次本套基于PHP面向对象的自定义MVC框架高级项目开发12天视频video共12天,是一套项目实战的php视频教程,希望您提供本套教程的学习,能...
自定义MVC框架一概念
csdn姚宏波
12-20 706
1. MVC思想 MVC全称 Model View Controller,是模型(Model)-视图(View)-控制器(Controller)的缩写,是一种软件设计思想。 MVC的核心思想是将代码按照不同的作用进行划分,具体划分原则是 Model:处理大部分的业务逻辑和数据操作 View:负责渲染数据,以html的方式呈现给用户 Controller:处理用户交互,负责从视图读取数据,...
自定义MVC框架【上篇】--原理
m0_74315688的博客
06-29 221
自定义mvc框架的原理讲解,看完即理解
自定义 MVC 框架思想
让优秀成为一种习惯!
06-30 465
自定义MVC(Model-View-Controller)框架是一种能够帮助开发者构建和组织应用程序的软件框架,它基于MVC设计模式。MVC框架将应用程序的不同部分进行了划分,使得代码的结构更加清晰和可读性更高。通过明确定义模型、视图和控制器的职责,可以使开发人员更容易理解和维护应用程序的代码。由于MVC框架使代码结构变得清晰,因此应用程序变得更容易维护。当需要进行修改或者添加新功能时,开发人员可以更加准确地找到和理解相关代码的位置,从而提高代码的可维护性。
自定义MVC框架.md
06-17
本文档中的大纲包含J2EE的知识点,有“Java环境搭建”,“集合框架”,“xml”,“反射”,“Jsp标签”,“通用分页”,“自定义mvc框架”,“MySQL”,“DDL”,“DQL”,“DML”,“DCL”,“TCL”,“视图”,...
基于C/C++开发的单目控制机械臂的上位机程序+视觉识别和关节角反解+源码(高分优秀项目)
05-13
基于C/C++开发的单目控制机械臂的上位机程序+视觉识别和关节角反解+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于C/C++开发的单目控制机械臂的上位机程序+视觉识别和关节角反解+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于C/C++开发的单目控制机械臂的上位机程序+视觉识别和关节角反解+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于C/C++开发的单目控制机械臂的上位机程序+视觉识别和关节角反解+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~
setuptools-68.2.1-py3-none-any.whl
05-13
Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
springboot 学生信息管理系统.zip
05-13
学生管理系统是一个典型的基于 Spring Boot 的应用程序,旨在帮助学校、教育机构或培训机构管理学生信息、课程安排、成绩等。下面我将介绍一个简单的学生管理系统的设计和实现,基于 Spring Boot 框架。 功能特点 学生信息管理 添加、编辑、删除学生信息。 查询学生信息,支持按姓名、学号等条件查询。
setuptools-0.9.8-py2.py3-none-any.whl
05-13
Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
利用python的pyautogui函数实现简单的自动化操作
05-13
1.安装python3.4以上版本,并配置环境变量(目前有装3.9遇到坑的,我个人用的3.7.6) 教程:https://www.runoob.com/python3/python3-install.html 2.安装依赖包 方法:在cmd中(win+R 输入cmd 回车)输入 pip install pyperclip 回车 pip install xlrd 回车 pip install pyautogui==0.9.50 回车 pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple 回车 pip install pillow 回车 这几步如果哪步没成功,请自行百度 如 pip install opencv-python失败 3.把每一步要操作的图标、区域截图保存至本文件夹 png格式(注意如果同屏有多个相同图标,回默认找到最左上的一个,因此怎么截图,截多大的区域,是个学问,如输入框只截中间空白部分肯定是不行的,宗旨就是“唯一”) 4.在cmd.xls 的sheet1 中,配置每一步的指令,如指
setuptools-38.2.0.zip
最新发布
05-13
Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
java毕业设计之鲜花销售网站的设计与实现源码.zip
05-13
毕业设计之鲜花销售网站的设计与实现源码.zip毕业设计之鲜花销售网站的设计与实现源码.zip毕业设计之鲜花销售网站的设计与实现源码.zip毕业设计之鲜花销售网站的设计与实现源码.zip
Spring MVC框架的优点
05-13
Spring MVC框架是一个轻量级的、基于MVC设计模式的Web框架,它有以下优点: 1. 轻量级:Spring MVC框架是一个轻量级的框架,不需要很多的配置和依赖,可以快速开发Web应用。 2. 灵活性:Spring MVC框架提供了很多可插拔的组件,可以根据需要自由选择使用。 3. 易于测试:Spring MVC框架的控制器(Controller)部分是非常容易测试的,这是因为控制器不依赖于任何具体的Web环境。 4. 易于集成:Spring MVC框架可以与其他Spring框架(如Spring ORM、Spring Security等)很容易地集成。 5. 清晰的MVC分离:Spring MVC框架采用了MVC设计模式,将业务逻辑、展示层和数据访问层分开,使得代码更加清晰易懂,易于维护。 6. 安全性:Spring MVC框架提供了安全性保护,可以轻松地集成Spring Security进行安全控制。 7. 可扩展性:Spring MVC框架可以很容易地扩展,可以编写自定义的拦截器、视图解析器等等,从而满足不同的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • JDK的安装完整教程 14654
  • 【Linux】安装VMWare虚拟机(安装配置)和配置Windows Server 2012 R2(安装配置连接vm虚拟机)以及环境配置(Windows版详细教程) 2925
  • 网络基础知识 1471
  • Mybatis的映射关系配置 1453
  • 【Linux】Nginx安装使用负载均衡及动静分离(前后端项目部署),前端项目打包 1355

最新评论

  • docker自定义镜像与上传

    CSDN-Ada助手: 不知道 云原生入门 技能树是否可以帮到你:https://edu.csdn.net/skill/cloud_native?utm_source=AI_act_cloud_native

  • docker自定义镜像与上传

    CSDN-Ada助手: 恭喜你这篇博客进入【CSDN每天值得看】榜单,全部的排名请看 https://bbs.csdn.net/topics/618149408。

  • 网络基础知识

    文件皆一印: 太基础了表情包。谢谢分享。

  • Axure自定义元件

    默o。: 优质好文,博主的文章细节很到位,兼顾实用性和可操作性,感谢博主的分享,文章思路清晰,图文并茂,详略得当,三连支持,期待博主持续输出好文!

  • 微信小程序2

    smile_new: 坤脚什么意思?怎么哪里都有我家哥哥的黑子表情包

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • docker自定义镜像与上传
  • 从零开始掌握Docek的基础知识与应用技巧
  • ACL权限、特殊位与隐藏属性的奥秘
2024年7篇
2023年72篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司肇庆企业网站改版怀化外贸网站设计多少钱保山模板制作公司北京SEO按天计费价格梧州网站优化按天计费多少钱荆州百度网站优化排名多少钱本溪营销型网站建设报价玉林品牌网站设计价格金华网站优化按天扣费公司黔东南网站定制黔东南英文网站建设推荐西宁网站改版价格商丘网站优化按天计费报价揭阳网络营销价格郑州设计公司网站公司赣州百度seo哪家好金华建设网站哪家好邵阳企业网站改版推荐布吉网站优化按天计费哪家好西宁seo网站推广推荐兰州优化推荐达州建网站公司赣州关键词按天扣费哪家好昆明百度竞价哪家好保定网站建设设计公司常德seo网站优化甘孜百度爱采购报价邯郸如何制作网站多少钱鹤岗seo公司鹰潭关键词按天计费推荐歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化