自定义MVC框架(最基础的)

来源:互联网 发布:神经网络有哪些算法 编辑:程序博客网 时间:2024/05/17 22:19

关于自定义MVC框架(最基础的可以说是山寨版)

给大家稍微了解下


--框架framework
1. 自定义MVC框架
 1.1 框架 半成品
  1.2 控制器
      中央控制器(ActionServlet)
         *.do
      子控制器(Action)
         execute方法

生活事例:
        飞行员和控制塔


首先要有一个中央控制器

代码如下:

package framework;


import java.io.IOException;
import java.io.PrintWriter;
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 test.action.HelloAction;
import test.action.LoginAction;


/**
 * 中央控制器
 * @author Administrator
 *
 */
public class ActionServlet extends HttpServlet {

private static final long serialVersionUID = -445992379066680884L;

//一个装action的容器
private Map<String, Action> actions=new HashMap<String, Action>();

//构造方法
public ActionServlet(){
System.out.println("new ActionServlet");
}


public void destroy() {
super.destroy(); 
}


public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}


public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// System.out.println("dopost");
//1、获取请求路径
String path=request.getServletPath();
System.out.println(path);
//2、取出请求中的*
path=path.replace(".action","");
System.out.println(path);

//3、根据这个key获取值
Action action = actions.get(path);

//4、最后交给他的子类去执行方法
action.execute(request, response);
}


public void init() throws ServletException {
System.out.println("init");
//0、进行加入到map集合当中去
actions.put("/helloAction", new HelloAction());
actions.put("/loginAction", new LoginAction());
}


}


然后是子控制器

package framework;


import java.io.IOException;


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


/**
 * 子控制器
 * @author Administrator
 *
 */
public abstract class Action {
//处理方法
public abstract void execute(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException;
}


接下来一访问hello为例  定义一个HelloAction类

package test.action;


import java.io.IOException;


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


import framework.Action;


public class HelloAction extends Action{


@Override
public void execute(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("hello mvc 我是helloAction");
}

}


注意配置的时候要设置一个

<load-on-startup>0</load-on-startup>

设置为0意思是说与服务器同时启动



发现有了这个框架之后配置都只要写一遍就好了

实现原理是有前提的HelloAction必须得继承Action类才行


框架省了很多代码下来

在框架的基础上进行的开发被称为二次开发

类似于我们去购买房子

我们不需要重新开始建,只需要在他的基础上进行装修就可以了

虽然房子的模板是一样的,但是每个人的装修风格是不一样的

转移到我们程序来说就是一个oop思想


好了,今天的分享到这里了。




原创粉丝点击