广告
返回顶部
首页 > 资讯 > 后端开发 > Python >详细了解MVC+proxy
  • 955
分享到

详细了解MVC+proxy

2024-04-02 19:04:59 955人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录1、创建业务层UserService接口定义需要完成的功能2、创建持久层UserDao接口定义具体的CURD3、完成UserService接口和UserDao的实现类4、创建In

1、创建业务层UserService接口定义需要完成的功能



public interface UserService {
    boolean save(User user);
}

2、创建持久层UserDao接口定义具体的CURD



public interface UserService {
    boolean save(User user);
}

3、完成UserService接口和UserDao的实现类


public class UserServiceImpl implements UserService {
    private UserDao dao=new UserDaoImpl();
    @Override
    public boolean save(User user) {
        boolean success=false;
        success=dao.insert(user);
        return success;
    }
}

这里省略具体的JDBC代码


public class UserDaoImpl implements UserDao {
    @Override
    public boolean insert(User user) {
        System.out.println("insert into t_user (username,passWord)values('"+user.getUsername()+"','"+user.getPassword()+"')");
        return true;
    }
}

4、创建InvocationHandler接口的实现类

为什么需要这个接口?

因为在开发中,业务层可能含有涉及到多步数据库操作,所以这一步需要开启事务,但是开发中这样的情况太多了,所以我们需要面向横切面编程,创建代理代理,在调用业务层方法时,我们利用jdk动态代理的增强功能提供事务。这样,事务代码只用写一次,但是每次业务层方法调用时,我们都可以使用代理对象去调用业务层方法来开启事务。实现了代码复用。


public class UserHandler implements InvocationHandler {

    //动态创建目标对象
    Object target=null;
    public UserHandler(Object target){
        this.target=target;
    }
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        //返回值
        Object result=null;
        //增强功能
        System.out.println("begin Transaction.....");
        result=result=method.invoke(target,args);
        System.out.println("commit Transaction.....");
        System.out.println("rollback Transaction.....");
        System.out.println("end Transaction.....");
        //返回值
        return result;
    }
}

这里我就用输出语句代表事务语句。

5、创建表示层Servlet去完成调用


public class UserSaveServlet {
    public static void main(String[] args) throws Exception {
        //需要调用的目标类
        Class c= UserServiceImpl.class;
        Object obj = c.newInstance();
        //获取该类的类加载器
        ClassLoader loader = obj.getClass().getClassLoader();
        //目标对象实现的接口
        Class<?>[] interfaces=obj.getClass().getInterfaces();
        //获取InvocationHandler对象
        InvocationHandler handler=new UserHandler(obj);
        //创建代理对象
        //将返回值转为接口类型
        UserService service=(UserService)Proxy.newProxyInstance(loader,interfaces,handler);
        boolean success=service.save(new User("张三","123456"));
        System.out.println(success?"保存成功":"保存失败");
    }
}

总结

本篇文章就到这里了,希望能够帮助到你,也希望您能够多多关注编程网的更多内容!

--结束END--

本文标题: 详细了解MVC+proxy

