c/c++语言开发共享详细了解MVC+proxy

目录1、创建业务层userservice接口定义需要完成的功能2、创建持久层userdao接口定义具体的curd3、完成userservice接口和userdao的实现类4、创建invocationh

目录
  • 1、创建业务层userservice接口定义需要完成的功能
  • 2、创建持久层userdao接口定义具体的curd
  • 3、完成userservice接口和userdao的实现类
  • 4、创建invocationhandler接口的实现类
  • 5、创建表示层servlet去完成调用

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?"保存成功":"保存失败");      }  }  

详细了解MVC+proxy

总结

本篇文章就到这里了,希望能够帮助到你,也希望您能够多多关注<计算机技术网(www.ctvol.com)!!>的更多内容!

需要了解更多c/c++开发分享详细了解MVC+proxy,都可以关注C/C++技术分享栏目—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/648296.html

(0)
上一篇 2021年7月12日
下一篇 2021年7月12日

精彩推荐