返回顶部
首页 > 资讯 > 后端开发 > 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://lsjlt.com/news/130179.html(转载时请注明来源链接)

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

猜你喜欢
  • 详细了解MVC+proxy
    目录1、创建业务层UserService接口定义需要完成的功能2、创建持久层UserDao接口定义具体的CURD3、完成UserService接口和UserDao的实现类4、创建In...
    99+
    2024-04-02
  • 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 系统架构
  • 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
  • js Proxy的原理详解
    目录什么是代理模式 引入一个现实生活中的案例结合案例理解代理模式的定义什么是Proxyget(target, propKey, receiver) set(target, propK...
    99+
    2024-04-02
  • JavaScript的Proxy对象详解
    目录一、Proxy 是什么?二、怎么用?1、使用 Proxy 的简单实例2、目标对象被正确修改3、使用 set handler 做数据验证4、扩展构造函数总结一、Proxy 是什么?...
    99+
    2024-04-02
  • Java 超详细讲解Spring MVC异常处理机制
    目录异常处理机制流程图异常处理的两种方式简单异常处理器SimpleMappingExceptionResolver自定义异常处理步骤本章小结异常处理机制流程图 系统中异常包括两类: ...
    99+
    2024-04-02
  • ConcurrentHashMap原理详解(太细了)
    一、什么是ConcurrentHashMap ConcurrentHashMap和HashMap一样,是一个存放键值对的容器。使用hash算法来获取值的地址,因此时间复杂度是O(1)。查询非常快。 同时,ConcurrentHashMap是...
    99+
    2023-08-17
    java 哈希算法 数据结构
  • 详解VUE中的Proxy代理
    Proxy 是ES6中提供的一个非常强大的功能,可以用来代理另一个对象,从而拦截、监视并修改这个对象的各种操作 首先是Proxy()的参数: arget:被代理的对象。handler...
    99+
    2023-05-16
    VUE Proxy代理
  • 详解CocosCreator MVC架构
    概述 这一篇将介绍在游戏客户端常用的架构MVC架构。一个游戏的MVC如下划分: M:1)单例全局的数据中心World,所有游戏模块的数据在World中有入口,2)各个模块自己的数据结...
    99+
    2024-04-02
  • 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 后端
  • Spring MVC 与 CORS跨域的详细介绍
    1. CORS 简介同源策略(same origin policy)是浏览器安全的基石。在同源策略的限制下,非同源的网站之间不能发送 ajax 请求的。为了解决这个问题,w3c 提出了跨源资源共享,即 CORS(Cross-Origin R...
    99+
    2023-05-31
    spring mvc cors
  • 一文带你详细了解jQuery
    目录举个例子 : jQuery 使用常见插件常用的一些内容jQuery于2006年1月由John Resig在BarCamp NYC首次发布。它目前由Timmy Wilso...
    99+
    2023-05-15
    Javascript jQuery
  • python 深入了解GIL锁详细
    目录1、什么是GIL锁2、CPython对线程安全的内存管理机制3、GIL锁的产生4、GIL锁的底层原理5、Python GIL不能绝对保证线程安全6、总结前言: python的使用...
    99+
    2024-04-02
  • 详细聊聊Spring MVC重定向与转发
    目录重定向和转发 常用处理方式 String 重定向 ModelAndView 重定向 RedirectView 重定向 带参跳转 redirect 和 forward 的区别 附:...
    99+
    2024-04-02
  • MVC框架知识详解
    ✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 Ὁ...
    99+
    2023-09-17
    mvc java servlet
  • 详解Spring MVC CORS 跨域
    介绍跨域CORS,全称是"跨域资源共享"(Cross-origin resource sharing)当页面发出跨域请求时:简单请求(先简单理解为正常的get/post吧):浏览器将请求的地址添加到header的Origin里面发送请求。接...
    99+
    2023-05-31
    spring mvc cors
  • php字符串使用详细了解
    字符串是日常开发中用到最多的数据类型之一,了解字符串首先要明白定界符。 定界符有4种,单引号、双引号、heredoc、nowdoc,常使用的单引号、双引号。 注意点 1、单引号不解析...
    99+
    2022-12-16
    php字符串 php字符串函数
  • SpringMVC的详细架构你了解嘛
    目录1、SpringMVC 详细介绍2、SpringMVC 处理请求流程3、配置前端控制器4、配置处理器适配器5、编写 Handler5、配置处理器映射器6、配置视图解析器7、Dis...
    99+
    2024-04-02
  • JavaScript Object.defineProperty与proxy代理模式的使用详细分析
    目录1. Object.defineProperty2. Object.defineProperties3. proxy代理模式总结1. Object.defineProperty ...
    99+
    2022-11-13
    JavaScript Object.defineProperty JavaScript proxy
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作