自定义mvc框架1
发布日期:2022-02-27 17:51:23
浏览次数:35
分类:技术文章
本文共 3557 字,大约阅读时间需要 11 分钟。
1、 什么是MVC?
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,
它是一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码(核心思想:各司其职)注1:不能跨层调用
注2:只能出现由上而下的调用2、自定义MVC工作原理图
实例(利用mvc做一个计算器): 首先:写一个实体类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 class DispatcherServlet extends HttpServlet { private static final long serialVersionUID = 6716422786850137569L; private MapactionMap = new HashMap<>(); public void init() { actionMap.put("/addCal", new AddCalAction()); actionMap.put("/delCal", new delCalAction()); actionMap.put("/chengCal", new ChengCalAction()); actionMap.put("/chuCal", new ChuCalAction()); } @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 url = req.getRequestURI();//mvc/xxx.action url = url.substring(url.lastIndexOf("/"), url.lastIndexOf(".")); Action action = actionMap.get(url); action.execute(req, resp); } }
在写一个子控制器(处理用户请求用的)
public interface Action { void execute(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException ;}
再写一个jsp界面当作计算器
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>Insert title here
再写一个jsp计算结果
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>Insert title here 结果:${res }
最后再把加减乘除的计算方法写好
加:public class AddCalAction implements Action { @Override public void execute(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub 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); }} 减:public class delCalAction implements Action { @Override public void execute(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub 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); }} 乘:public class ChengCalAction implements Action { @Override public void execute(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub 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); }} 除:public class ChuCalAction implements Action { @Override public void execute(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub 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); }}
结果如下:
转载地址:https://blog.csdn.net/shaobina/article/details/93508607 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年03月25日 02时59分35秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Linux创建、删除文件/文件夹命令
2019-04-26
Redis6.0配置文件详解
2019-04-26
Redis(二)Redis持久化(RDB+AOF)详解
2019-04-26
【JVM】一文了解双亲委派机制及其作用
2019-04-26
一文读懂JWT+JAVA的两种实现方式
2019-04-26
Java 对HashMap 进行排序的几种场景
2019-04-26
MySQL索引优化总结以及索引失效常见问题
2019-04-26
MySQL批量插入数据(load data 和存储过程方式)
2019-04-26
MySQL 表锁、行锁、间隙锁、页锁介绍分析
2019-04-26
codeforces 789A(数学)
2019-04-26
Codeforces 796A
2019-04-26
dp46上 HDU2084
2019-04-26
dp46上 HDU1421
2019-04-26
UESTC 1324线段树
2019-04-26
POJ1651 区间dp
2019-04-26
spfa、Dijkstra、Floyd算法最短路算法详解
2019-04-26
HDU4725(spfa+双端队列优化)
2019-04-26
PowerOj 1736(网络流—最大流)
2019-04-26