本文链接: https://www.lsjlt.com/news/130179.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 详细了解MVC+proxy
    目录1、创建业务层UserService接口定义需要完成的功能2、创建持久层UserDao接口定义具体的CURD3、完成UserService接口和UserDao的实现类4、创建In...
    99+
    2022-11-12
  • Java Proxy机制详细解读
     动态代理其实就是java.lang.reflect.Proxy类动态的根据您指定的所有接口生成一个class byte,该class会继承Proxy类,并实现所有你指定的接口(您在参数中传入的接口数组);然后再利用您指定的cla...
    99+
    2023-05-31
    java proxy机制 rox
  • 详细了解AndroidStudio
    Android系统架构 安卓Android作为一个移动设备的开发平台,其系统构架被分成了四个部分,从高到低分别是:Android 应用层,Android 应用框架层,Android 系统运行层,Lin...
    99+
    2023-10-20
    android java 系统架构
  • ConcurrentHashMap原理详解(太细了)
    一、什么是ConcurrentHashMap ConcurrentHashMap和HashMap一样,是一个存放键值对的容器。使用hash算法来获取值的地址,因此时间复杂度是O(1)。查询非常快。 同时,ConcurrentHashMap是...
    99+
    2023-08-17
    java 哈希算法 数据结构
  • Spring MVC详解
    文章目录 一、SpringMVC1.1 引言1.2 MVC架构1.2.1 概念1.2.2 好处 二、开发流程2.1 导入依赖2.2 配置核心(前端)控制器2.3 后端控制器2.4 配置文件2.5 访问 三、...
    99+
    2023-08-30
    spring mvc java
  • JavaScript的Proxy对象详解
    目录一、Proxy 是什么?二、怎么用?1、使用 Proxy 的简单实例2、目标对象被正确修改3、使用 set handler 做数据验证4、扩展构造函数总结一、Proxy 是什么?...
    99+
    2022-11-12
  • js Proxy的原理详解
    目录什么是代理模式 引入一个现实生活中的案例结合案例理解代理模式的定义什么是Proxyget(target, propKey, receiver) set(target, propK...
    99+
    2022-11-12
  • Java 超详细讲解Spring MVC异常处理机制
    目录异常处理机制流程图异常处理的两种方式简单异常处理器SimpleMappingExceptionResolver自定义异常处理步骤本章小结异常处理机制流程图 系统中异常包括两类: ...
    99+
    2022-11-13
  • python 深入了解GIL锁详细
    目录1、什么是GIL锁2、CPython对线程安全的内存管理机制3、GIL锁的产生4、GIL锁的底层原理5、Python GIL不能绝对保证线程安全6、总结前言: python的使用...
    99+
    2022-11-12
  • 一文带你详细了解jQuery
    目录举个例子 : jQuery 使用常见插件常用的一些内容jQuery于2006年1月由John Resig在BarCamp NYC首次发布。它目前由Timmy Wilso...
    99+
    2023-05-15
    Javascript jQuery
  • 详解VUE中的Proxy代理
    Proxy 是ES6中提供的一个非常强大的功能,可以用来代理另一个对象,从而拦截、监视并修改这个对象的各种操作 首先是Proxy()的参数: arget:被代理的对象。handler...
    99+
    2023-05-16
    VUE Proxy代理
  • php字符串使用详细了解
    字符串是日常开发中用到最多的数据类型之一,了解字符串首先要明白定界符。 定界符有4种,单引号、双引号、heredoc、nowdoc,常使用的单引号、双引号。 注意点 1、单引号不解析...
    99+
    2022-12-16
    php字符串 php字符串函数
  • SpringMVC的详细架构你了解嘛
    目录1、SpringMVC 详细介绍2、SpringMVC 处理请求流程3、配置前端控制器4、配置处理器适配器5、编写 Handler5、配置处理器映射器6、配置视图解析器7、Dis...
    99+
    2022-11-13
  • Spring MVC 与 CORS跨域的详细介绍
    1. CORS 简介同源策略(same origin policy)是浏览器安全的基石。在同源策略的限制下,非同源的网站之间不能发送 ajax 请求的。为了解决这个问题,w3c 提出了跨源资源共享,即 CORS(Cross-Origin R...
    99+
    2023-05-31
    spring mvc cors
  • 详解CocosCreator MVC架构
    概述 这一篇将介绍在游戏客户端常用的架构MVC架构。一个游戏的MVC如下划分: M:1)单例全局的数据中心World,所有游戏模块的数据在World中有入口,2)各个模块自己的数据结...
    99+
    2022-11-12
  • Spring MVC 详解 (Spring Boot)
    Spring MVC 详解 - Spring Boot 一、什么是 Spring MVC1.1 MVC 定义1.2 MVC 和 Spring MVC 的关系1.3 学习目的 二、Spring MVC 创建和连接2.1 创建 Sp...
    99+
    2023-12-22
    spring mvc spring boot java 后端
  • java基础的详细了解第四天
    目录1、数组数组的引用传递数组的静态初始化数组与方法的调用Java对数组的支持数组的数据分析数组排序数组的转置数组的二分查找法对象数组总结1、数组 数组的引用传递 public ...
    99+
    2022-11-12
  • java基础的详细了解第五天
    目录1、String类1.1两种对象实例化方式1.2字符串比较1.3字符串常量是String的匿名对象1.4String两种实例化方式区别1、分析直接赋值方式2、构造方法赋值1.5字...
    99+
    2022-11-12
  • java基础的详细了解第六天
    目录1、this关键字1.1 “this.属性”表示本类属性1.2“this”表示调用本类方法1.3“this”表示当前对象1.4引用传递进阶分析1.5对象比较1.6引用传递实际应用...
    99+
    2022-11-12
  • java基础的详细了解第一天
    目录1、Java主要特点2、计算机的高级汇编语言类型:3、JVM(Java Visual Machine)4、编写第一个Java程序并运行5、CLASSPATH指的是类加载路径6、程...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作