1.思维导图(自定义mvc原理)
1.1 什么是MVC?
??????????MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,?它是一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码
1.2 MVC的工作原理 :
? ? ? ? 浏览器用户请求——>中央控制器(接收用户请求,寻找子控制器)——>子控制器(获得用户请求方法名运行)——>模型层(Model)——>访问服务器——>返回给浏览器
1.3 mvc的核心思路:各司其职
1.4 什么是框架?
? ? ? ?框架是: 反射+设计模式(可以解决框架70%~80%的问题)
? ? ? ? 案例:通用分页+自定义page标签+自定义mvc的组合就是框架(基础)
2.代码演绎过程
?2.1.中央控制器代码块
? ? ? ?①?DispatchServlet.java:?寻找子控制器
@WebServlet("*.action")
public class DispatchServlet extends HttpServlet {
//存放子控制器的容器
private Map<String , ActionSupport> actions = new HashMap<String , ActionSupport>();
//初始化子控制器容器(集合),经过初始化,action容器内部就有了子控制器
//init(初始化方法),service(服务),destroy(销毁)
@Override
public void init() throws ServletException {
actions.put("/book", new BookAction());
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//完成子控制器对的过程
//浏览器:http://localhost:8080/J2ee12/book.action?name=add
//目标:BookAction.add()...
/**
* 思路:
* 1.从浏览器URL中获取到"/book"字符串
* 2.在子控制器中拿到BookAction
* 3.BookAction.add()
*/
String url = req.getRequestURI();
url = url.substring(url.lastIndexOf("/"), url.lastIndexOf("."));
//action=BookAction
ActionSupport action = actions.get(url);
action.execute(req, resp);
}
}
2.2.子控制器代码截图
? ? ? ActionSuppor.java:? 获取对应的方法名
?2.3 视图层index.jsp
?
2.4.运行结果
?
|