MVC+proxy的原理及使用方法
这篇文章主要讲解了“MVC+proxy的原理及使用方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MVC+proxy的原理及使用方法”吧!
目录
1、创建业务层UserService接口定义需要完成的功能
2、创建持久层UserDao接口定义具体的CURD
3、完成UserService接口和UserDao的实现类
4、创建InvocationHandler接口的实现类
5、创建表示层Servlet去完成调用
总结
1、创建业务层UserService接口定义需要完成的功能
/** *创建目标接口,定义目标接口要完成的功能 */ publicinterfaceUserService{ booleansave(Useruser); }
2、创建持久层UserDao接口定义具体的CURD
/** *创建目标接口,定义目标接口要完成的功能 */ publicinterfaceUserService{ booleansave(Useruser); }
3、完成UserService接口和UserDao的实现类
publicclassUserServiceImplimplementsUserService{ privateUserDaodao=newUserDaoImpl(); @Override publicbooleansave(Useruser){ booleansuccess=false; success=dao.insert(user); returnsuccess; } }
这里省略具体的JDBC代码
publicclassUserDaoImplimplementsUserDao{ @Override publicbooleaninsert(Useruser){ System.out.println("insertintot_user(username,password)values('"+user.getUsername()+"','"+user.getPassword()+"')"); returntrue; } }
4、创建InvocationHandler接口的实现类
为什么需要这个接口?
因为在开发中,业务层可能含有涉及到多步数据库操作,所以这一步需要开启事务,但是开发中这样的情况太多了,所以我们需要面向横切面编程,创建代理代理,在调用业务层方法时,我们利用jdk动态代理的增强功能提供事务。这样,事务代码只用写一次,但是每次业务层方法调用时,我们都可以使用代理对象去调用业务层方法来开启事务。实现了代码复用。
publicclassUserHandlerimplementsInvocationHandler{ //动态创建目标对象 Objecttarget=null; publicUserHandler(Objecttarget){ this.target=target; } @Override publicObjectinvoke(Objectproxy,Methodmethod,Object[]args)throwsThrowable{ //返回值 Objectresult=null; //增强功能 System.out.println("beginTransaction....."); result=result=method.invoke(target,args); System.out.println("commitTransaction....."); System.out.println("rollbackTransaction....."); System.out.println("endTransaction....."); //返回值 returnresult; } }
这里我就用输出语句代表事务语句。
5、创建表示层Servlet去完成调用
publicclassUserSaveServlet{ publicstaticvoidmain(String[]args)throwsException{ //需要调用的目标类 Classc=UserServiceImpl.class; Objectobj=c.newInstance(); //获取该类的类加载器 ClassLoaderloader=obj.getClass().getClassLoader(); //目标对象实现的接口 Class[]interfaces=obj.getClass().getInterfaces(); //获取InvocationHandler对象 InvocationHandlerhandler=newUserHandler(obj); //创建代理对象 //将返回值转为接口类型 UserServiceservice=(UserService)Proxy.newProxyInstance(loader,interfaces,handler); booleansuccess=service.save(newUser("张三","123456")); System.out.println(success?"保存成功":"保存失败"); } }
感谢各位的阅读,以上就是“MVC+proxy的原理及使用方法”的内容了,经过本文的学习后,相信大家对MVC+proxy的原理及使用方法这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是恰卡编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!
推荐阅读
-
ASP.NET MVC中两个配置文件的作用是什么
ASP.NET MVC中两个配置文件的作用是什么小编给大家分享一下...
-
ASP.NET MVC过滤器执行顺序是什么
ASP.NET MVC过滤器执行顺序是什么小编给大家分享一下ASP...
-
JavaWeb如何使用mvc模式实现登录功能
JavaWeb如何使用mvc模式实现登录功能这篇文章给大家分享的是...
-
MVC框架是怎么工作的
MVC框架是怎么工作的这篇文章主要讲解了“MVC框架是怎么工作的”...
-
MVC、MVP和MVVM分别是什么意思
这篇文章给大家分享的是有关MVC、MVP和MVVM分别是什么意思的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来...
-
ASP.NET MVC中两个配置文件的作用是什么
ASP.NET MVC中两个配置文件的作用是什么小编给大家分享一下...
-
ASP.NET MVC过滤器执行顺序是什么
ASP.NET MVC过滤器执行顺序是什么小编给大家分享一下ASP...
-
JavaWeb如何使用mvc模式实现登录功能
JavaWeb如何使用mvc模式实现登录功能这篇文章给大家分享的是...
-
MVC框架是怎么工作的
MVC框架是怎么工作的这篇文章主要讲解了“MVC框架是怎么工作的”...
-
MVC、MVP和MVVM分别是什么意思
这篇文章给大家分享的是有关MVC、MVP和MVVM分别是什么意思的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来...
-
ASP.NET MVC中两个配置文件的作用是什么
ASP.NET MVC中两个配置文件的作用是什么小编给大家分享一下...
-
ASP.NET MVC过滤器执行顺序是什么
ASP.NET MVC过滤器执行顺序是什么小编给大家分享一下ASP...
-
JavaWeb如何使用mvc模式实现登录功能
JavaWeb如何使用mvc模式实现登录功能这篇文章给大家分享的是...
-
MVC框架是怎么工作的
MVC框架是怎么工作的这篇文章主要讲解了“MVC框架是怎么工作的”...
-
MVC、MVP和MVVM分别是什么意思
这篇文章给大家分享的是有关MVC、MVP和MVVM分别是什么意思的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来...