- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章MVC框架自定义实现过程由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
。
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写, 它是一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码.
。
用户发送请求→中央控制器接受用户请求→分析请求连接/获取到用户需要的类+方法→ 调用相对应的Model→ 访问数据库服务器 。
。
package com.tyf.web;import java.io.IOException;import java.lang.reflect.Method;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class BookServlet extends HttpServlet { @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 { /** * 增删改查缺陷: * 当需求发送改变,或者新增需求的时候,需要改动下面代码 * * 解决方案: * 前台传递name到后台,实际就是想要调用当前(this)类对象的name方法 */ String name = req.getParameter("name"); try { Method m = this.getClass().getDeclaredMethod(name, HttpServletRequest.class,HttpServletResponse.class); m.setAccessible(true); m.invoke(this, req,resp); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } /*if ("add".equals(name)) { add(req,resp); }else if ("delete".equals(name)) { delete(req,resp); }else if ("edit".equals(name)) { edit(req,resp); }else if ("list".equals(name)) { list(req,resp); }else if ("load".equals(name)) { load(req,resp); }*/ }}
package com.tyf.framework;import java.io.IOException;import java.util.HashMap;import java.util.Map;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.tyf.web.BookAction;/*** * 目标:* 根据自定义mvc框架的原理图 完成框架的研发* @author Tang 中央控制器* 寻找子控制器** 2021年8月30日 下午6:49:35*/@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); }}
package com.tyf.framework; import java.lang.reflect.Method;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class ActionSupport implements Action { @Override public void execute(HttpServletRequest req, HttpServletResponse resp) { String name = req.getParameter("name"); try { Method m = this.getClass().getDeclaredMethod(name, HttpServletRequest.class,HttpServletResponse.class); m.setAccessible(true); m.invoke(this, req,resp); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
package com.tyf.framework; import java.io.IOException;import java.util.HashMap;import java.util.Map; import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.tyf.web.BookAction; /*** * 目标:* 根据自定义mvc框架的原理图 完成框架的研发* * * @author Tang 中央控制器* 寻找子控制器** 2021年8月30日 下午6:49:35*/ @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); }}
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body> 目前多数人增删改查的代码: <a href="${pageContext.request.contextPath}/book/add" rel="external nofollow" >增加</a> <a href="${pageContext.request.contextPath}/book/delete" rel="external nofollow" >删除</a> <a href="${pageContext.request.contextPath}/book/edit" rel="external nofollow" >修改</a> <a href="${pageContext.request.contextPath}/book/list" rel="external nofollow" >查询</a> <hr> 增删改查的代码2.0 <a href="${pageContext.request.contextPath}/book.action?name=add" rel="external nofollow" >增加</a> <a href="${pageContext.request.contextPath}/book.action?name=delete" rel="external nofollow" >删除</a> <a href="${pageContext.request.contextPath}/book.action?name=edit" rel="external nofollow" >修改</a> <a href="${pageContext.request.contextPath}/book.action?name=list" rel="external nofollow" >查询</a> <hr> 增删改查的代码3.0 <a href="${pageContext.request.contextPath}/book.action?name=load" rel="external nofollow" >回显</a> <a href="${pageContext.request.contextPath}/book.action?name=ref" rel="external nofollow" >关联</a> </body></html>
。
以上就是MVC框架自定义实现过程的详细内容,更多关于MVC框架的资料请关注我其它相关文章! 。
原文链接:https://blog.csdn.net/m0_54525420/article/details/120003916 。
最后此篇关于MVC框架自定义实现过程的文章就讲到这里了,如果你想了解更多关于MVC框架自定义实现过程的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
如果我声明了类似的类型 type test(NSIZE) integer, len :: NSIZE real :: dummy(NSIZE) contains procedure,
我知道这是一个不太可能的事情,但是由于“选项私有(private)模块”的限制,甚至更糟糕的“私有(private)子/函数”的限制,有谁知道是否有一种方法可以从 Excel 应用程序隐藏 VBA 过
我有两个表,property 和 component。 component.id_property = property.id。 我正在尝试创建一个过程,该过程对所选属性的组件进行计数,如果所选属性没
我有一份报告,它是在 SSRS 2005 中开发的,我正在使用存储过程从数据库中获取结果。报告输出的结果非常简单,如下图所示。 如果假设我正在寻找不同的成员 例如:- MemberID c108 c
我需要一个通用函数/过程,该函数/过程将根据提供的数据计算出我的淡入淡出时间和值,如下所示: 我将字节值保存在字节数组中:这些是起始值。然后,我在其他数组中存储了一些值:这些将是新值。然后我有时间要提
我想在界面的多个按钮上创建相同的操作。是否只能通过创建单独的操作监听器方法并调用执行操作的方法才可行,还是还有其他方法?是否可以将按钮放在一个组中并执行以下操作:- groupButton.setOn
我有以下情况: procedure Test; begin repeat TryAgain := FALSE; try // Code // Code if this an
我正在尝试执行以下操作;假设我在 Oracle 中创建了一个对象类型 create type test as object( name varchar2(12), member procedure p
问题: 如果可能的话,如何声明一个用于任何类型参数的函数 T其中 T 的唯一约束是它被定义为 1D array如 type T is array ( integer range <> ) of a_r
我正在尝试创建这个 mysql 过程来制作一个包含今年所有日期和所有时间的表(以一小时为间隔。) CREATE TABLE FECHAS ( created_at datetime ); CREA
所以, 我在这里面临一个问题,这让我发疯,我认为这是一个愚蠢的错误,所以我不是 MySQL 的新手,但它并不像我想象的那样工作。 尝试将此语句部署到 MySQL 后,我收到此错误: ERROR 106
我有一个架构,其中包含星球大战中的人物列表、他们出现的电影、他们访问的行星等。这是架构: CREATE DATABASE IF NOT EXISTS `starwarsFINAL` /*!40100
我一直在为一家慈善机构创建一款应用程序,允许家庭在节日期间注册接收礼物。数据库组织有多个表。下面列出了这些表(及其架构/创建语句): CREATE TABLE IF NOT EXISTS ValidD
正如上面标题所解释的,我正在尝试编写一个sql函数来按日期删除表而不删除系统表。我在此消息下方放置了一张图片,以便直观地解释我的问题。任何帮助将不胜感激!感谢您的时间! 最佳答案 您可以通过查询INF
DELIMITER $$ CREATE PROCEDURE INSERT_NONE_HISTORY_CHECKBOX() BEGIN DECLARE note_id bigint(20); F
是否可以编写一个存储过程或触发器,在特定时间在数据库内部自动执行,而无需来自应用程序的任何调用?如果是,那么任何人都可以给我一个例子或链接到一些我可以阅读如何做到这一点的资源。 最佳答案 查看 pgA
我需要创建一个过程:1)从表中的字段中选择一些文本并将其存储在变量中2) 更新相同的记录字段,仅添加 yyyymmdd 格式的日期以及过程中的附加文本输入...类似这样的... delimiter /
好的,这就是我想做的: 如果条目已存在(例如基于字段name),则只需返回其id 如果没有,请添加 这是我迄今为止所管理的(对于“如果不存在,则创建它”部分): INSERT INTO `object
以下是我编写的程序,用于找出每位客户每天购买的前 10 件商品。 这是我尝试过的第一个 PL/SQL 操作。它没有达到我预期的效果。 我使用的逻辑是接受开始日期、结束日期以及我对每个客户感兴趣的前“x
我正在尝试在MySQL中创建一个过程那insert week s(当年)发送至我的 week table 。但存在一个问题,因为在为下一行添加第一行后,我收到错误: number column can
我是一名优秀的程序员,十分优秀!