AOP.jsp+MVC.jsp
来源:互联网 发布:炫光制作软件 编辑:程序博客网 时间:2024/05/21 13:22
实现页面的aop和mvc模式一 : aop.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><html><head><script type="text/javascript" src="<%=request.getContextPath() %>/scripts/jquery-1.8.3.js"></script><script type="text/javascript"> function around(obj, prop, advice) { var exist = obj[prop]; var previous = function() { return exist.apply(obj, arguments); }; var advised = advice(previous); obj[prop] = function() { //当调用remove后,advised为空 //利用闭包的作用域链中可以访问到advised跟previous变量,根据advised是否为空可以来决定调用谁 return advised ? advised.apply(obj, arguments) : previous.apply( obj, arguments); }; return { remove : function() { //利用闭包的作用域链,在remove时将advised置空,这样执行过程中不会进入本次around //这几个不能删 //obj[prop] = exist; advised = null; advice = null; //previous = null; //exist = null; //obj = null; } }; } var count = 1; advice = function(originalFunc) { var current = count++; return function() { console.log("before function " + current); originalFunc.apply(this, arguments); console.log("after function " + current); }; }; var obj = { foo : function(arg) { console.log(this.name + " and " + arg); }, name : "obj" }; h1 = around(obj, "foo", advice); h2 = around(obj, "foo", advice); obj.foo("aop"); h1.remove(); obj.foo("aop"); h2.remove(); obj.foo("aop");</script></head><body></body></html>二 : mvc.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><html><head><script type="text/javascript" src="<%=request.getContextPath() %>/scripts/jquery-1.8.3.js"></script><script type="text/javascript"> function Model(value) { this._value = typeof value === 'undefined' ? '' : value; this._listeners = []; } Model.prototype.set = function (value) { var self = this; self._value = value; setTimeout(function () { self._listeners.forEach(function (listener) { listener.call(self, value); }); }); }; Model.prototype.watch = function (listener) { this._listeners.push(listener); }; Model.prototype.bind = function (node) { this.watch(function (value) { node.innerHTML = value; }); }; function Controller(callback) { var models = {}; var views = Array.prototype.slice.call(document.querySelectorAll('[bind]'), 0); views.forEach(function (view) { var modelName = view.getAttribute('bind'); models[modelName] = models[modelName] || new Model(); models[modelName].bind(view); }); callback.call(this, models); }</script></head><body></body></html>
0 0
- AOP.jsp+MVC.jsp
- mvc模式jsp笔记
- JSP-Servlet-MVC要点
- jsp中的mvc开发
- JSP中的MVC架构
- JSP MVC模式
- jsp+mvc之ATM
- JSP/Servlet MVC模式
- servlet、JSP、MVC
- jsp 简易mvc模式
- JSP的MVC模式
- JSP+MVC基础知识
- JSP学习总结------MVC模式(JDDC 、Servlet 、Jsp的MVC)
- jsp购物车(mvc)
- spring3 mvc+hibernate+jsp+maven
- Jsp 中MVC实现方法
- Jsp 中MVC实现方法
- JSP的设计模式mvc
- Java学习总结第十四天Java类的继承
- Verify Preorder Sequence in Binary Search Tree
- 【二叉树】 堆应用:合并果子
- SHA1算法原理
- ARM嵌入式系统
- AOP.jsp+MVC.jsp
- js中的in操作符
- HDU5536 Chip Factory 被外表欺骗的水题 国庆咸鱼
- 计蒜客 青云的机房组网方案
- Qt 进度条填充效果
- 深刻理解 抽象类与接口之间的区别
- 【leetcode】5. Longest Palindromic Substring
- 常用DIV操作兼论JQuery语法
- HDOJ-----4751---Divide Groups二分判断