自定义MVC框架(一)
一、自定义MVC的概念
MVC全名:Model View Controller,其中为Model(模型层)、View(视图层)、Controller(控制层),它具有高内聚,低耦合的特点。
耦合为每个模块之间相互联系的紧密程度,模块之间联系越紧密,则耦合性越高,模块的独立性就越差,则耦合性越低。假如一个模块中修改了一个地方,另外很多模块也需要修改,即为独立性差。
内聚为一个模块中各个元素之间的联系的紧密程度,如果各个元素(语句、程序段)之间的联系程度越高,则内聚性越高,反之则内聚性低。
其实看上面说的还比较抽象,江来举个栗砸,就像一个公司,它拥有许多部门,每个部门做着上边大佬安排的工作,一个部门的工作通常是有那么一些关系的,比如说美工部听名字就知道他们是干啥的,里面的成员大部分都是一种类型的那就是擅长美工的。
部门就相当于是代码中的模块,有种各司其职的意思,然后部门中的人就像模块中的代码。
二、使用自定义MVC框架的原因
我们以前写一个项目,我们需要从零到有,从头到尾都需要自己花时间去写,那么我们肯定需要耗费许多时间,而自定义MVC框架其实就是我们去写一个半成品可以在多个项目中使用的一种东西,大概就是我们做PPT中那个模板,PPT模板我们可以多次使用,还有我们上面说的栗砸的那种模式很多公司都是这样的,是一样的情况,我们写代码也需要这种思维,我们做项目的时候需要效率,所以我们需要框架。
三、自定义MVC的工作流程
我会由一个简单实例来简述:
我们看上方这张图,首先我们从浏览器获取到请求,然后进入到总控制器(ActionServlet)中,在ActionServlet中我们判断请求的路径是什么,再由对应的子控制器(Action)子类去实现子控制器的方法,再去实现对应的功能,通过浏览器显示…
这里面的总控制器就是上面说的安排工作的大佬,他会根据请求找到对应的部门也就是子控制器来实现这个功能
我们用一个简单实例来看这个流程,首先通过浏览器进入ActionServlet
通过配置好的web.xml文件,进入到ActionServlet:
<servlet>
<servlet-name>actionServlet</servlet-name>
<servlet-class>com.zengjing.framework.ActionServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>actionServlet</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
在ActionServlet中,有一个map集合存储着子控制器子类,我们获取到请求路径,通过截取来分辨请求的路径是哪一个,再在map集合中找到这个对应的子控制器子类来实现功能
这一部分就像是总控制器大佬的脑子中知道自家公司有多少部门可以做哪些工作,得知请求后找到对应的部门来实现工作:
package com.zengjing.framework;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.zengjing.action.SumAction;
import com.zengjing.action.HelloAction;
public class ActionServlet extends HttpServlet{
private Map<String, Action> map;
@Override
public void init() throws ServletException {
System.out.