xml地图|网站地图|网站标签 [设为首页] [加入收藏]

正规赌博平台

当前位置:网上十大正规赌博平台 > 正规赌博平台 > JSP学习系列之五,0对象模型深度探索之绑定

JSP学习系列之五,0对象模型深度探索之绑定

来源:http://www.nb-machinery.com 作者:网上十大正规赌博平台 时间:2019-08-01 09:41

  1、前言

  除了限制访问,访问方式也决定哪个方法将被子类调用或哪个属性将被子类访问. 函数调用与函数本身的关联,以及成员访问与变量内存地址间的关系,称为绑定。

一、运行前准备

  分页显示是一种非常常见的浏览和显示大量数据的方法,属于web编程中最常处理的事件之一。对于web编程的老手来说,编写这种代码实在是和呼吸一样自然,但是对于初学者来说,常常对这个问题摸不着头绪,因此特地撰写此文对这个问题进行详细的讲解,力求让看完这篇文章的朋友在看完以后对于分页显示的原理和实现方法有所了解。本文适合初学者阅读,所有示例代码均使用php编写。

  在计算机语言中有两种主要的绑定方式—静态绑定和动态绑定。静态绑定发生于数据结构和数据结构间,程序执行之前. 静态绑定发生于编译期, 因此不能利用任何运行期的信息。它针对函数调用与函数的主体,或变量与内存中的区块。因为PHP是一种动态语言,它不使用静态绑定。但是可以模拟静态绑定。

建议了一个MS SQLServer7数据库 DNS,名称为:Test_DB

  2、原理

  动态绑定则针对运行期产生的访问请求,只用到运行期的可用信息。在面向对象的代码中,动态绑定意味着决定哪个方法被调用或哪个属性被访问,将基于这个类本身而不基于访问范围。

数据库中有一个表:guestbook字段为:name(varchar),email(varchar),body(text)

  所谓分页显示,也就是将数据库中的结果集人为的分成一段一段的来显示,这里需要两个初始的参数:

  Public和protected成员的动作类似于PHP的前几个版本中函数的动作,使用动态绑定。这意味着如果一个方法访问一个在子类中被覆写的类成员,并是一个子类的实例,子类的成员将被访问(而不是访问父类中的成员)。

数据库用户为sa 密码空,可以自己修改的。

   每页多少条记录($PageSize)?
   当前是第几页($CurrentPageID)?

  看例子6.10. 这段代码输出” Hey! I am Son.” 因为当PHP调用getSalutation, 是一个Son的实例,是将Father中的salutation覆写而来. 如果salutation是public的,PHP将产生相同的结果. 覆写方法的操作很类似。在Son中,对于identify的调用绑定到那个方法。

二、代码

  现在只要再给我一个结果集,我就可以显示某段特定的结果出来。

  即使在子类中访问方式被从protected削弱成public, 动态绑定仍然会发生. 按照访问方式使用的原则,增强对于类成员的访问限制是不可能的,所以把访问方式从public改变成protected不可能进行。

三、怎么去运行?

  至于其他的参数,比如:上一页($PreviousPageID)、下一页($NextPageID)、总页数($numPages)等等,都可以根据前边这几个东西得到。

  Listing 6.10 Dynamic binding 动态绑定

将代码存为文件test.jsp

  以mysql数据库为例,如果要从表内截取某段内容,sql语句可以用:select * from table limit offset, rows。看看下面一组sql语句,尝试一下发现其中的规率。

class Father
{
protected $salutation = "Hello there!"; //问候

Orion Application Server下:

  前10条记录:select * from table limit 0,10
  第11至20条记录:select * from table limit 10,10
  第21至30条记录:select * from table limit 20,10
  ……

public function getSalutation()
{
print("$this->salutationn");
$this->identify();
}

Copy到orion的default-web-app目录下,通过:

  这一组sql语句其实就是当$PageSize=10的时候取表内每一页数据的sql语句,我们可以总结出这样一个模板:

protected function identify()
{
print("I am Father.
n");
}
};

select * from table limit ($CurrentPageID - 1) * $PageSize, $PageSize

class Son extends Father
{
protected $salutation = "Hey!"; //父类中的protected $salutation 被覆写

访问测试

  拿这个模板代入对应的值和上边那一组sql语句对照一下看看是不是那么回事。搞定了最重要的如何获取数据的问题以后,剩下的就仅仅是传递参数,构造合适的sql语句然后使用php从数据库内获取数据并显示了。以下我将用具体代码加以说明。

protected function identify() //父类中的protected identify() 被覆写
{
print("I am Son.
n");
}
};

对于Resin,Tomcat,JWS等等,都可以运行通过。(出处:viphot.com)

  3、简单代码

$obj = new Son();
$obj->getSalutation(); //输出Hey! I am Son.
?>

  请详细阅读以下代码,自己调试运行一次,最好把它修改一次,加上自己的功能,比如搜索等等。

//注: 在子类中没有覆写getSalutation(),但实际上仍然存在一个getSalutation().这个类中的$salutation和identify()
//与Son子类的实例中的getSalutation()方法动态绑定,所以调用Son的实例的getSalutation()方法,
//将调用Son类中的成员salutation及identify(),而不是父类中的成员salutation及identify().

本文由网上十大正规赌博平台发布于正规赌博平台,转载请注明出处:JSP学习系列之五,0对象模型深度探索之绑定

关键词: NE电子游戏

上一篇:MVC的模板标签系统,生成静态页面的PHP类

下一篇:没有了