代码改变世界

11月10日表格细线与标签文件(tag文件)培训日记

2006-11-11 15:25  java ee spring  阅读(206)  评论(0编辑  收藏  举报

首先解决昨天遇到的表格细线的问题,在明白解决方案的原理之前,学员们要扭转观念:HTML的表格与我们通常看到的表格不一样,一个大框里面套各种小单元格。
<table>的border是指整个表格的外边框的宽度,但是,只有设置了border的值,内部单元格才有边框,且无论boder的值是多少,内部单元格的边框宽度总为1。
<table border=1 bordercolor=green bgcolor="red" cellspacing=10 cellpadding=5>
 <tr bgcolor="red"><td>a</td><td>b</td><td>c</td></tr>
 <tr bgcolor="red"><td>a</td><td>b</td><td>c</td></tr>
 <tr bgcolor="red"><td>a</td><td>b</td><td>c</td></tr>
</table>

<table border=10 bordercolor=green bgcolor="red" cellspacing=10 cellpadding=5>
 <tr bgcolor="red"><td>a</td><td>b</td><td>c</td></tr>
 <tr bgcolor="red"><td>a</td><td>b</td><td>c</td></tr>
 <tr bgcolor="red"><td>a</td><td>b</td><td>c</td></tr>
</table>

<table border=0 bordercolor=green bgcolor="red" cellspacing=10 cellpadding=5>
 <tr bgcolor="red"><td>a</td><td>b</td><td>c</td></tr>
 <tr bgcolor="red"><td>a</td><td>b</td><td>c</td></tr>
 <tr bgcolor="red"><td>a</td><td>b</td><td>c</td></tr>
</table>
下面的表格的内外边框的宽度都是1+1=2。因为cellspacing=0,相当于两个单元格的边框挨在一起。
<table border=1 bordercolor=green bgcolor="red" cellspacing=0 cellpadding=5>
 <tr bgcolor="red"><td>a</td><td>b</td><td>c</td></tr>
 <tr bgcolor="red"><td>a</td><td>b</td><td>c</td></tr>
 <tr bgcolor="red"><td>a</td><td>b</td><td>c</td></tr>
</table>
要想让表格的内外边框的宽度是1,按如下方式实现:
<table border=0 bgcolor="green" cellspacing=1 cellpadding=5>
 <tr bgcolor="red"><td>a</td><td>b</td><td>c</td></tr>
 <tr bgcolor="red"><td>a</td><td>b</td><td>c</td></tr>
 <tr bgcolor="red"><td>a</td><td>b</td><td>c</td></tr>
</table>
表格中嵌套表格的代码,且所有边界都显示为细线:
<table border=1 bordercolor=green bgcolor="green" cellspacing=0 cellpadding=0 style="border-collapse: collapse">
 <tr bgcolor="red"><td>
  <table border=1 bordercolor=green bgcolor="red" cellspacing=0 cellpadding=5 style="border-collapse: collapse" frame=void>
   <tr><td>AAA</td><td>BB</td></tr>
   <tr><td>CC</td><td>DD</td></tr>
  </table>
 </td><td>b</td><td>c</td></tr>
 <tr bgcolor="red"><td>a</td><td>b</td><td>c</td></tr>
 <tr bgcolor="red"><td>a</td><td>b</td><td>c</td></tr>
</table>

杨松实验:将边框的明色(bordercolorlight)或暗色(bordercolordark)设置为与背景颜色一样,也可以显示出较细的边框颜色。


接着回顾了一下昨天编写的文件上传组件的例子,根据例子中的代码为大家讲解了访问者(Visitor)设计模式:统计全班同学的总体重,
画了n个学生,再画一个Visitor对象,Visitor对象有个add(weight)方法,Student对象有个accept(Visitor)方法
accept(Visitor){Vistor.add(this.weight);}

接着为大家介绍一个了开发技巧:怎样在myclipse中修改Servlet程序后,不用重新部署到tomcat中,就可以用浏览器直接访问到修改后的Servlet程序。先采用配置<Context>元素的方式,然后用修改conf/context.xml文件的方式。

下午为大家讲解标签文件(tag文件),tag文件的工作原理,一些学员对tag文件的理解有些困难,我让他们简单地记住几个事情:1.jsp页面中的标签调用部分将被标签输出的结果所替代,2.标签可以向各种域范围中存储属性,JSP页面可以获得这些属性,标签体在执行时也可以获得这些属性,3.标签可以为JSP页面定义一些变量,并为通过域属性为这些变量赋值。

接着讲解了专用于tag文件的<%@ attribute %>和<%@ variable %>指令,讲解tag文件中的<jsp:doBody>标签的作用:jsp页面把标签体内容给了标签,标签是否输出标签体内容,这是标签的自由。讲课时先不调用<jsp:doBody>,将看到没有输出标签体的效果,接着调用<jsp:doBody>,将看到输出标签体的效果,再循环调用调用<jsp:doBody>,将看到标签体输出多次的效果。问题:那如何象简单标签那样修改标签体的内容后再输出呢?估计是用<jsp:invoke>。