1、学学网页,轻松下 关键字: mldn 李兴华 java 魔乐科技 oracle 紫色飞鸟 根据李兴华老师的说法,98 年时会弄个网页制作,可以挣到 5K 左右的, 结果互联网泡沫的发生,导致作网页的才 800 左右的工资,真是变化得惊人啊, 老师帮我们简单安排了两天的网页制作,现在把学到的东西粘上来,一起分享 下吧。 今天所讲的知识点 A 制作网页的工具与过程 B HTML 语言 C Dreamweaver 的使用:文本 D Dreamweaver 的使用:图片 E Dreamweaver 的使用:超链接 F Dreamweaver 的使用:表格 G Dreamweaver 的使用:表单 H
2、Dreamweaver 的使用:框架 I Dreamweaver 的使用:CSS 样式 我对知识点的分析 A 制作网页的工具与过程 一、制作网页的工具 Macromedia 公司提供了网页三剑客:Dreamweaver、Fireworks、Flash Dreamweaver 软件的作用是:HTML 文档的编辑器 Fireworks 软件的作用是:处理位图 Flash 软件的作用是:制作 flash 动画 当然,根据编写 HTML 文档的方式不同,可以选择的工具也不同: (1)直接手工编写,HTML 代码:用任一款文字编辑软件 例如:Windows 操作系统自带的记事本 Microsoft Of
3、fice Word EditPlus UltraEdit 等 (2)使用可视化的、专门的 HTML 编辑器 例如:Macromedia 公司的 Dreamweaver Microsoft 公司的 FrontPage (3)由 Web 服务器一方实时动态生成,主要指动态的网页中 常用的处理位图的工具有:Macromedia 公司的 Fireworks Adobe 公司的 Photoshop 常用的处理矢量图的工具有:Illustrator 二、制作网页的过程 1、制作效果图 使用工具:Fireworks 2、实现效果图 (1)分割效果图:Fireworks (2)合成网页:Dreamweaver
4、 三、自学制作网页 1、下载别人做好的网页 2、用下载的这些素材进行合成(Dreamweaver),和别人的源效果对比 3、按照别人的网页效果,绘制效果图(Fireworks/Photoshop) 4、分割自己的效果图(Fireworks) 5、再次合成自己的网页(Dreamweaver) B HTML 语言 一、示例 二、HTML 基本术语 1. HTML 标记(Tag)或者称为标签 2. HTML 元素(Element) 3. HTML 属性(Attribute) 说明: 标记和元素用于指示浏览器如何组织和显示文档。 属性用来告诉浏览器如何控制或显示元素内容。 (前后包夹型)标签 + 被控
5、制的内容 = 元素 一个元素中还可以包含另一组元素,整个 HTML 文件就像是一个大元素; 因为属性写在标签的括号里,所以有时也叫标签属性。 三、属性 属性值要用双引号引起来:属性= ”属性值 ” 属性值的数据类型有: 1. 长度值 长度用来定义元素在屏幕上显示的大小,如区域的宽度和高度,分为绝对值和 相对值两种: 绝对值:用像素定义,单位 px (pixel 的缩写) 相对值:用占用相对对象的百分比表示 2. 颜色值 颜色属性值分为十六进制值和颜色名称值两种表示方式。 颜色名称值格式:定义颜色的属性=“颜色的英文名称” 十六进制值格式:定义颜色的属性=“#RRGGBB” 例如: color=
6、“#A52A2A” 棕色 说明: (1)HTML 可以辨认日常最常用的 16 种颜色名字 black 黑色 white 白色 silver 银白色 gray 灰色 aqua 靛色/浅绿 色 red 红色 fuchsia 紫色 purple 深紫色 green 绿色 lime 深绿色 teal 蓝绿色 yellow 黄色 nary 海蓝色 blue 蓝色 olive 深黄色/橄榄色 maroom 深红色/栗色 作为补充,IE 和 Netscape Navigator 还可辨认 140 种标准颜色名称。 (2)根据色光相加原理,任何颜色都是由红(Red,R)、绿(Green,G)、蓝 (Blue,
7、B)三原色按一定比例合成。 RRGGBB:从前至后,每两位十六进制数字分别代表红、绿、蓝的颜色深度,相 当于它们各自在此颜色中所占的比重。颜色值可以取 00 到 FF 范围内的十六进 制数字,FF 对应的十进制数为 255,所以按照上面的方法可以定义多达 256*256*256 种。常用颜色的十六进制值: 3. URI 地址值 Web 上可用的每种资源 - HTML 文档、图像、视频片段、程序等-是相对独立存 在的,而要组合到一起都由 URI 进行定位实现超链接。它分为绝对定位和相对 定位。 绝对定位: 一般由三部分组成: (1)访问资源的命名机制,也就是网络应用层的协议种类; (2)存放资源
8、的主机名; (3)资源自身的名称,由路径表示; 注意:最后可能会有具体文件的锚定位。 例:一个完整的绝对 URI 定位 相对定位: 根据当前文件位置,按照文件系统路径对其他网页文件进行定位; 例如: 超链接的地址的属性值: (1) 为”googs.htm”,表示链接到当前文件所在目录中的”googs.htm”文 件; (2)为”/googs.htm”,表示链接到当前文件所在目录的上一层目录中的” googs.htm”文件; 扩充知识: 在 HTML 中,URI 被用来: 链接到另一个文档或资源(参看 A 和 LINK 元素)。 链接到一个外部样式表或脚本(参看 LINK 和 SCRIPT 元素
9、)。 在页内包含图像、对象或 applet(参看 IMAG、OBJECT、APPLET 和 INPUT 元素)。 建立图像映射(参看 MAP 和 AREA 元素)。 提交一个表单(参看 FORM)。 建立一个框架文档(参看 FRAME 和 IFRAME 元素)。 引用一个外部参考(参看 Q、BLOCKQUOTE, INS 和 DEL 元素)。 指向一个描述文档的 metadata(参看 HEAD 元素)。 URI、URL 和 URN 的区别与联系 四、HTML 标签 1、根据标签的的结构分类: (1)前后包夹型:标签成对出现 基本语法: 开始标签 - (被控制的文本) 结束标签 - (2)单枪
10、匹马型:此种类型的标签通常不是控制显示的形态,而是独立表达一 个特殊元素 基本语法: 例如:,表示换行; ,表示一条分割水平线; 为了使自己的网站能够符合 XHTML 标准 2、基本的结构标签 标签: 标签: 标签: 标签: 注释标签: 3、其他标签 五、HTML 语言规范 为了编写的 HTML 代码文档符合标准格式和规范,或者符合现在以及将来的 XHTML 语言规范,特提出以下几个注意事项: 1、空标签的写法 像这种单枪匹马型的标签没有元素,所以在 XHTML 中叫空标签; 我们为什么要把空标签写成而不是简简单单地写成呢? XHTML 有个规则:任何标签都需要“关闭” 我们把在起始标签的最后
11、添加“/“的方法叫做标签的自闭(或者自关闭、自终止 等) 2、不可省略的空格 3、大小写的规范 HTML 原来的各个版本对于标签、属性是不区分大小写的,但是为了符合 XHTML 标准,您应该养成良好的习惯,在制作网页的过程中所有标签、属性一律使用 小写。 4、标签的书写顺序 当出现双层甚至多层标签嵌套时,要按顺序关闭标签。 例: 我被两个标签包围啦 这几个字同时以粗体和斜体显示 - 如果写成 : 我被两个标签包围啦 一般的浏览器将不产生任何错误。 但是这不符合 XHTML 标准的写法。 5、属性值用双引号 IE 能够辨认双引号、单引号甚至没有单引号包含的属性值,但是从规范的角度 考虑,以后所有
12、的属性值都包含在双引号中。当属性代码里出现引号嵌套的情 况时: 两层:外层必须采用单引号,里层用双引号; 多层:单、双层交替使用。 6、给属性赋值 给所有属性值赋一个值,属性的缩写被禁止。 如: 错误的代码: 正确的代码: 7、注释中不要有 不要在注释内容中使用“-”,不然就无法区分。例如: 是错误的 8、特殊字符采用编码代替 标记占用了一些特定的符号,如果文本中也需要使用,只好替换:把所有 entrySet() 5、boolean equals(Object o) 6、V get(Object key) 7、int hashCode() 8、boolean isEmpty() 9、Set k
13、eySet() 10、V put(K key, V value) 11、void putAll(Map m) 12、V remove(Object key) 13、int size() 14、Collection values() 四、Map 接口的内部接口 Map.Entry 1、Map.Entry接口的定义:public static interface Map.Entry 2、Map.Entry接口的操作方法: (1)boolean equals(Object o) (2)K getKey() (3)V getValue() (4)int hashCode() (5)V setValue
14、(V value) 五、Map 接口的子接口 1、Map 接口的直接子接口 SortedMap SortedMap接口的定义:public interface SortedMapextends Map 2、Map 接口的间接子接口 NavigableMap NavigableMap接口的定义:public interface NavigableMapextends SortedMap 六、Map 接口的子类 Map 接口的子类:AbstractMap、HashMap、Hashtable、Properties 1、AbstractMap类的定义:public abstract class Abs
15、tractMapextends Object implements Map 2、HashMap类的定义:public class HashMapextends AbstractMapimplements Map, Cloneable, Serializable 3、Hashtable类的定义:public class Hashtableextends Dictionaryimplements Map, Cloneable, Serializable 其中 Dictionary类的定义如下:public abstract class Dictionaryextends Object 4、Prop
16、erties 类的定义:public class Properties extends Hashtable J HashMap 类 一、HashMap的定义 public class HashMapextends AbstractMapimplements Map, Cloneable, Serializable 二、HashMap类的操作方法(详见文档,应用时主要以 Map 接口的方法为 准) K TreeMap 类 一、TreeMap的定义 public class TreeMapextends AbstractMapimplements NavigableMap, Cloneable,
17、Serializable 二、TreeMap类的操作方法(详见文档,应用时主要以 Map 接口的方法为 准) 三、TreeMap类的特点 TreeMap 子类是允许 key 进行排序的操作子类,其本身在操作的时候将按照 key 进行排序,另外,key 中的内容可以为任意的对象,但是要求对象所在的类必 须实现 Comparable 接口。 L HashTable 类 一、Hashtable 的定义 public class Hashtableextends Dictionaryimplements Map, Cloneable, Serializable 其中 Dictionary类的定义如下:
18、public abstract class Dictionaryextends Object 二、Hashtable 类的操作方法(详见文档,应用时主要以 Map 接口的方法 为准) M Hashtable类和 HashMap类的区别 No. 区别点 HashMap Hastable 1 推出时间 JDK 1.2 之后推出的,新的操作类 JDK 1.0 时推出的,旧的操作类 2 性能 异步处理,性能较高 同步处理,性能较低 3 null 允许设置为 null 不允许设置,否则将出现空指向异常 N Map 集合的输出 步骤: 1、 使用 Map 接口中的 entrySet()方法将 Map 接口
19、的全部内容变为 Set 集合 2、 可以使用 Set 接口中定义的 iterator()方法为 Iterator 接口进行实例化 实例化方法:用 Set(继承 Collection 接口)的 public Iterator iterator()方法 3、 之后使用 Iterator 接口对象的方法进行迭代输出,每一次的迭代都可以取 得一个 Map.Entry 的实例 1、boolean hasNext() 2、E next() 4、 通过 Map.Entry 进行 key 和 value 的分离 Map.Entry 接口的分离方法: (1)K getKey() (2)V getValue()
20、O Properties 类 一、Properties 类的定义 public class Properties extends Hashtable 特点:擦除泛型 二、Properties 类的操作方法 1、String getProperty(String key) 2、String getProperty(String key, String defaultValue) 3、void list(PrintStream out) 4、void list(PrintWriter out) 5、void load(InputStream inStream) 6、void load(Reader
21、 reader) 7、void loadFromXML(InputStream in) 8、Enumeration propertyNames() 9、void save(OutputStream out, String comments) 10、Object setProperty(String key, String value) 11、void store(OutputStream out, String comments) 12、void store(Writer writer, String comments) 13、void storeToXML(OutputStream os,
22、String comment) 14、void storeToXML(OutputStream os, String comment, String encoding) 15、Set stringPropertyNames() P Collections 类 一、Collections 类的定义 public class Collections extends Object 从定义上此类和 Collection 接口无关 二、Collections 类的特点 此类的所有方法都是静态方法 项目案例 A 现在要求实现对一个超市商品的统一管理,可以进行商品的上架、下架、查 询的功能,问类该如何设计?
23、 个人收获: 宠物商店的类和接口的设计模式是一个典型的设计思路 能定义成接口和抽象类的就定义成接口 案例名称: A 解决方法: 画结构图 问题描述: 类集各个接口和类的继承、实现关系混乱? 备注: A 1、观察 AbstractList (class)类实现 List接口的方式 2、观察 ArrayList(class)类等继承 AbstractList (class)类并实现 List接口的方式 得出结论: 1、抽象类在实现接口的时候,可以不实现其全部的抽象方法,但是如果其子类 是具体的类,那么在实现方法的时候,还是需要将其父接口的在此抽象类中未 实现的方法一一实现 今天换了一种复习方式,把
24、所讲的类和接口的继承和实现关系整理了一下,这 样知识之间的关系就清晰了很多,而且区别和联系也明朗了许多。 下面是 Collection 接口的子接口或子类 imgimage002.jpg /img imgimage003.png /img 查看图片附件 19:02 浏览 (325) 评论 (0) 分类: MLDN 魔乐科技跟李兴华老师学 JAVA 记 2009-04-07 缩略显示 状态还要再好好调整一下,才能跟上李兴华老师的教学进度 关键字: mldn 李兴华 java 魔乐科技 oracle 紫色飞鸟 今天所讲的知识点 A 内存流 B 管道流 C 回退流 D System 类对 IO 的支
25、持 E 缓冲区读取 F Scanner 类 G 字符编码问题 我对知识点的分析 A 内存流 计算机中对于数据的输入输出其实都是相对于内存来说的:Out 是指从内存中 输出,In 是指读取数据到内存。 只不过之前的各种 IO 流是以程序为终端的,而内存流是以内存为终端的。 一、内存输入流:ByteArrayInputStream 构造方法:public ByteArrayInputStream(byte buf) 它是 InputStream 的直接子类。 二、内存输出流:ByteArrayOutputStream 构造方法:public ByteArrayOutputStream() 它是 O
26、utputStream 的直接子类。 三、操作方法 这两个类使用的方法基本都是从父类继承下来的。 ByteArrayInputStream 的操作方法: No. 方法名称 描述 1 public void close() throws IOException 关闭 2 public int read() 读取一个字节,如果为-1,表示读到尾了 3 public int read(byte b,int off,int len) 读取 len 个到 b(从内存输 入流指定的读取目标的 off 处开始读) ByteArrayOutputStream 的操作方法: No. 方法名称 描述 1 publ
27、ic String toString() 将此缓冲的输出流的内容以字符串返回 2 public void write(int b)throws IOException 将 b 的内容写入此缓冲的输 出流 3 public void write(byte b,int off,int len)throws IOException 将指 定 byte 数组中从偏移量 off 开始的 len 个字节写入此缓冲的输出流。 4 public void flush()throws IOException 刷新此缓冲的输出流 四、操作实例 package mldn.lin.Test; import java.
28、io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; public class Test public static void main(String args) String info=“MLDNJAVA-LINYAN“; /实例化内存的输入流对象,并指定从哪里读取内容到内存 ByteArrayInputStream byInput=new ByteArrayInputStream(info.getBytes(); /实例化内存的输出流对象 ByteArrayOut
29、putStream byOutput=new ByteArrayOutputStream(); int temp=0; while(temp=byInput.read()!=-1) / 将刚才读取的内容其大写字母变为小写字母 char c = Character.toLowerCase(char) temp); /将指定的内容写入内存的输出流 byOutput.write(c); try byInput.close(); byOutput.close(); catch (IOException e) e.printStackTrace(); /输出以检验内存输出流的内容是否是转换后的小写字母
30、System.out.println(byOutput);/打印 byOutput,会调用其 toString() B 管道流 在程序中进行两个线程对象间的通讯操作,称为管道流。 一、管道输出流:PipedOutputStream 它是 OutputStream 的直接子类。 构造方法:public PipedOutputStream() 二、管道输入流:PipedInputStream 它是 InputStream 的直接子类。 构造方法:public PipedInputStream() 三、操作方法 PipedInputStream 类的操作方法: public void connect
31、(PipedOutputStream src)throws IOException:连接管 道输出流 protected void receive(int b)throws IOException:接收数据 public int read()throws IOException:读取到管道输入流中 public int read(byte b,int off,int len)throws IOException:读取到管 道输入流中 public void close()throws IOException PipedOutputStream 类的操作方法: public void conne
32、ct(PipedInputStream snk)throws IOException:连接管道 输入流 public void write(int b)throws IOException public void write(byte b,int off,int len)throws IOException public void flush()throws IOException:刷新 public void close()throws IOException 四、示例代码:实现线程的双向通信 C 回退流 有选择的收取输入流中的内容,当从输入流中读取的内容不是自己需要的内容, 可以将其回退回
33、去,重新选择。 一、字节回退流:PushbackInputStream 构造方法:public PushbackInputStream(InputStream in) 二、字符回退流:PushbackReader 构造方法:public PushbackReader(Reader in) 三、操作方法 字节回退流和字符回退流的操作方法极其类似,都有如下方法: 1、public void unread(char/byte b) throws IOException 回退一组流 2、public void unread(char/byte b,int off,int len) throws IOE
34、xception 回退一组的部分流 3、public void unread(int b) throws IOException 回退一个流 4、public int read()throws IOException 5、public int read(char/byte cbuf,int off,int len)throws IOException 6、public void close()throws IOException 四、操作实例 package mldn.lin.Test; import java.io.ByteArrayInputStream; import java.io.P
35、ushbackInputStream; public class Test public static void main(String args) throws Exception String info = “123sbg45678“; /一会儿从中读取数字 ByteArrayInputStream bis = new ByteArrayInputStream(info.getBytes();/ 表示内存输入流 PushbackInputStream push = new PushbackInputStream(bis); / 实例化回 退流对象 int temp = 0; while (
36、temp = push.read() != -1) / 读取内容 if (!(temp=0 import java.io.File; public class FileDemo public static void main(String args) File file=new File(“d:“+File.separator); fun(file); public static void fun(File file) if(file.isFile() System.out.println(file); else File files=file.listFiles(); if(files!=n
37、ull)/为空表示该文件夹中没有内容或者隐藏不可见,如果不 判断,可能导致空指向异常 for(int i=0;i Object p.setY(20); / int Integer Object int x = (Integer) p.getX(); / 取出 x 坐标 int y = (Integer) p.getY();/ 取出 y 坐标 System.out.println(“x 的坐标是:“ + x); System.out.println(“y 的坐标是:“ + y); 2、存在安全漏洞 因为其类型是 Object 类型,所以能接受所有的数据类型的对象。这样在取出数 据的时候就不能确定
38、能发生的向下类型操作。 例如:前面传入的字符串,而后面取出的时候可能向下转成了 Integer,这样 就会发生和报告错误。 public static void main(String args) Point p = new Point(); p.setX(10); p.setY(“北纬度“);/此处不报错 int x = (Integer) p.getX(); / 取出 x 坐标 int y = (Integer) p.getY();/ 取出 y 坐标 不可以 System.out.println(“x 的坐标是:“ + x); System.out.println(“y 的坐标是:“ +
39、y); 如上的两个问题可以通过泛型技术得到解决。 B 泛型类 定义格式: class 类名称 即类中的数据类型,可以由外部实例化该类的对象的时候决定。 例如: public class Point / 表示坐标 private T x; / x 属性的类型由外部决定 private T y; / y 属性的类型由外部决定 public Point(T x, T y) /构造方法的参数类型也使用了泛型 this.setX(x); this.setY(y); public T getX() return x; public void setX(T x) this.x = x; public T g
40、etY() return y; public void setY(T y) this.y = y; - public static void main(String args) Point p = new Point(10, 20); int x = p.getX(); / 取出 x 坐标 int y = p.getY();/ 取出 y 坐标 System.out.println(“x 的坐标是:“ + x); System.out.println(“y 的坐标是:“ + y); C 擦除泛型 如果一个类定义的时候使用了泛型,但是在使用该类的时候没有指定泛型的话, 则表示擦除泛型。 泛型一旦擦
41、出之后,将按照 Object 进行接收,以保证程序不出现任何的错误。 例如: public static void main(String args) Point p = new Point(10, 20);/此处未指定泛型的具体类型,将按照 Object 进行接收 int x = (Integer) p.getX(); / 取出 x 坐标 int y = (Integer) p.getY();/ 取出 y 坐标 System.out.println(“x 的坐标是:“ + x); System.out.println(“y 的坐标是:“ + y); D 通配符? 泛型类,在使用的时候,指定
42、Integer 时和 Object 类型两个对象不存在可以转 型的关系。 例如: Point p1 = new Point(); Point p2 = new Point() ; p1 = p2 ; / 此时无法转换 那么这个局限,在设置方法参数的时候就导致了很大的麻烦! 例如由此方法的定义: public static void fun(Point po) /如果此处不指定 Point 的泛型,则虽 然可以接受任意类型的对象,但是是按照泛型擦除处理的,即以 Object 处理, 又回到了原来没有泛型的问题上 public static void fun(Point po) /如果此处指定 P
43、oint 的泛 型,则又导致只能接受所指定的类型的对象,其他类型的对象就不可以 例如:public static void fun(Point po) ,则此方法 p2 能调 用,p1 就不能调用 所以需要采用通配符? “?”表示的是可以接收任意的泛型类型 例如:public static void fun(Point po) ,这样可以接受任意类型的 对象 但是只是接收输出,并不能修改 例如: public static void fun(Point po) / 表示,此时可以接收任意的类型 po.setX(“aa”);/错误,不能修改,因为无法确定其传入的对象的 类型到底是什么,此处指定其
44、 setX()参数为字符串类型,太绝对了 System.out.println(po.getX(); System.out.println(po.getY(); E 泛型上限和泛型下限 1、泛型上限 上限就指一个操作泛型其最大的操作父类 设置型的上限语法:,表示泛型 T 只能是此处指定的类型 或者其子类,而不可超越此类,即不能指定其他类或者其父类。例如:现在最 大的上限设置成“Number”类型,那么此时,所能够接收到的类型只能是 Number 及其子类(Integer)。 public class Point / 表示坐标,最高只能是 Number . 以上的泛型类型明确的指出,最大的操作父
45、类是 Number,能设置的内容只能是 其子类 Integer、Float 等等。 2、泛型下限 泛型的下限指的是只能设置其具体的类或者父类。 设置的语法如下: 例如:现在下限设置成“Number”类型,那么此时,所能够接收到的类型只能 是 Number 或其父类。 F 泛型接口 定义格式:interface 接口名称 例如: public interface Demo / 定义泛型接口 public void print(T param);/ 此抽象方法中使用了泛型类型 实现接口的方法: 1、在实现接口的类上继续标记泛型 public class DemoImpl1 implements D
46、emo public void print(T param) System.out.println(“param = “ + param); - public static void main(String args) Demo demo = new DemoImpl1() ; demo.print(“hello“) ; 2、实现接口的时候指定具体的类型 public class DemoImpl2 implements Demo / 设置具体类型 public void print(DemoImpl2 param) System.out.println(“param = “ + param)
47、; 因为此处指定的类型为 DemoImpl2,其本身,所以此处不需要在类名后面指定,如果此处指定的是其他类型,则还需要在类名后面加上 public static void main(String args) Demo demo = new DemoImpl2() ; demo.print(new DemoImpl2() ; G 泛型方法 在方法上使用泛型,此方法所在的类不一定是泛型的操作类 权限修饰符 返回值类型 print(参数列表) 方法的返回值类型及其中的变量的数据类型都可以用该泛型指定。 一般其中参数都有一个是泛型指定的,那么在调用该方法的时候,根据所传递 的实参的数据类型来决定该泛型
48、的具体类型。 例如: class Demo public T print(T param) / 定义泛型方法 return param ; public class GenDemo17 public static void main(String args) Demo d = new Demo() ; System.out.println(d.print(1); / 如果输入表示类型是 Integer - - public class GenDemo18 public static void main(String args) Integer i = fun(1, 2, 3, 4, 5, 6, 7, 8, 9); for (int x : i) System.out.println(x); public static T fun(T. param) return param; / 返回数组 H 泛型的嵌套设置 当一个类是泛