自定义MVC工作原理【一】
2019-06-05 17:48
162 查看
什么是MVC
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,
它是一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码
MVC结构
V
jsp/ios/android
C
servlet/action
M
实体域模型(名词)
过程域模型(动词)
自定义MVC工作原理图
利用MVC模式写一个算术
先写一个cal实体类
public class Cal { private String num1; private String num2; public String getNum1() { return num1; } public void setNum1(String num1) { this.num1 = num1; } public String getNum2() { return num2; } public void setNum2(String num2) { this.num2 = num2; } public Cal(String num1, String num2) { super(); this.num1 = num1; this.num2 = num2; } public Cal() { super(); } }
写一个主控制器
//主控制器 public class DispatcherServlet extends HttpServlet{ private Map<String, Action> actionMap = new HashMap<>(); public void init() { actionMap.put("/addCal", new AddCalAction()); actionMap.put("/delCal", new DelCalAction()); actionMap.put("/mulCal", new MulCalAction()); actionMap.put("/divCal", new DivCalAction()); } @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 { init(); String uri = req.getRequestURI(); uri = uri.substring(uri.lastIndexOf("/"), uri.lastIndexOf(".")); Action action = actionMap.get(uri); action.execute(req, resp); } }
写一个子控制器
//子控制器:处理业务逻辑 public interface Action { void execute(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException ; }
**AddCalAction **
public class AddCalAction implements Action{ @Override public void execute(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String num1 = req.getParameter("num1"); String num2 = req.getParameter("num2"); req.setAttribute("res", Integer.valueOf(num1)+Integer.valueOf(num2)); req.getRequestDispatcher("calRes.jsp").forward(req, resp); } }
**DelCalAction **
public class DelCalAction implements Action{ @Override public void execute(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String num1 = req.getParameter("num1"); String num2 = req.getParameter("num2"); req.setAttribute("res", Integer.valueOf(num1)-Integer.valueOf(num2)); req.getRequestDispatcher("calRes.jsp").forward(req, resp); } }
**DivCalAction **
public class DivCalAction implements Action{ @Override public void execute(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String num1 = req.getParameter("num1"); String num2 = req.getParameter("num2"); req.setAttribute("res", Integer.valueOf(num1)/Integer.valueOf(num2)); req.getRequestDispatcher("calRes.jsp").forward(req, resp); } }
**MulCalAction **
public class MulCalAction implements Action{ @Override public void execute(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String num1 = req.getParameter("num1"); String num2 = req.getParameter("num2"); req.setAttribute("res", Integer.valueOf(num1) * Integer.valueOf(num2)); req.getRequestDispatcher("calRes.jsp").forward(req, resp); } }
相关文章推荐
- Asp.net MVC 利用PartialView 构造自定义菜单
- ASP.NET MVC应用安全性(一)——自定义错误处理
- MVC重写DefaultModelBinder实现自定义模型绑定
- (翻译)为你的MVC应用程序创建自定义视图引擎
- MVC 自定义 验证注解
- mvc 母版页、用户自定义控件
- Asp.net MVC Preview 4 中自定义Jquery的HtmlHelper扩展
- 我的asp.net内容管理系统如何迁移到asp.net mvc(四)自定义URL路径
- MVC 自定义标签,给Html.ActionLink加上支持图片链接的功能
- 转:【译】Asp.net MVC 利用自定义RouteHandler来防止图片盗链
- ASP.NET MVC中的统一化自定义异常处理
- asp.net mvc 简易通用自定义Pager实现分页
- ASP.NET MVC 3.0(十二): MVC 3.0 使用自定义的Html控件
- MVC 自定义AuthorizeAttribute实现权限管理
- visual studio 2013 Entity Framework 6 MVC 5 体验(一)修改默认数据库,增加自定义字段
- 简述拦截器的工作原理以及你在项目中使用过哪些自定义拦截器。
- asp.net mvc 2 简简单单做开发 自定义Controller基类
- 自定义MVC
- MVC验证04-自定义验证规则、日期范围验证
- J2EE项目使用自定义注解实现基于SpringMVC + Mybatis + Mysql的读写分离