﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-Welcome 布拉格</title><link>http://www.blogjava.net/coacoa2008/</link><description> </description><language>zh-cn</language><lastBuildDate>Tue, 28 Apr 2026 14:31:13 GMT</lastBuildDate><pubDate>Tue, 28 Apr 2026 14:31:13 GMT</pubDate><ttl>60</ttl><item><title>randomCharImg.jsp</title><link>http://www.blogjava.net/coacoa2008/archive/2007/10/09/151448.html</link><dc:creator>Welcome</dc:creator><author>Welcome</author><pubDate>Tue, 09 Oct 2007 08:41:00 GMT</pubDate><guid>http://www.blogjava.net/coacoa2008/archive/2007/10/09/151448.html</guid><wfw:comment>http://www.blogjava.net/coacoa2008/comments/151448.html</wfw:comment><comments>http://www.blogjava.net/coacoa2008/archive/2007/10/09/151448.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/coacoa2008/comments/commentRss/151448.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/coacoa2008/services/trackbacks/151448.html</trackback:ping><description><![CDATA[
		<p>&lt;%@ page contentType="image/jpeg" import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*" pageEncoding="UTF-8"%&gt;&lt;%!<br />Color getRandColor(int fc,int bc){//给定范围获得随机颜色<br />Random random = new Random();<br />if(fc&gt;255) fc=255;<br />if(bc&gt;255) bc=255;<br />int r=fc+random.nextInt(bc-fc);<br />int g=fc+random.nextInt(bc-fc);<br />int b=fc+random.nextInt(bc-fc);<br />return new Color(r,g,b);<br />}<br />%&gt;&lt;%<br />//设置页面不缓存<br />response.setHeader("Pragma","No-cache");<br />response.setHeader("Cache-Control","no-cache");<br />response.setDateHeader("Expires", 0);</p>
		<p>// 在内存中创建图象<br />int width=60, height=20;<br />BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);</p>
		<p>// 获取图形上下文<br />Graphics g = image.getGraphics();</p>
		<p>//生成随机类<br />Random random = new Random();</p>
		<p>// 设定背景色<br />g.setColor(getRandColor(200,250));<br />g.fillRect(0, 0, width, height);</p>
		<p>//设定字体<br />g.setFont(new Font("Times New Roman",Font.PLAIN,18));</p>
		<p>//画边框<br />g.setColor(new Color(255,255,255));<br />g.drawRect(0,0,width-1,height-1);</p>
		<p>// 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到<br />g.setColor(getRandColor(160,200));<br />for (int i=0;i&lt;155;i++)<br />{<br />int x = random.nextInt(width);<br />int y = random.nextInt(height);<br />int xl = random.nextInt(12);<br />int yl = random.nextInt(12);<br />g.drawLine(x,y,x+xl,y+yl);<br />}</p>
		<p>// 取随机产生的认证码(4位数字)<br />String sRand="";<br />for (int i=0;i&lt;4;i++){<br />String rand=String.valueOf(random.nextInt(10));<br />sRand+=rand;<br />// 将认证码显示到图象中<br />g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));<br />//调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成<br />g.drawString(rand,13*i+6,16);<br />}</p>
		<p>// 将认证码存入SESSION<br />session.setAttribute("randomChar",sRand);</p>
		<p>// 图象生效<br />g.dispose();</p>
		<p>// 输出图象到页面<br />ImageIO.write(image, "JPEG", response.getOutputStream());</p>
		<p>%&gt;</p>
<img src ="http://www.blogjava.net/coacoa2008/aggbug/151448.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/coacoa2008/" target="_blank">Welcome</a> 2007-10-09 16:41 <a href="http://www.blogjava.net/coacoa2008/archive/2007/10/09/151448.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java.util.regex</title><link>http://www.blogjava.net/coacoa2008/archive/2007/09/29/149661.html</link><dc:creator>Welcome</dc:creator><author>Welcome</author><pubDate>Sat, 29 Sep 2007 10:42:00 GMT</pubDate><guid>http://www.blogjava.net/coacoa2008/archive/2007/09/29/149661.html</guid><wfw:comment>http://www.blogjava.net/coacoa2008/comments/149661.html</wfw:comment><comments>http://www.blogjava.net/coacoa2008/archive/2007/09/29/149661.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/coacoa2008/comments/commentRss/149661.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/coacoa2008/services/trackbacks/149661.html</trackback:ping><description><![CDATA[现在JDK1.4里终于有了自己的正则表达式API包，JAVA程序员可以免去找第三方提供的正则表达式库的周折了，我们现在就马上来了解一下这个SUN提供的迟来恩物- -对我来说确实如此。 <br />1.简介：  <br />java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包。 <br /><br />它包括两个类：<font color="#ff1493">Pattern和Matcher Pattern</font> 一个Pattern是一个正则表达式经<font color="#0000ff">编译后的表现模式</font>。  <br />Matcher 一个Matcher对象是一个<font color="#000080">状态机器</font>，它依据Pattern对象做为匹配模式对字符串展开匹配检查。 首先一个Pattern实例订制了一个所用语法与PERL的类似的正则表达式经编译后的模式，然后一个Matcher实例在这个给定的Pattern实例的模式控制下进行字符串的匹配工作。 <br /><br />以下我们就分别来看看这两个类： <br /><br /><font color="#ff1493">2.Pattern类:</font>  <br />Pattern的方法如下： <font color="#ff1493">static Pattern compile(String regex) <br /></font>将给定的正则表达式编译并赋予给Pattern类  <br />static Pattern compile(String regex, int flags) <br />同上，但增加flag参数的指定，可选的flag参数包括：CASE INSENSITIVE,MULTILINE,DOTALL,UNICODE CASE， CANON EQ  <br />int flags() <br />返回当前Pattern的匹配flag参数.  <br /><font color="#ff1493">Matcher matcher(CharSequence input)</font> <br />生成一个给定命名的Matcher对象  <br />static boolean matches(String regex, CharSequence input) <br />编译给定的正则表达式并且对输入的字串以该正则表达式为模开展匹配,该方法适合于该正则表达式只会使用一次的情况，也就是只进行一次匹配工作，因为这种情况下并不需要生成一个Matcher实例。   <br />String pattern() <br />返回该Patter对象所编译的正则表达式。  <br />String[] split(CharSequence input) <br />将目标字符串按照Pattern里所包含的正则表达式为模进行分割。  <br />String[] split(CharSequence input, int limit) <br />作用同上，增加参数limit目的在于要指定分割的段数，如将limi设为2，那么目标字符串将根据正则表达式分为割为两段。  <br /><br /><br />一个正则表达式，也就是一串有特定意义的字符，必须首先要编译成为一个Pattern类的实例，这个Pattern对象将会使用matcher()方法来生成一个Matcher实例，接着便可以使用该 Matcher实例以编译的正则表达式为基础对目标字符串进行匹配工作，多个Matcher是可以共用一个Pattern对象的。 <br /><br />现在我们先来看一个简单的例子，再通过分析它来了解怎样生成一个Pattern对象并且编译一个正则表达式，最后根据这个正则表达式将目标字符串进行分割：  <br />import java.util.regex.*; <br />public class Replacement{ <br />      public static void main(String[] args) throws Exception { <br />        // 生成一个Pattern,同时编译一个正则表达式 <br />        Pattern p = Pattern.compile("[/]+"); <br />        //用Pattern的split()方法把字符串按"/"分割 <br />        String[] result = p.split( <br />"Kevin has seen《LEON》seveal times,because it is a good film." <br />+"/ 凯文已经看过《这个杀手不太冷》几次了，因为它是一部" <br />+"好电影。/名词:凯文。"); <br />        for (int i=0; i&lt;result.length; i++) <br />System.out.println(result[i]); <br />} <br />} <br /><br /><br /><br /><br />输出结果为： <br /><br />Kevin has seen《LEON》seveal times,because it is a good film. <br />凯文已经看过《这个杀手不太冷》几次了，因为它是一部好电影。 <br />名词:凯文。 <br /><br />很明显，该程序将字符串按"/"进行了分段，我们以下再使用<font color="#800080"> split(CharSequence input, int limit)方法来指定分段的段数</font>，程序改动为： <br />tring[] result = p.split("Kevin has seen《LEON》seveal times,because it is a good film./ 凯文已经看过《这个杀手不太冷》几次了，因为它是一部好电影。/名词:凯文。"，2); <br /><br />这里面的参数"2"表明将目标语句分为两段。 <br /><br />输出结果则为： <br /><br />Kevin has seen《LEON》seveal times,because it is a good film. <br />凯文已经看过《这个杀手不太冷》几次了，因为它是一部好电影。/名词:凯文。 <br /><br />由上面的例子，我们可以比较出java.util.regex包在构造Pattern对象以及编译指定的正则表达式的实现手法与我们在上一篇中所介绍的Jakarta-ORO 包在完成同样工作时的差别，Jakarta-ORO 包要先构造一个PatternCompiler类对象接着生成一个Pattern对象，再将正则表达式用该PatternCompiler类的compile()方法来将所需的正则表达式编译赋予Pattern类： <br /><br />PatternCompiler orocom=new Perl5Compiler(); <br /><br />Pattern pattern=orocom.compile("REGULAR EXPRESSIONS"); <br /><br />PatternMatcher matcher=new Perl5Matcher(); <br /><br />但是在java.util.regex包里，我们仅需生成一个Pattern类，直接使用它的compile()方法就可以达到同样的效果: <br />Pattern p = Pattern.compile("[/]+"); <br /><br />因此似乎java.util.regex的构造法比Jakarta-ORO更为简洁并容易理解。 <br /><br />3.Matcher类: <br />Matcher方法如下： Matcher appendReplacement(StringBuffer sb, String replacement) <br />将当前匹配子串替换为指定字符串，并且将替换后的子串以及其之前到上次匹配子串之后的字符串段添加到一个StringBuffer对象里。 <br />StringBuffer appendTail(StringBuffer sb) <br />将最后一次匹配工作后剩余的字符串添加到一个StringBuffer对象里。 <br />int end() <br />返回当前匹配的子串的最后一个字符在原目标字符串中的索引位置 。 <br />int end(int group) <br />返回与匹配模式里指定的组相匹配的子串最后一个字符的位置。 <br />boolean find() <br />尝试在目标字符串里查找下一个匹配子串。 <br />boolean find(int start) <br />重设Matcher对象，并且尝试在目标字符串里从指定的位置开始查找下一个匹配的子串。 <br />String group() <br />返回当前查找而获得的与组匹配的所有子串内容 <br />String group(int group) <br />返回当前查找而获得的与指定的组匹配的子串内容 <br />int groupCount() <br />返回当前查找所获得的匹配组的数量。 <br />boolean lookingAt() <br />检测目标字符串是否以匹配的子串起始。 <br />boolean matches() <br />尝试对整个目标字符展开匹配检测，也就是只有整个目标字符串完全匹配时才返回真值。 <br />Pattern pattern() <br />返回该Matcher对象的现有匹配模式，也就是对应的Pattern 对象。 <br />String replaceAll(String replacement) <br />将目标字符串里与既有模式相匹配的子串全部替换为指定的字符串。 <br />String replaceFirst(String replacement) <br />将目标字符串里第一个与既有模式相匹配的子串替换为指定的字符串。 <br />Matcher reset() <br />重设该Matcher对象。 <br />Matcher reset(CharSequence input) <br />重设该Matcher对象并且指定一个新的目标字符串。 <br />int start() <br />返回当前查找所获子串的开始字符在原目标字符串中的位置。 <br />int start(int group) <br />返回当前查找所获得的和指定组匹配的子串的第一个字符在原目标字符串中的位置。 <br /><br /><br />（光看方法的解释是不是很不好理解？不要急，待会结合例子就比较容易明白了） <br /><br />一个Matcher实例是被用来对目标字符串进行基于既有模式（也就是一个给定的Pattern所编译的正则表达式）进行匹配查找的，所有往Matcher的输入都是通过CharSequence接口提供的，这样做的目的在于可以支持对从多元化的数据源所提供的数据进行匹配工作。 <br /><br />我们分别来看看各方法的使用： <br /><br />★matches()/lookingAt ()/find()： <br />一个Matcher对象是由一个Pattern对象调用其matcher()方法而生成的，一旦该Matcher对象生成,它就可以进行三种不同的匹配查找操作： <br /><br />matches()方法尝试对整个目标字符展开匹配检测，也就是只有整个目标字符串完全匹配时才返回真值。 <br />lookingAt ()方法将检测目标字符串是否以匹配的子串起始。 <br />find()方法尝试在目标字符串里查找下一个匹配子串。 <br /><br />以上三个方法都将返回一个布尔值来表明成功与否。 <br /><br />★replaceAll ()/appendReplacement()/appendTail()： <br />Matcher类同时提供了四个将匹配子串替换成指定字符串的方法： <br /><br />replaceAll() <br />replaceFirst() <br />appendReplacement() <br />appendTail() <br /><br />replaceAll()与replaceFirst()的用法都比较简单，请看上面方法的解释。我们主要重点了解一下appendReplacement()和appendTail()方法。 <br /><br />appendReplacement(StringBuffer sb, String replacement) 将当前匹配子串替换为指定字符串，并且将替换后的子串以及其之前到上次匹配子串之后的字符串段添加到一个StringBuffer对象里，而appendTail(StringBuffer sb) 方法则将最后一次匹配工作后剩余的字符串添加到一个StringBuffer对象里。 <br /><br />例如，有字符串fatcatfatcatfat,假设既有正则表达式模式为"cat"，第一次匹配后调用appendReplacement(sb,"dog"),那么这时StringBuffer sb的内容为fatdog，也就是fatcat中的cat被替换为dog并且与匹配子串前的内容加到sb里，而第二次匹配后调用appendReplacement(sb,"dog")，那么sb的内容就变为fatdogfatdog，如果最后再调用一次appendTail（sb）,那么sb最终的内容将是fatdogfatdogfat。 <br /><br />还是有点模糊？那么我们来看个简单的程序： <br /><font color="#ff1493">//该例将把句子里的"Kelvin"改为"Kevin" <br /></font>import java.util.regex.*; <br />public class MatcherTest{ <br />public static void main(String[] args) <br />throws Exception { <br />//生成Pattern对象并且编译一个简单的正则表达式"Kelvin" <br />Pattern p = Pattern.compile("Kevin"); <br />//用Pattern类的matcher()方法生成一个Matcher对象 <br />Matcher m = p.matcher("Kelvin Li and Kelvin Chan are both working in Kelvin Chen's KelvinSoftShop company"); <br />StringBuffer sb = new StringBuffer(); <br />int i=0; <br />//使用find()方法查找第一个匹配的对象 <br />boolean result = m.find(); <br />//使用循环将句子里所有的kelvin找出并替换再将内容加到sb里 <br />while(result) { <br />i++; <br />m.appendReplacement(sb, "Kevin"); <br />System.out.println("第"+i+"次匹配后sb的内容是："+sb); <br />//继续查找下一个匹配对象 <br />result = m.find(); <br />} <br />//最后调用appendTail()方法将最后一次匹配后的剩余字符串加到sb里； <br />m.appendTail(sb); <br />System.out.println("调用m.appendTail(sb)后sb的最终内容是:"+ sb.toString()); <br />} <br />} <br /><br /><br /><br />最终输出结果为： <br />第1次匹配后sb的内容是：Kevin <br />第2次匹配后sb的内容是：Kevin Li and Kevin <br />第3次匹配后sb的内容是：Kevin Li and Kevin Chan are both working in Kevin <br />第4次匹配后sb的内容是：Kevin Li and Kevin Chan are both working in Kevin Chen's Kevin <br />调用m.appendTail(sb)后sb的最终内容是：Kevin Li and Kevin Chan are both working in Kevin Chen's KevinSoftShop company. <br /><br />看了上面这个例程是否对appendReplacement()，appendTail()两个方法的使用更清楚呢，如果还是不太肯定最好自己动手写几行代码测试一下。 <br /><br />★group()/group(int group)/groupCount()： <br />该系列方法与我们在上篇介绍的Jakarta-ORO中的MatchResult .group()方法类似(有关Jakarta-ORO请参考上篇的内容)，都是要返回与组匹配的子串内容，下面代码将很好解释其用法： <br />import java.util.regex.*; <br /><br />public class GroupTest{ <br />public static void main(String[] args) <br />throws Exception { <br />Pattern p = Pattern.<font color="#ff1493">compile</font>("(ca)(t)"); <br />Matcher m = p.matcher("one cat,two cats in the yard"); <br />StringBuffer sb = new <font color="#ff1493">StringBuffer</font>(); <br />boolean result = m.<font color="#ff1493">find(); <br /></font>System.out.println("该次查找获得匹配组的数量为："+m.<font color="#ff1493">groupCount());</font> <br />for(int i=1;i&lt;=m.groupCount();i++){ <br />System.out.println("第"+i+"组的子串内容为： "+<font color="#ff1493">m.group(i)); <br /></font>} <br />} <br />} <br /><br /><br /><br />输出为： <br />该次查找获得匹配组的数量为：2 <br />第1组的子串内容为：ca <br />第2组的子串内容为：t <br /><br />Matcher对象的其他方法因比较好理解且由于篇幅有限，请读者自己编程验证。 <br /><br /><font color="#ff1493">4．一个检验Email地址的小程序：</font> <br />最后我们来看一个检验Email地址的例程，该程序是用来检验一个输入的EMAIL地址里所包含的字符是否合法，虽然这不是一个完整的EMAIL地址检验程序，它不能检验所有可能出现的情况，但在必要时您可以在其基础上增加所需功能。 <br />import java.util.regex.*; <br />public class Email { <br />public static void main(String[] args) throws Exception { <br />String input = args[0]; <br />//检测输入的EMAIL地址是否以 非法符号"."或"@"作为起始字符 <br />Pattern p = Pattern.compile("^\\.|^\\@"); <br />Matcher m = p.matcher(input); <br />if (m.find()){ <br />System.err.println("EMAIL地址不能以'.'或'@'作为起始字符"); <br />} <br />//检测是否以"www."为起始 <br />p = Pattern.compile("^www\\."); <br />m = p.matcher(input); <br />if (m.find()) { <br />System.out.println("EMAIL地址不能以'www.'起始"); <br />} <br />//检测是否包含非法字符 <br />p = Pattern.compile("[^A-Za-z0-9\\.\\@_\\-~#]+"); <br />m = p.matcher(input); <br />StringBuffer sb = new StringBuffer(); <br />boolean result = m.find(); <br />boolean deletedIllegalChars = false; <br />while(result) { <br />//如果找到了非法字符那么就设下标记 <br />deletedIllegalChars = true; <br />//如果里面包含非法字符如冒号双引号等，那么就把他们消去，加到SB里面 <br />m.appendReplacement(sb, ""); <br />result = m.find(); <br />} <br />m.appendTail(sb); <br />input = sb.toString(); <br />if (deletedIllegalChars) { <br />System.out.println("输入的EMAIL地址里包含有冒号、逗号等非法字符，请修改"); <br />System.out.println("您现在的输入为: "+args[0]); <br />System.out.println("修改后合法的地址应类似: "+input); <br />} <br />} <br />} <br /><br /><br /><br />例如，我们在命令行输入：java Email www.kevin@163.net <br /><br />那么输出结果将会是：EMAIL地址不能以'www.'起始 <br /><br />如果输入的EMAIL为@kevin@163.net <br /><br />则输出为：EMAIL地址不能以'.'或'@'作为起始字符 <br /><br />当输入为：cgjmail#$%@163.net <br /><br />那么输出就是： <br /><br />输入的EMAIL地址里包含有冒号、逗号等非法字符，请修改 <br />您现在的输入为: cgjmail#$%@163.net <br />修改后合法的地址应类似: cgjmail@163.net <br /><br />5．总结： <br />本文介绍了jdk1.4.0-beta3里正则表达式库--java.util.regex中的类以及其方法，如果结合与上一篇中所介绍的Jakarta-ORO API作比较，读者会更容易掌握该API的使用，当然该库的性能将在未来的日子里不断扩展，希望获得最新信息的读者最好到及时到SUN的网站去了解。 <br /><br />6．结束语： <br />本来计划再多写一篇介绍一下需付费的正则表达式库中较具代表性的作品，但觉得既然有了免费且优秀的正则表达式库可以使用，何必还要去找需付费的呢，相信很多读者也是这么想的:，所以有兴趣了解更多其他的第三方正则表达式库的朋友可以自己到网上查找或者到我在参考资料里提供的网址去看看。 <br /><br />参考资料 <br /><br />java.util.regex的帮助文档 <br />Dana Nourie 和Mike McCloskey所写的Regular Expressions and the Java™ Programming Language <br />需要更多的第三方正则表达式资源以及基于它们所开发的应用程序请看<a href="http://www.meurrens.org/ip-Links/java/regex/index.html">http://www.meurrens.org/ip-Links/java/regex/index.html</a> <br /><br /><p>Java's java.util.regex 包包括：Pattern类、Matcher类、MatchResult接口和PatternSyntaxException异常：</p><ul><li>Pattern 对象代表了编译了的正则表达式（A compiled representation of a regular expression.）。 
</li><li>Matcher ，An engine that performs match operations on a <a href="/jdk150/api/java/lang/CharSequence.html"><code></code><font color="#366900">character sequence<code></code></font></a> by interpreting a <a href="/jdk150/api/java/util/regex/Pattern.html"><code><font color="#366900">Pattern</font></code></a>. 
</li><li>MatchResult接口：The result of a match operation. 
</li><li>PatternSyntaxException对象，描述非法的regex patterns，Unchecked exception thrown to indicate a syntax error in a regular-expression pattern.</li></ul><p> 同时还需要了解是CharSequence，JDK 1.4定义的新的接口，它提供了String和StringBuffer这两个类的字符序列的抽象</p><blockquote><pre>interface CharSequence {<br />  charAt(int i);<br />  length();<br />  subSequence(int start, int end);<br />  toString();<br />}</pre></blockquote><p>为了实现这个新的CharSequence接口，String，StringBuffer以及CharBuffer都作了修改，很多的正则表达式的操作都要拿CharSequence作参数。 
</p><p></p><h2>Matcher类的几个重要的方法：</h2><ul><li>boolean matches()：Pattern匹配整个字符串 
</li><li>boolean lookingAt()：Pattern匹配字符串的开头 
</li><li>boolean find()：发现CharSequence里的，与pattern相匹配的多个字符序列<br />boolean find(int start)：告诉方法从参数start位置开始查找</li></ul><h2>group的概念</h2><p>Group是指里用括号括起来的，能被后面的表达式调用的正则表达式。</p><p>Group 0 表示整个表达式，group 1表示第一个被括起来的group，以此类推。所以； 
</p><blockquote><pre>A(B(C))D</pre></blockquote><p>里面有三个group：group 0是ABCD， group 1是BC，group 2是C。 
</p><p>你可以用下述Matcher方法来使用group： 
</p><ul><li>public int groupCount( )返回matcher对象中的group的数目。不包括group0。 
</li><li>public String group( ) 返回上次匹配操作(比方说find( ))的group 0(整个匹配) 
</li><li>public String group(int i)返回上次匹配操作的某个group。如果匹配成功，但是没能找到group，则返回null。 
</li><li>public int start(int group)返回上次匹配所找到的group的开始位置。 
</li><li>public int end(int group)返回上次匹配所找到的group的结束位置，最后一个字符的下标加一。 
</li><li>split( ) 是指将以正则表达式为界，将字符串分割成String数组,如果带有limit参数，split( )会限定分割的次数。 
</li><li>replaceFirst(String replacement)将字符串里，第一个与模式相匹配的子串替换成replacement。 
</li><li>replaceAll(String replacement)，将输入字符串里所有与模式相匹配的子串全部替换成replacement。 
</li><li>appendReplacement(StringBuffer sbuf, String replacement)对sbuf进行逐次替换，而不是像replaceFirst( )或replaceAll( )那样，只替换第一个或全部子串。这是个非常重要的方法，因为replacement(replaceFirst( )和replaceAll( )只允许用固定的字符串来充当replacement)。有了这个方法，你就可以编程区分group，从而实现更强大的替换功能。 
</li><li>调用完appendReplacement( )之后，为了把剩余的字符串拷贝回去，必须调用appendTail(StringBuffer sbuf, String replacement)。 </li></ul><p> </p><p>使用group可以做到逐步缩小匹配的范围，直至精确匹配的目的。 </p><p>start( )和end( )：如果匹配成功，start( )会返回此次匹配的开始位置，end( )会返回此次匹配的结束位置，即最后一个字符的下标加一。如果之前的匹配不成功(或者没匹配)，那么无论是调用start( )还是end( )，都会引发一个IllegalStateException。</p><p></p><h1>二、4大使用方法：</h1><h2><strong>查询</strong></h2><p>String str="abc efg ABC"; 
</p><p></p>String regEx="a|f"; //表示a或f 
<p></p>Pattern p=Pattern.compile(regEx); 
<p></p>Matcher m=p.matcher(str); 
<p></p>boolean rs=m.find(); 
<p></p>如果str中有regEx，那么rs为true，否则为flase。如果想在查找时忽略大小写，则可以写成Pattern p=Pattern.compile(regEx,Pattern.CASE_INSENSITIVE); 
<p></p><strong></strong><p></p><h2><strong>提取</strong></h2><strong></strong><p>String regEx=".+\(.+)$"; 
</p><p></p>String str="c:\dir1\dir2\name.txt"; 
<p></p>Pattern p=Pattern.compile(regEx); 
<p></p>Matcher m=p.matcher(str); 
<p></p>boolean rs=m.find(); 
<p></p>for(int i=1;i&lt;=m.groupCount();i++){ 
<p></p>System.out.println(m.group(i)); 
<p></p>} 
<p></p>以上的执行结果为name.txt，提取的字符串储存在m.group(i)中，其中i最大值为m.groupCount(); 
<p></p><h2></h2><p><strong></strong> </p><h2><strong>分割</strong></h2><p><strong></strong></p><p></p>String regEx="::"; 
<p></p>Pattern p=Pattern.compile(regEx); 
<p></p>String[] r=p.split("xd::abc::cde"); 
<p></p>执行后，r就是{"xd","abc","cde"}，其实分割时还有跟简单的方法： 
<p></p>String str="xd::abc::cde"; 
<p></p>String[] r=str.split("::"); 
<p></p><p> </p><h2><strong><strong>替换或者删除</strong></strong></h2><p>String regEx="a+"; //表示一个或多个a 
</p><p></p>Pattern p=Pattern.compile(regEx); 
<p></p>Matcher m=p.matcher("aaabbced a ccdeaa"); 
<p></p>String s=m.replaceAll("A"); 
<p></p>　　结果为"Abbced A ccdeA" 
<p></p>　　如果写成空串，既可达到删除的功能，比如： 
<p></p>String s=m.replaceAll(""); 
<p></p>　　结果为"bbced ccde" 
<p></p><p> </p><h1>三、一个实际的例子</h1><p>下面的函数是一个实际应用的例子，需求是需要将抓取的网页中的&lt;img src=''http://aa.bb.cc.com/images/**.jpg"&gt; 中的地址，保存到一个地址列表中（以供抓取图片使用），并将绝对地址替换成本地的相对地址，即&lt;img src="images/**.jpg"&gt;。</p><p>public static Map&lt;String, String&gt; getImagesURL(String description) { 
</p><p>      Map&lt;String, String&gt; map = new HashMap&lt;String, String&gt;();<br />        // img 的正则表达式:匹配&lt;img&gt;标签       <br />        String imgPattern = "&lt;\\s*img\\s+([^&gt;]+)\\s*&gt;";<br />        Pattern pattern1 = Pattern.compile(imgPattern, Pattern.CASE_INSENSITIVE);<br />        Matcher matcher = pattern1.matcher(description); 
</p><p>        // img src元素的正则表达式：匹配img标签内的src属性<br />        String srcPattern = "\\s*src\\s*=\\s*\"([^\"]+)\\s*\"";<br />        Pattern pattern2 = Pattern.compile(srcPattern, Pattern.CASE_INSENSITIVE); 
</p><p>        while (matcher.find()) {</p><p>           //group()返回符合表达式的内容<br />            Matcher matcher2 = pattern2 .matcher(matcher.group());<br />            // 一定要find(),这是实际的匹配动作<br />            if (matcher2.find()) {<br />                String src = matcher2.group();<br />                log.info(src);<br />                int i2 = src.lastIndexOf('/');<br />                int i1 = src.indexOf("http");<br />                if (i1 != -1) {<br />                    map.put(src.substring(i2 + 1, src.length() - 1), src<br />                            .substring(i1, src.length() - 1));<br />                }<br />            }<br />        }<br />        log.debug("图片：" + map);<br />        return map;<br />    }</p><p> </p><p>整体思路是先匹配到img标签，然后匹配src属性，并修改src的属性</p><p>"&lt;\\s*img\\s+([^&gt;]+)\\s*&gt;" 的解释：</p><p><a href="file://s/"><font color="#366900">\\s</font></a>* :0 或多个空格   <a href="file://s/"><font color="#366900">\\s</font></a>+: 至少一个空格</p><p>([^&gt;]+)：指的是到&gt;为止的所有的元素，至少一个</p><p> </p><h1>常用的正则表达式（参考jdk的regex文档）</h1><blockquote><p><strong>字符集类</strong></p></blockquote><p>.                            表示任意一个字符 
</p><p>[abc]                     表示字符a，b，c中的任意一个(与a|b|c相同) 
</p><p>[^abc]                   除a，b，c之外的任意一个字符(否定) 
</p><p>[a-zA-Z]                从a到z或A到Z当中的任意一个字符(范围) 
</p><p>[abc[hij]]              a,b,c,h,i,j中的任意一个字符(与a|b|c|h|i|j相同)(并集) 
</p><p>[a-z&amp;&amp;[hij]]          h,i,j中的一个(交集) 
</p><p>\s                          空格字符(空格键, tab, 换行, 换页, 回车) 
</p><p>\S                         非空格字符([^\s]) 
</p><p>\d                         一个数字，也就是[0-9] 
</p><p>\D                         一个非数字的字符，也就是[^0-9] 
</p><p>\w                        一个单词字符(word character)，即[a-zA-Z_0-9] 
</p><p>\W                       一个非单词的字符，[^\w] 
</p><blockquote><p><strong>字符类：</strong></p></blockquote><p>B                         字符B 
</p><p>\xhh                    16进制值0xhh所表示的字符 
</p><p>\uhhhh                16进制值0xhhhh所表示的Unicode字符 
</p><p>\t                         Tab 
</p><p>\n                        换行符 
</p><p>\r                         回车符 
</p><p>\f                        换页符 
</p><p>\e                       Escape 
</p><p><strong>逻辑运算符</strong></p><p>XY                      X 后面跟着 Y 
</p><p>X|Y                    X或Y 
</p><p>(X)                     一个"要匹配的组(capturing group)". 以后可以用\i来表示第i个被匹配的组。 
</p><p><strong>边界匹配符</strong></p><p>^                      一行的开始 
</p><p>$                      一行的结尾 
</p><p>\b                    一个单词的边界 
</p><p>\B                    一个非单词的边界 
</p><p>\G                   前一个匹配的结束 
</p><p></p><p><strong>数量表示符</strong></p><p>"数量表示符(quantifier)"的作用是定义模式应该匹配多少个字符。 
</p><ul><li>Greedy(贪婪的)： 除非另有表示，否则数量表示符都是greedy的。Greedy的表达式会一直匹配下去，直到匹配不下去为止。<u>(如果你发现表达式匹配的结果与预期的不符)</u>，很有可能是因为，你以为表达式会只匹配前面几个字符，而实际上它是greedy的，因此会一直匹配下去。 
</li><li>Reluctant(勉强的)： 用问号表示，它会匹配最少的字符。也称为lazy, minimal matching, non-greedy, 或ungreedy。 
</li><li>Possessive(占有的)： 目前只有Java支持(其它语言都不支持)。它更加先进，所以你可能还不太会用。用正则表达式匹配字符串的时候会产生很多中间状态，<u>(一般的匹配引擎会保存这种中间状态，)</u>这样匹配失败的时候就能原路返回了。占有型的表达式不保存这种中间状态，因此也就不会回头重来了。它能防止正则表达式的失控，同时也能提高运行的效率。 </li></ul><p></p><p><strong>Greedy                    Reluctant                           Possessive                      匹配 </strong></p><p></p><p>X?                            X??                                      X?+                                  匹配一个或零个X 
</p><p>X*                            X*?                                      X*+                                  匹配零或多个X 
</p><p>X+                           X+?                                      X++                                 匹配一个或多个X 
</p><p>X{n}                        X{n}?                                   X{n}+                               匹配正好n个X 
</p><p>X{n,}                       X{n,}?                                 X{n,}+                              匹配至少n个X 
</p><p>X{n,m}                   X{n,m}?                                X{n,m}+                           匹配至少n个，至多m个X 
</p><p></p><p></p><h2>参考资料</h2><p>要想进一步学习正则表达式，建议看<i>Mastering Regular Expression, 2nd Edition</i>，作者Jeffrey E. F. Friedl (O’Reilly, 2002)。 
</p><p>"Regular Expressions and the Java Programming Language," Dana Nourie and Mike McCloskey (Sun Microsystems, August 2002) presents a brief overview of java.util.regex, including five illustrative regex-based applications: <br /><a href="http://developer.java.sun.com/developer/technicalArticles/releases/1.4regex/"><font color="#366900">http://developer.java.sun.com/developer/technicalArticles/releases/1.4regex/</font></a></p><p><a title="http://www.blogjava.net/beike/archive/2006/04/28/43832.html" href="/beike/archive/2006/04/28/43832.html"><font color="#366900">http://www.blogjava.net/beike/archive/2006/04/28/43832.html</font></a>  
</p><p><a href="http://wcjok.bokee.com/4293762.html"><font color="#366900">http://wcjok.bokee.com/4293762.html</font></a></p><img src ="http://www.blogjava.net/coacoa2008/aggbug/149661.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/coacoa2008/" target="_blank">Welcome</a> 2007-09-29 18:42 <a href="http://www.blogjava.net/coacoa2008/archive/2007/09/29/149661.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Now.java</title><link>http://www.blogjava.net/coacoa2008/archive/2007/09/29/149596.html</link><dc:creator>Welcome</dc:creator><author>Welcome</author><pubDate>Sat, 29 Sep 2007 08:13:00 GMT</pubDate><guid>http://www.blogjava.net/coacoa2008/archive/2007/09/29/149596.html</guid><wfw:comment>http://www.blogjava.net/coacoa2008/comments/149596.html</wfw:comment><comments>http://www.blogjava.net/coacoa2008/archive/2007/09/29/149596.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/coacoa2008/comments/commentRss/149596.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/coacoa2008/services/trackbacks/149596.html</trackback:ping><description><![CDATA[
		<p>(1)<br />import java.util.*; <br />public class Now { <br />   public static void main(String[] args) { <br />      Date now = new Date(); <br />      System.out.println("Value is " + now); <br />   } <br />} <br /><br /><br />(2)<br />import java.util.*;<br />public class Now { <br />   public static void main(String[] args) { <br />      Date now = new Date(); <br />    <font color="#ff1493">  long nowLong = now.getTime(); <br /></font>      System.out.println("Value is " + nowLong); <br />   } <br />} <br /><br />(3)<br /><br />DateFormat类在java.text包中可以找到。<br />转换成字符串<br />你可以使用format()方法转换Date对象为一个字符串。<br /><br />import java.util.*; <br />import java.text.*; <br />public class NowString { <br />   public static void main(String[] args) { <br />      Date now = new Date(); <br />      <font color="#ff1493">DateFormat</font> df = DateFormat.<font color="#ff1493">getDateInstance(); <br /></font>      String s = df.format(now); <br />      System.out.println("Today is " + s); <br />   } <br />}   <br /><br />在上面的代码中，展示了没有参数，使用缺省格式的getDateInstance()方法。Java还提供了几个<font color="#ff1493">选择日期格式</font>，你可以通过使用重载的getDateInstance(int style)获得。出于方便的原因，DateFormat提供了几种预置的常量，你可以使用这些常量参数。下面是几个<font color="#ff1493">SHORT, MEDIUM, LONG, 和FULL</font>类型的示例：</p>
		<p>
				<br />import java.util.*; <br />import java.text.*; </p>
		<p>public class <font color="#ff1493">StyleDemo </font>{ <br />   public static void main(String[] args) { <br />      Date now = new Date(); </p>
		<p>      DateFormat df =  DateFormat.getDateInstance(); <br />      DateFormat df1 = DateFormat.getDateInstance(DateFormat.SHORT); <br />      DateFormat df2 = DateFormat.getDateInstance(DateFormat.MEDIUM); <br />      DateFormat df3 = DateFormat.getDateInstance(DateFormat.LONG); <br />      DateFormat df4 = DateFormat.getDateInstance(DateFormat.FULL);  <br />      String s =  df.format(now); <br />      String s1 = df1.format(now); <br />      String s2 = df2.format(now); <br />      String s3 = df3.format(now); <br />      String s4 = df4.format(now); </p>
		<p>      System.out.println("(Default) Today is " + s); <br />      System.out.println("(SHORT)   Today is " + s1); <br />      System.out.println("(MEDIUM)  Today is " + s2); <br />      System.out.println("(LONG)    Today is " + s3); <br />      System.out.println("(FULL)    Today is " + s4); <br />   } <br />} </p>
		<p>程序输出如下：</p>
		<p>(Default) Today is Nov 8, 2000<br />(SHORT)   Today is 11/8/00<br /><font color="#ff1493">(MEDIUM)  Today is Nov 8, 2000</font><br />(LONG)    Today is November 8, 2000<br />(FULL)    Today is Wednesday, November 8, 2000</p>
		<p>同样的程序，在我的电脑上使用缺省设置运行后，改变区域设置为瑞典，输出如下：</p>
		<p>(Default) Today is 2000-nov-08<br />(SHORT)   Today is 2000-11-08<br />(MEDIUM)  Today is 2000-nov-08<br />(LONG)    Today is den 8 november 2000<br />(FULL)    Today is den 8 november 2000     <br />  <br />从这里，你能看到，瑞典的月份不是大写的（虽然November还是november）.还有，LONG和FULL版本在瑞典语中是一样的，但是美国英语却不同。另外，有趣的是，瑞典语单词的星期三,onsdag，没有包含在FULL日期里，英语却包括。 <br />注意你能够使用getDateInstance()方法改变DateFormat实例的语种；但是，在上面的例子中，是通过改变Windows98的控制面板的区域设置做到的。不同的地方的区域设置不同，结果就不同，这样有好处，也有不足，Java程序员应该了解这些。一个好处是Java程序员可以只写一行代码就可以显示日期，而且世界不同地区的电脑运行同样的程序会有不用的日期格式。 但是这也是一个缺点，当程序员希望显示同一种格式的时--这也有可取之处，举例来说，在程序中混合输出文本和日期，如果文本是英文，我们就不希望日期格式是其他的格式，象德文或是西班牙文。如果程序员依靠日期格式编程，日期格式将根据运行程序所在电脑的区域设置不用而不同。 </p>
		<p>
				<font color="#000000">
						<br />(4)<br />解析字符串</font>
		</p>
		<p> 通过<font color="#ff1493">parse()</font>方法，DateFormat能够以一个字符串创立一个Date对象。这个方法能抛出<font color="#ff1493">ParseException</font>异常，所以你必须使用适当的异常处理技术。下面的例子程序通过字符串创建Date对象：</p>
		<p>
				<br />import java.util.*; <br />import java.text.*; </p>
		<p>public class ParseExample { <br />   public static void main(String[] args) { <br />      String ds = "November 1, 2000"; <br />      DateFormat df = DateFormat.getDateInstance(); <br />      try { <br />         Date d = df.parse(ds); <br />      } <br />      catch(ParseException e) { <br />         System.out.println("Unable to parse " + ds); <br />      } <br />   } <br />} </p>
		<p>在创建一个任意的日期时parse()方法很有用。我将通过另一种方法创建一个任意得日期。同时，你将看到怎样进行基本日期计算，例如计算90天后的另一天。你可以使用<font color="#ff1493">GregorianCalendar类</font>来完成这个任务。 <br />GregorianCalendar类<br /> 创建一个代表任意日期的一个途径使用GregorianCalendar类的构造函数，它包含在java.util包中：</p>
		<p>
				<br />GregorianCalendar(int year, int month, int date)  </p>
		<p>注意月份的表示，<font color="#ff1493">一月是0，二月是1，以此类推，是12月是11</font>。因为大多数人习惯于使用单词而不是使用数字来表示月份，这样程序也许更易读，父类Calendar使用常量来表示月份：JANUARY, FEBRUARY,等等。所以，创建Wilbur 和 Orville制造第一架动力飞机的日期（December 17, 1903），你可以使用：</p>
		<p>
				<br />GregorianCalendar firstFlight = new GregorianCalendar(1903, Calendar.DECEMBER, 17);  <br /> <br />出于清楚的考虑，你应该使用前面的形式。但是，你也应该学习怎样阅读下面的短格式。下面的例子同样表示December 17,1903（记住，在短格式中，11表示December）</p>
		<p>
				<br />GregorianCalendar firstFlight = new GregorianCalendar(1903, 11, 17);    </p>
		<p>在上一节中，你学习了转换Date对象到字符串。这里，你可以做同样的事情；但是首先，你需要将GregorianCalendar对象转换到Date。要做到这一点，你可以使用getTime()方法，从它得父类Calendar继承而来。GetTime()方法返回GregorianCalendar相应的Date对象。你能够创建GregorianCalendar对象，转换到Date对象，得到和输出相应的字符串这样一个过程。下面是例子： </p>
		<p>
				<br />import java.util.*; <br />import java.text.*; </p>
		<p>public class Flight { </p>
		<p>   public static void main(String[] args) { <br />    <font color="#ff1493">  GregorianCalendar</font> firstFlight = new GregorianCalendar(1903, Calendar.DECEMBER, 17);     <br />      Date d = firstFlight.<font color="#ff1493">getTime</font>(); <br />      DateFormat df = DateFormat.<font color="#ff1493">getDateInstance</font>(); <br />      String s = df.format(d); <br />      System.out.println("First flight was " + s); <br />   } <br />} </p>
		<p>有时候创建一个代表当前时刻的GregorianCalendar类的实例是很有用的。你可以简单的使用没有参数的GregorianCalendar构造函数，象这样：</p>
		<p>
				<br />GregorianCalendar thisday = new GregorianCalendar(); </p>
		<p>一个输出今天日期的例子程序，使用GregorianCalendar对象：</p>
		<p>
				<br />import java.util.*; <br />import java.text.*; </p>
		<p>class Today { <br />   public static void main(String[] args) { <br />      GregorianCalendar thisday = new GregorianCalendar();  <br />      Date d = thisday.getTime(); <br />      DateFormat df = DateFormat.getDateInstance(); <br />      String s = df.format(d); <br />      System.out.println("Today is " + s); <br />   } <br />} </p>
		<p>注意到，Date()构造函数和GregorianCalendar()构造函数很类似：都创建一个对象，条件简单，代表今天。</p>
		<p>
				<br />(6)<br />日期处理</p>
		<p>
				<font color="#ff1493">GregorianCalendar类提供处理日期的方法。</font>一个有用的方法是add().使用add()方法，你能够增加象年，月数，天数到日期对象中。要使用add()方法，你必须提供要增加的字段，要增加的数量。一些有用的字段是DATE, MONTH, YEAR, 和 WEEK_OF_YEAR。下面的程序使用add()方法计算未来80天的一个日期。在Jules的&lt;环球80天&gt;是一个重要的数字，使用这个程序可以计算Phileas Fogg从出发的那一天1872年10月2日后80天的日期：</p>
		<p>
				<br />import java.util.*; <br />import java.text.*; </p>
		<p>public class World { <br />   public static void main(String[] args) { <br />      GregorianCalendar worldTour = new GregorianCalendar(1872, <font color="#0000ff">Calendar.OCTOBER</font>, 2); <br /><font color="#0000ff">//Calendar.May, January,February,March,April,May,June,July,August,September,October,November,December 必须全部大写;<br /></font>   <br />      worldTour.add(GregorianCalendar.DATE, 80); <br />      Date d = worldTour.getTime(); <br />      DateFormat df = DateFormat.getDateInstance(); <br />      String s = df.format(d); <br />      System.out.println("80 day trip will end " + s); <br />   } <br />} </p>
		<p>这个例子是想象的，但在一个日期上增加天数是一个普遍的操作：影碟可以租3天，图书馆可以借书21天，商店经常需要将购买的物品在30天内卖出。下面的程序演示了使用年计算：</p>
		<p>
				<br />import java.util.*; <br />import java.text.*; </p>
		<p>public class Mortgage { <br />   public static void main(String[] args) { <br />      GregorianCalendar mortgage = new GregorianCalendar(1997, Calendar.MAY, 18); <br />      mortgage.add(Calendar.YEAR, 15); <br />      Date d = mortgage.getTime(); <br />      DateFormat df = DateFormat.getDateInstance(); <br />      String s = df.format(d); <br />      System.out.println("15 year mortgage amortized on " + s);    } <br />} </p>
		<p>    add()一个重要的副作用是它改变的原来的日期。有时候，拥有原始日期和修改后的日期很重要。不幸的是，你不能简单的创建一个GregorianCalendar对象，设置它和原来的相等（equal）。原因是两个变量指向同一个Date()对象地址。如果Date对象改变，两个变量就指向改变后的日期对象。代替这种做法，应该创建一个新对象。下面的程序示范了这种做法：</p>
		<p>
				<br />import java.util.*; <br />import java.text.*; </p>
		<p>public class ThreeDates { <br />   public static void main(String[] args) { <br />      GregorianCalendar gc1 = new GregorianCalendar(2000, Calendar.JANUARY, 1); <br />      GregorianCalendar gc2 = gc1; <br />      GregorianCalendar gc3 = new GregorianCalendar(2000, Calendar.JANUARY, 1); <br />      //Three dates all equal to January 1, 2000 </p>
		<p>      gc1.add(Calendar.YEAR, 1); <br />      <a href="file://gc1">file://gc1</a> and gc2 are changed </p>
		<p>      DateFormat df = DateFormat.getDateInstance(); </p>
		<p>      Date d1 = gc1.getTime(); <br />      Date d2 = gc2.getTime(); <br />      Date d3 = gc3.getTime(); </p>
		<p>      String s1 = df.format(d1); <br />      String s2 = df.format(d2); <br />      String s3 = df.format(d3); </p>
		<p>      System.out.println("gc1 is " + s1); <br />      System.out.println("gc2 is " + s2); <br />      System.out.println("gc3 is " + s3); <br />   } <br />} </p>
		<p>    程序运行后，gc1和gc2被变成2001年（因为两个对象指向同一个Date，而Date已经被改变了）。对象gc3指向一个单独的Date，它没有被改变。<br />计算复习日期<br />在这节，你将看到一个依据现实世界的例子。这个详细的程序计算过去一个具体的日期。例如，你阅读这篇文章，你想要记住一个印象深刻的知识点。如果你没有照片一样的记忆力，你就要定期的复习这些新资料，这将帮助你记住它。关于复习系统，Kurt Hanks 和 Gerreld L. Pulsipher在他们的&lt; Five Secrets to Personal Productivity个人能力的5个秘密&gt;中有讨论，建议看过第一眼后马上回顾一下，然后是1天后，1个星期后，1个月后，3个月后，1年后。我的这篇文章，你要马上回顾一下，从现在算起，再就是明天，然后是1个星期，1个月，3个月，1年后。我们的程序将计算这些日期。<br />这个程序非常有用的，它将是PIM(Personal Information Manager个人信息管理器)的一个组成部分，并将确定复习时间。在下面的程序中，getDates()方法对一个返回日期数组（复习日期）的电子软件很有用。另外，你可以返回单独的一个日期，使用getFirstDay(),getOneDay(),getOneWeek(),getOnMonth()和getOneYear().当时间范围超出这个PIM的ReviewDates的计算范围时ReviewDates类演示了怎样计算时间段。现在，你可以容易的修改它用来处理你需要的时间段，象图书馆借书，录影带租赁和抵押计算。首先，ReviewDates类显示在下面：</p>
		<p>
				<br />import java.util.*; <br />import java.text.*; </p>
		<p>public class ReviewDates { <br />   private GregorianCalendar firstDay, oneDay, oneWeek, oneMonth, oneQuarter, oneYear; <br />   final int dateArraySize = 6; </p>
		<p>   ReviewDates(GregorianCalendar gcDate) { <br />      int year = gcDate.get(GregorianCalendar.YEAR); <br />      int month = gcDate.get(GregorianCalendar.MONTH); <br />      int date = gcDate.get(GregorianCalendar.DATE); </p>
		<p>      firstDay = new GregorianCalendar(year, month, date); <br />      oneDay = new GregorianCalendar(year, month, date); <br />      oneWeek = new GregorianCalendar(year, month, date); <br />      oneMonth = new GregorianCalendar(year, month, date); <br />      oneQuarter = new GregorianCalendar(year, month, date); <br />      oneYear = new GregorianCalendar(year, month, date); </p>
		<p>      oneDay.add(GregorianCalendar.DATE, 1); <br />      oneWeek.add(GregorianCalendar.DATE, 7); <br />      oneMonth.add(GregorianCalendar.MONTH, 1); <br />      oneQuarter.add(GregorianCalendar.MONTH, 3); <br />      oneYear.add(GregorianCalendar.YEAR, 1); <br />   } </p>
		<p>   ReviewDates() { <br />      this(new GregorianCalendar()); <br />   } </p>
		<p>   public void listDates() { <br />      DateFormat df = DateFormat.getDateInstance(DateFormat.LONG);  <br />      Date startDate = firstDay.getTime(); <br />      Date date1 = oneDay.getTime(); <br />      Date date2 = oneWeek.getTime(); <br />      Date date3 = oneMonth.getTime(); <br />      Date date4 = oneQuarter.getTime(); <br />      Date date5 = oneYear.getTime(); </p>
		<p>      String ss =  df.format(startDate); <br />      String ss1 = df.format(date1); <br />      String ss2 = df.format(date2); <br />      String ss3 = df.format(date3); <br />      String ss4 = df.format(date4); <br />      String ss5 = df.format(date5); </p>
		<p>      System.out.println("Start date is " + ss); <br />      System.out.println("Following review dates are:"); <br />      System.out.println(ss1); <br />      System.out.println(ss2); <br />      System.out.println(ss3); <br />      System.out.println(ss4); <br />      System.out.println(ss5); <br />      System.out.println(); <br />   } </p>
		<p>   public GregorianCalendar[] getDates() { <br />      GregorianCalendar[] memoryDates = new GregorianCalendar[dateArraySize]; <br />      memoryDates[0] = firstDay; <br />      memoryDates[1] = oneDay; <br />      memoryDates[2] = oneWeek; <br />      memoryDates[3] = oneMonth; <br />      memoryDates[4] = oneQuarter; <br />      memoryDates[5] = oneYear; <br />      return memoryDates; <br />   } </p>
		<p>   public GregorianCalendar getFirstDay() { <br />      return this.firstDay; <br />   } </p>
		<p>   public GregorianCalendar getOneDay() { <br />      return this.oneDay; <br />   } </p>
		<p>   public GregorianCalendar getOneWeek() { <br />      return this.oneWeek; <br />   } </p>
		<p>   public GregorianCalendar getOneMonth() { <br />      return this.oneMonth; <br />   } </p>
		<p>   public GregorianCalendar getOneQuarter() { <br />      return this.oneQuarter; <br />   } </p>
		<p>   public GregorianCalendar getOneYear() { <br />      return this.oneYear; <br />   } <br />}  </p>
		<p>下面是使用ReviewDates类列出复习日期的例子程序：</p>
		<p>
				<br />import java.util.*; </p>
		<p>public class ShowDates { <br />   public static void main(String[] args) { <br />      ReviewDates rd = new ReviewDates(); <br />      rd.listDates(); </p>
		<p>      GregorianCalendar gc = new GregorianCalendar(2001, Calendar.JANUARY, 15); <br />      ReviewDates jan15 = new ReviewDates(gc); <br />      jan15.listDates(); <br />   } <br />} </p>
		<p>
				<br />总结</p>
		<p> 这篇文章介绍了关于日期处理的3个重要的类：Date,DateFormat,GregorianCalendar.这些类让你创建日期，转换成字符串，和计算日期基本元素。处理Java中的日期问题，这篇文章只是冰山一角。可是，我在这里介绍的类和方法不仅仅是你学习高级技术的跳板，这些类和方法本身就可以处理很多通常的日期相关的任务</p>
		<p>关于作者<br />Robert Nielsen是SCJP。他拥有硕士学位，专攻计算机教育，并且在计算机领域执教多年。他也在各样的杂志上发表过很多计算机相关的文章。<br /><br />关于译者<br />Cocia Lin(cocia@163.com)是程序员。<br /><br /></p>
<img src ="http://www.blogjava.net/coacoa2008/aggbug/149596.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/coacoa2008/" target="_blank">Welcome</a> 2007-09-29 16:13 <a href="http://www.blogjava.net/coacoa2008/archive/2007/09/29/149596.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java.util Properties 学习</title><link>http://www.blogjava.net/coacoa2008/archive/2007/09/29/149511.html</link><dc:creator>Welcome</dc:creator><author>Welcome</author><pubDate>Sat, 29 Sep 2007 03:32:00 GMT</pubDate><guid>http://www.blogjava.net/coacoa2008/archive/2007/09/29/149511.html</guid><wfw:comment>http://www.blogjava.net/coacoa2008/comments/149511.html</wfw:comment><comments>http://www.blogjava.net/coacoa2008/archive/2007/09/29/149511.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/coacoa2008/comments/commentRss/149511.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/coacoa2008/services/trackbacks/149511.html</trackback:ping><description><![CDATA[
		<h2>
				<font size="-1">java.util</font>
				<br />类 Properties</h2>
		<pre>
				<a title="java.lang 中的类" href="http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/java/lang/Object.html">java.lang.Object</a>
				<img alt="继承者 " src="http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/resources/inherit.gif" />
				<a title="java.util 中的类" href="http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/java/util/Dictionary.html">java.util.Dictionary</a>&lt;K,V&gt;
      <img alt="继承者 " src="http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/resources/inherit.gif" /><a title="java.util 中的类" href="http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/java/util/Hashtable.html">java.util.Hashtable</a>&lt;<a title="java.lang 中的类" href="http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/java/lang/Object.html">Object</a>,<a title="java.lang 中的类" href="http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/java/lang/Object.html">Object</a>&gt;
          <img alt="继承者 " src="http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/resources/inherit.gif" /><b>java.util.Properties</b></pre>
		<dl>
				<dt>
						<b>所有已实现的接口：</b>
				</dt>
				<dd>
						<a title="java.io 中的接口" href="http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/java/io/Serializable.html">Serializable</a>, <a title="java.lang 中的接口" href="http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/java/lang/Cloneable.html">Cloneable</a>, <a title="java.util 中的接口" href="http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/java/util/Map.html">Map</a>&lt;<a title="java.lang 中的类" href="http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/java/lang/Object.html">Object</a>,<a title="java.lang 中的类" href="http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/java/lang/Object.html">Object</a>&gt; </dd>
		</dl>
		<dl>
				<dt>
						<b>直接已知子类：</b>
				</dt>
				<dd>
						<a title="java.security 中的类" href="http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/java/security/Provider.html">Provider</a>
						<br />
						<br />
						<br />public class Properties {<br />    public static void main(String[] args) {<br />        System.out.println("System.getProperties() ");<br />           System.getProperties().list(<font color="#ff1493">System.out</font>);    <font color="#800080">//list() 将属性列表输出到指定的输出流。此方法对调试很有用。</font> <br />             <font color="#800080">//public String <font color="#ff1493">getProperty</font>(String key,String defaultValue)用指定的键在属性列表中搜索属性。如果在属性列表中未找到该键，则接着递归检查默认属性列表及其默认值。如果未找到属性，则此方法返回默认值变量。 <br /></font>    }<br />}</dd>
				<dd> </dd>
				<dd>
						<br />/*http://zhangjunhd.blog.51cto.com/113473/23681</dd>
				<dd>
						<font color="#ff1493">1．获取JVM的系统属性<br /></font>import java.util.Properties;<br /> <br />class PropTest {<br />    public static void main(String[] args) {<br />    Properties pps = System.getProperties();<br />    pps.list(System.out);<br />    }<br />} </dd>
				<dd> <br />结果：<br />-- listing properties --<br />java.runtime.name=Java(TM) 2 Runtime Environment, Stand...<br />sun.boot.library.path=C:\Program Files\Java\jdk1.5.0_04\jre...<br />java.vm.version=1.5.0_04-b05<br />java.vm.vendor=Sun Microsystems Inc.<br />java.vendor.url=http://java.sun.com/<br />path.separator=;<br />java.vm.name=Java HotSpot(TM) Client VM<br />file.encoding.pkg=sun.io<br />user.country=CN<br />sun.os.patch.level=Service Pack 2<br />java.vm.specification.name=Java Virtual Machine Specification<br />...以下略<br /> <br /><font color="#ff1493">2．读取配置文件<br />&lt;!-- 也可以读取&lt;键,值&gt;类的文件 config.txt-- &gt;<br /></font>config.ini<br /><br />author=ZJ<br />user=all<br />copyright=2006-2007 </dd>
				<dd>PropTest.java<br />import java.io.FileInputStream;<br />import java.util.Enumeration;<br />import java.util.Properties;<br /> <br />class PropTest {<br />    public static void main(String[] args) {<br /><font color="#ff1493">Properties</font> pps=new Properties(); <br />    try {<br />        pps.load(new <font color="#ff1493">FileInputStream</font>("config.ini"));<br />        <font color="#ff1493">Enumeration </font>enum1 = pps.propertyNames();<br />        while (enum1.<font color="#800080">hasMoreElements())</font> {<br />       String strKey = (String) enum1.nextElement();<br />       String strValue = pps.getProperty(strKey);<br />       System.out.println(strKey + "=" + strValue);<br />        }<br />    } catch (Exception e) {<br />        e.printStackTrace();<br />    }<br />    }<br />} </dd>
				<dd>
						<br />(3)<br /><a href="http://java.ccidnet.com/art/3747/20060630/592671_1.html">http://java.ccidnet.com/art/3747/20060630/592671_1.html</a><br /><br /><font color="#ff1493">使用J2SEAPI读取Properties文件的六种方法</font></dd>
				<dd>　　1。使用java.util.Properties类的load()方法示例：InputStreamin=lnewBufferedInputStream(newFileInputStream(name));Propertiesp=newProperties();p.load(in);</dd>
				<dd>　　2。使用java.util.ResourceBundle类的getBundle()方法示例：ResourceBundlerb=ResourceBundle.getBundle(name,Locale.getDefault());</dd>
				<dd>　　3。使用java.util.PropertyResourceBundle类的构造函数示例：InputStreamin=newBufferedInputStream(newFileInputStream(name));ResourceBundlerb=newPropertyResourceBundle(in);</dd>
				<dd>　　4。使用class变量的getResourceAsStream()方法示例：InputStreamin=JProperties.class.getResourceAsStream(name);Propertiesp=newProperties();p.load(in);</dd>
				<dd>　　5。使用class.getClassLoader()所得到的java.lang.ClassLoader的getResourceAsStream()方法示例：InputStreamin=JProperties.class.getClassLoader().getResourceAsStream(name);Propertiesp=newProperties();p.load(in);</dd>
				<dd>　　6。使用java.lang.ClassLoader类的getSystemResourceAsStream()静态方法示例：InputStreamin=ClassLoader.getSystemResourceAsStream(name);Propertiesp=newProperties();p.load(in);</dd>
				<dd>　　补充</dd>
				<dd>　　Servlet中可以使用javax.servlet.ServletContext的getResourceAsStream()方法示例：InputStreamin=context.getResourceAsStream(path);Propertiesp=newProperties();p.load(in);<br /> </dd>
				<dd>
						<br />(4)<font color="#ff1493">自己的java properties</font></dd>
				<dd>E:\&gt;java PropTest<br />-- listing properties --<br />java.runtime.name=Java(TM) SE Runtime Environment<br />sun.boot.library.path=C:\Program Files\Java\jre1.6.0_02\bin<br />java.vm.version=1.6.0_02-b06<br />java.vm.vendor=Sun Microsystems Inc.<br />java.vendor.url=http://java.sun.com/<br />path.separator=;<br />java.vm.name=Java HotSpot(TM) Client VM<br />file.encoding.pkg=sun.io<br />user.country=CN<br />sun.java.launcher=SUN_STANDARD<br />sun.os.patch.level=Service Pack 2<br />java.vm.specification.name=Java Virtual Machine Specification<br />user.dir=E:\<br />java.runtime.version=1.6.0_02-b06<br />java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment<br />java.endorsed.dirs=C:\Program Files\Java\jre1.6.0_02\lib...<br />os.arch=x86<br />java.io.tmpdir=C:\DOCUME~1\new\LOCALS~1\Temp\<br />line.separator=</dd>
				<dd>java.vm.specification.vendor=Sun Microsystems Inc.<br />user.variant=<br />os.name=Windows XP<br />sun.jnu.encoding=GBK<br />java.library.path=C:\WINDOWS\system32;.;C:\WINDOWS\Sun\...<br />java.specification.name=Java Platform API Specification<br />java.class.version=50.0<br />sun.management.compiler=HotSpot Client Compiler<br />os.version=5.1<br />user.home=C:\Documents and Settings\new<br />user.timezone=<br />java.awt.printerjob=sun.awt.windows.WPrinterJob<br />file.encoding=GBK<br />java.specification.version=1.6<br />user.name=new<br />java.class.path=.<br />java.vm.specification.version=1.0<br />sun.arch.data.model=32<br />java.home=C:\Program Files\Java\jre1.6.0_02<br />java.specification.vendor=Sun Microsystems Inc.<br />user.language=zh<br />awt.toolkit=sun.awt.windows.WToolkit<br />java.vm.info=mixed mode, sharing<br /><font color="#ff1493">java.version=1.6.0_02<br /></font>java.ext.dirs=C:\Program Files\Java\jre1.6.0_02\lib...<br />sun.boot.class.path=C:\Program Files\Java\jre1.6.0_02\lib...<br />java.vendor=Sun Microsystems Inc.<br />file.separator=\<br />java.vendor.url.bug=http://java.sun.com/cgi-bin/bugreport...<br />sun.cpu.endian=little<br />sun.io.unicode.encoding=UnicodeLittle<br />sun.desktop=windows<br />sun.cpu.isalist=</dd>
				<dd>*/</dd>
		</dl>
<img src ="http://www.blogjava.net/coacoa2008/aggbug/149511.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/coacoa2008/" target="_blank">Welcome</a> 2007-09-29 11:32 <a href="http://www.blogjava.net/coacoa2008/archive/2007/09/29/149511.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javascript 基础知识之总结实例</title><link>http://www.blogjava.net/coacoa2008/archive/2007/09/27/148530.html</link><dc:creator>Welcome</dc:creator><author>Welcome</author><pubDate>Thu, 27 Sep 2007 02:13:00 GMT</pubDate><guid>http://www.blogjava.net/coacoa2008/archive/2007/09/27/148530.html</guid><wfw:comment>http://www.blogjava.net/coacoa2008/comments/148530.html</wfw:comment><comments>http://www.blogjava.net/coacoa2008/archive/2007/09/27/148530.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/coacoa2008/comments/commentRss/148530.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/coacoa2008/services/trackbacks/148530.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: javascript 基础知识之总结实例&nbsp;&nbsp;<a href='http://www.blogjava.net/coacoa2008/archive/2007/09/27/148530.html'>阅读全文</a><img src ="http://www.blogjava.net/coacoa2008/aggbug/148530.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/coacoa2008/" target="_blank">Welcome</a> 2007-09-27 10:13 <a href="http://www.blogjava.net/coacoa2008/archive/2007/09/27/148530.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CSS基本布局16例</title><link>http://www.blogjava.net/coacoa2008/articles/145051.html</link><dc:creator>Welcome</dc:creator><author>Welcome</author><pubDate>Fri, 14 Sep 2007 01:50:00 GMT</pubDate><guid>http://www.blogjava.net/coacoa2008/articles/145051.html</guid><wfw:comment>http://www.blogjava.net/coacoa2008/comments/145051.html</wfw:comment><comments>http://www.blogjava.net/coacoa2008/articles/145051.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/coacoa2008/comments/commentRss/145051.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/coacoa2008/services/trackbacks/145051.html</trackback:ping><description><![CDATA[
		<div id="ctitle">CSS基本布局16例</div>
		<div id="author">作者：Owen Briggs 2004-6-25 13:44:32</div>
		<p>以下布局资料原作者：<a href="http://www.thenoodleincident.com/tutorials/box_lesson/boxes.html" target="new">Owen Briggs</a></p>
		<h4>单行单列</h4>
		<ul>
				<li>
						<a title="链接到单行单列" href="http://www.w3cn.org/article/layout/2004/csslayout/onebox.html" target="new" rel="next">
								<img height="50" alt="单行单列" src="http://www.w3cn.org/article/layout/2004/csslayout/images/1box.gif" width="50" /> 单行单列1</a>：采用float浮在左上角，固定宽度。 
</li>
				<li>
						<a title="链接到单行单列" href="http://www.w3cn.org/article/layout/2004/csslayout/onebox_absolute.html" target="new" rel="next">
								<img height="50" alt="单行单列" src="http://www.w3cn.org/article/layout/2004/csslayout/images/1box.gif" width="50" /> 单行单列2</a>：固定在左上角，固定宽度，采用的是绝对(absolute)定位。 
</li>
				<li>
						<a title="链接到单行单列" href="http://www.w3cn.org/article/layout/2004/csslayout/onebox_fluid.html" target="new" rel="next">
								<img height="50" alt="单行单列" src="http://www.w3cn.org/article/layout/2004/csslayout/images/1box.gif" width="50" /> 单行单列3</a>：固定在左上角，不固定宽度，采用百分比(%)定义宽度来自适应页面。 
</li>
				<li>
						<a title="链接到单行单列" href="http://www.w3cn.org/article/layout/2004/csslayout/onebox_centent.html" target="new" rel="next">
								<img height="50" alt="单行单列" src="http://www.w3cn.org/article/layout/2004/csslayout/images/1box_centered.gif" width="50" /> 单行单列4</a>(推荐)：固定宽度，采用在body样式中定义居中属性(text-align: center;)实现适应页面自动居中。 </li>
		</ul>
		<h4>单行两列</h4>
		<ul>
				<li>
						<a title="链接到单行两列" href="http://www.w3cn.org/article/layout/2004/csslayout/twobox.html" target="new" rel="next">
								<img height="50" alt="单行两列" src="http://www.w3cn.org/article/layout/2004/csslayout/images/2box.gif" width="50" /> 单行两列1</a>：两列都固定宽度。第一列浮在左上角，第二列浮在第一列右边。 
</li>
				<li>
						<a title="链接到单行两列" href="http://www.w3cn.org/article/layout/2004/csslayout/twobox_fluid.html" target="new" rel="next">
								<img height="50" alt="单行两列" src="http://www.w3cn.org/article/layout/2004/csslayout/images/2box.gif" width="50" /> 单行两列2</a>：两列都百分比宽度，但不满屏。第一列固定在左上角，第二列浮在第一列右边。 
</li>
				<li>
						<a title="链接到单行两列" href="http://www.w3cn.org/article/layout/2004/csslayout/twobox_touch.html" target="new" rel="next">
								<img height="50" alt="单行两列" src="http://www.w3cn.org/article/layout/2004/csslayout/images/2box_split.gif" width="50" /> 单行两列3</a>：两列都百分比宽度，满屏。两列都采用绝对定位。 
</li>
				<li>
						<a title="链接到单行两列" href="http://www.w3cn.org/article/layout/2004/csslayout/twobox_touch2.html" target="new" rel="next">
								<img height="50" alt="单行两列" src="http://www.w3cn.org/article/layout/2004/csslayout/images/2box_split.gif" width="50" /> 单行两列4</a>：两列都百分比宽度，满屏。第一列浮在左上角，第二列浮在右上角。 
</li>
				<li>
						<a title="链接到单行两列" href="http://www.w3cn.org/article/layout/2004/csslayout/twobox_touch3.html" target="new" rel="next">
								<img height="50" alt="单行两列" src="http://www.w3cn.org/article/layout/2004/csslayout/images/2box_split.gif" width="50" /> 单行两列5</a>：两列都百分比宽度，满屏。第一列浮在左上角，第二列浮在第一列右边。 </li>
		</ul>
		<h4>单行三列</h4>
		<ul>
				<li>
						<a title="链接到单行三列" href="http://www.w3cn.org/article/layout/2004/csslayout/threebox.html" target="new" rel="next">
								<img height="50" alt="单行三列" src="http://www.w3cn.org/article/layout/2004/csslayout/images/3column.gif" width="50" /> 单行三列1</a>：左右列都绝对定位(右列定位在右上)。左列和右列固定宽度，中间列自适应页面。 
</li>
				<li>
						<a title="链接到单行三列" href="http://www.w3cn.org/article/layout/2004/csslayout/threebox2.html" target="new" rel="next">
								<img height="50" alt="单行三列" src="http://www.w3cn.org/article/layout/2004/csslayout/images/3column.gif" width="50" /> 单行三列2</a>：左列定位在左上，右列定位在右上，中间列浮在左列右面。左列和右列固定宽度，中间列自适应页面。 
</li>
				<li>
						<a title="链接到单行三列" href="http://www.w3cn.org/article/layout/2004/csslayout/threebox3.html" target="new" rel="next">
								<img height="50" alt="单行三列" src="http://www.w3cn.org/article/layout/2004/csslayout/images/3column.gif" width="50" /> 单行三列3</a>：三列都绝对定位。左列和右列固定宽度，中间列根据内容自适应。 
</li>
				<li>
						<a title="链接到单行三列" href="http://www.w3cn.org/article/layout/2004/csslayout/threebox4.html" target="new" rel="next">
								<img height="50" alt="单行三列" src="http://www.w3cn.org/article/layout/2004/csslayout/images/3column.gif" width="50" /> 单行三列4</a>(推荐)：类似样式2，只是将margin: 20px属性增加在body样式中，解决了中间列在Netscape6.0中置顶的问题。 
</li>
				<li>
						<a title="链接到单行三列" href="http://www.w3cn.org/article/layout/2004/csslayout/threebox_touch.html" target="new" rel="next">
								<img height="50" alt="单行三列" src="http://www.w3cn.org/article/layout/2004/csslayout/images/3column_touche.gif" width="50" /> 单行三列5</a>：左右列绝对定位，中间列自适应。宽度满屏。 </li>
		</ul>
		<h4>顶行三列</h4>
		<ul>
				<li>
						<a title="链接到顶行三列" href="http://www.w3cn.org/article/layout/2004/csslayout/fourbox.html" target="new" rel="next">
								<img height="50" alt="顶行三列" src="http://www.w3cn.org/article/layout/2004/csslayout/images/3columnplusbox.gif" width="50" /> 顶行三列1</a>(推荐)：顶行自适应页面宽度。左右列绝对定位，中间列自适应页面。 
</li>
				<li>
						<a title="链接到顶行三列" href="http://www.w3cn.org/article/layout/2004/csslayout/fourbox_touch.html" target="new" rel="next">
								<img height="50" alt="顶行三列" src="http://www.w3cn.org/article/layout/2004/csslayout/images/3columnplusbox_toucha.gif" width="50" /> 顶行三列2</a>：宽度满屏 </li>
		</ul>
		<p> </p>
		<center>
				<b>
						<font face="Arial, Helvetica, sans-serif" color="navy" size="+2">216 Web Safe Color Chart </font>
				</b>
		</center>
		<center>
				<table cellspacing="1" cellpadding="3" width="100%" align="center" border="0">
						<tbody>
								<tr>
										<td bgcolor="#ffffff">#FFFFFF<br /><br />R=255 <br />G=255 <br />B=255</td>
										<td bgcolor="#ffffcc">#FFFFCC<br /><br />R=255<br />G=255<br />B=204</td>
										<td bgcolor="#ffff99">#FFFF99<br /><br />R=255<br />G=255<br />B=153</td>
										<td bgcolor="#ffff66">#FFFF66<br /><br />R=255<br />G=255<br />B=102</td>
										<td bgcolor="#ffff33">#FFFF33<br /><br />R=255<br />G=255<br />B=51</td>
										<td bgcolor="#ffff00">#FFFF00<br /><br />R=255<br />G=255<br />B=0</td>
								</tr>
								<tr>
										<td bgcolor="#ffccff">#FFCCFF<br /><br />R=255 <br />G=204 <br />B=255</td>
										<td bgcolor="#ffcccc">#FFCCCC<br /><br />R=255<br />G=204<br />B=204</td>
										<td bgcolor="#ffcc99">#FFCC99<br /><br />R=255<br />G=204<br />B=153</td>
										<td bgcolor="#ffcc66">#FFCC66<br /><br />R=255<br />G=204<br />B=102</td>
										<td bgcolor="#ffcc33">#FFCC33<br /><br />R=255<br />G=204<br />B=51</td>
										<td bgcolor="#ffcc00">#FFCC00<br /><br />R=255<br />G=204<br />B=0</td>
								</tr>
								<tr>
										<td bgcolor="#ff99ff">#FF99FF<br /><br />R=255 <br />G=153 <br />B=255</td>
										<td bgcolor="#ff99cc">#FF99CC<br /><br />R=255<br />G=153<br />B=204</td>
										<td bgcolor="#ff9999">#FF9999<br /><br />R=255<br />G=153<br />B=153</td>
										<td bgcolor="#ff9966">#FF9966<br /><br />R=255<br />G=153<br />B=102</td>
										<td bgcolor="#ff9933">#FF9933<br /><br />R=255<br />G=153<br />B=51</td>
										<td bgcolor="#ff9900">#FF9900<br /><br />R=255<br />G=153<br />B=0</td>
								</tr>
								<tr>
										<td bgcolor="#ff66ff">
												<font color="white">#FF66FF<br /><br />R=255 <br />G=102 <br />B=255</font>
										</td>
										<td bgcolor="#ff66cc">
												<font color="white">#FF66CC<br /><br />R=255<br />G=102<br />B=204</font>
										</td>
										<td bgcolor="#ff6699">
												<font color="white">#FF6699<br /><br />R=255<br />G=102<br />B=153</font>
										</td>
										<td bgcolor="#ff6666">
												<font color="white">#FF6666<br /><br />R=255<br />G=102<br />B=102</font>
										</td>
										<td bgcolor="#ff6633">
												<font color="white">#FF6633<br /><br />R=255<br />G=102<br />B=51</font>
										</td>
										<td bgcolor="#ff6600">
												<font color="white">#FF6600<br /><br />R=255<br />G=102<br />B=0</font>
										</td>
								</tr>
								<tr>
										<td bgcolor="#ff33ff">
												<font color="white">#FF33FF<br /><br />R=255 <br />G=51 <br />B=255</font>
										</td>
										<td bgcolor="#ff33cc">
												<font color="white">#FF33CC<br /><br />R=255 <br />G=51 <br />B=204</font>
										</td>
										<td bgcolor="#ff3399">
												<font color="white">#FF3399<br /><br />R=255<br />G=51<br />B=153</font>
										</td>
										<td bgcolor="#ff3366">
												<font color="white">#FF3366<br /><br />R=255<br />G=51<br />B=102</font>
										</td>
										<td bgcolor="#ff3333">
												<font color="white">#FF3333<br /><br />R=255<br />G=51<br />B=51</font>
										</td>
										<td bgcolor="#ff3300">
												<font color="white">#FF3300<br /><br />R=255<br />G=51<br />B=0</font>
										</td>
								</tr>
								<tr>
										<td bgcolor="#ff00ff">
												<font color="white">#FF00FF<br /><br />R=255 <br />G=0 <br />B=255</font>
										</td>
										<td bgcolor="#ff00cc">
												<font color="white">#FF00CC<br /><br />R=255 <br />G=0 <br />B=204</font>
										</td>
										<td bgcolor="#ff0099">
												<font color="white">#FF0099<br /><br />R=255<br />G=0<br />B=153</font>
										</td>
										<td bgcolor="#ff0066">
												<font color="white">#FF0066<br /><br />R=255<br />G=0<br />B=102</font>
										</td>
										<td bgcolor="#ff0033">
												<font color="white">#FF0033<br /><br />R=255<br />G=0<br />B=51</font>
										</td>
										<td bgcolor="#ff0000">
												<font color="white">#FF0000<br /><br />R=255<br />G=0<br />B=0</font>
										</td>
								</tr>
								<tr>
										<td colspan="6"> </td>
								</tr>
								<tr>
										<td bgcolor="#ccffff">#CCFFFF<br /><br />R=204 <br />G=255 <br />B=255</td>
										<td bgcolor="#ccffcc">#CCFFCC<br /><br />R=204 <br />G=255 <br />B=204</td>
										<td bgcolor="#ccff99">#CCFF99<br /><br />R=204 <br />G=255 <br />B=153</td>
										<td bgcolor="#ccff66">#CCFF66<br /><br />R=204 <br />G=255 <br />B=102</td>
										<td bgcolor="#ccff33">#CCFF33<br /><br />R=204 <br />G=255 <br />B=51</td>
										<td bgcolor="#ccff00">#CCFF00<br /><br />R=204 <br />G=255 <br />B=0</td>
								</tr>
								<tr>
										<td bgcolor="#ccccff">#CCCCFF<br /><br />R=204 <br />G=204 <br />B=255</td>
										<td bgcolor="#cccccc">#CCCCCC<br /><br />R=204 <br />G=204 <br />B=204</td>
										<td bgcolor="#cccc99">#CCCC99<br /><br />R=204 <br />G=204 <br />B=153</td>
										<td bgcolor="#cccc66">#CCCC66<br /><br />R=204 <br />G=204 <br />B=102</td>
										<td bgcolor="#cccc33">#CCCC33<br /><br />R=204 <br />G=204 <br />B=51</td>
										<td bgcolor="#cccc00">#CCCC00<br /><br />R=204<br />G=204<br />B=0</td>
								</tr>
								<tr>
										<td bgcolor="#cc99ff">#CC99FF<br /><br />R=204 <br />G=153 <br />B=255</td>
										<td bgcolor="#cc99cc">#CC99CC<br /><br />R=204 <br />G=153 <br />B=204</td>
										<td bgcolor="#cc9999">#CC9999<br /><br />R=204<br />G=153<br />B=153</td>
										<td bgcolor="#cc9966">#CC9966<br /><br />R=204<br />G=153<br />B=102</td>
										<td bgcolor="#cc9933">#CC9933<br /><br />R=204<br />G=153<br />B=51</td>
										<td bgcolor="#cc9900">#CC9900<br /><br />R=204<br />G=153<br />B=0</td>
								</tr>
								<tr>
										<td bgcolor="#cc66ff">
												<font color="white">#CC66FF<br /><br />R=204<br />G=102<br />B=255</font>
										</td>
										<td bgcolor="#cc66cc">
												<font color="white">#CC66CC<br /><br />R=204 <br />G=102 <br />B=204</font>
										</td>
										<td bgcolor="#cc6699">
												<font color="white">#CC6699<br /><br />R=204 <br />G=102 <br />B=153</font>
										</td>
										<td bgcolor="#cc6666">
												<font color="white">#CC6666<br /><br />R=204<br />G=102<br />B=102</font>
										</td>
										<td bgcolor="#cc6633">
												<font color="white">#CC6633<br /><br />R=204<br />G=102<br />B=51</font>
										</td>
										<td bgcolor="#cc6600">
												<font color="white">#CC6600<br /><br />R=204<br />G=102<br />B=0</font>
										</td>
								</tr>
								<tr>
										<td bgcolor="#cc33ff">
												<font color="white">#CC33FF<br /><br />R=204<br />G=51<br />B=255</font>
										</td>
										<td bgcolor="#cc33cc">
												<font color="white">#CC33CC<br /><br />R=204 <br />G=51 <br />B=204</font>
										</td>
										<td bgcolor="#cc3399">
												<font color="white">#CC3399<br /><br />R=204 <br />G=51 <br />B=153</font>
										</td>
										<td bgcolor="#cc3366">
												<font color="white">#CC3366<br /><br />R=204<br />G=51<br />B=102</font>
										</td>
										<td bgcolor="#cc3333">
												<font color="white">#CC3333<br /><br />R=204<br />G=51<br />B=51</font>
										</td>
										<td bgcolor="#cc3300">
												<font color="white">#CC3300<br /><br />R=204<br />G=51<br />B=0</font>
										</td>
								</tr>
								<tr>
										<td bgcolor="#cc00ff">
												<font color="white">#CC00FF<br /><br />R=204<br />G=0<br />B=255</font>
										</td>
										<td bgcolor="#cc00cc">
												<font color="white">#CC00CC<br /><br />R=204 <br />G=0 <br />B=204</font>
										</td>
										<td bgcolor="#cc0099">
												<font color="white">#CC0099<br /><br />R=204 <br />G=0 <br />B=153</font>
										</td>
										<td bgcolor="#cc0066">
												<font color="white">#CC0066<br /><br />R=204<br />G=0<br />B=102</font>
										</td>
										<td bgcolor="#cc0033">
												<font color="white">#CC0033<br /><br />R=204<br />G=0<br />B=51</font>
										</td>
										<td bgcolor="#cc0000">
												<font color="white">#CC0000<br /><br />R=204<br />G=0<br />B=0</font>
										</td>
								</tr>
								<tr>
										<td colspan="6"> </td>
								</tr>
								<tr>
										<td bgcolor="#99ffff">#99FFFF<br /><br />R=153 <br />G=255 <br />B=255</td>
										<td bgcolor="#99ffcc">#99FFCC<br /><br />R=153 <br />G=255 <br />B=204</td>
										<td bgcolor="#99ff99">#99FF99<br /><br />R=153 <br />G=255 <br />B=153</td>
										<td bgcolor="#99ff66">#99FF66<br /><br />R=153 <br />G=255 <br />B=102</td>
										<td bgcolor="#99ff33">#99FF33<br /><br />R=153 <br />G=255 <br />B=51</td>
										<td bgcolor="#99ff00">#99FF00<br /><br />R=153 <br />G=255 <br />B=0</td>
								</tr>
								<tr>
										<td bgcolor="#99ccff">#99CCFF<br /><br />R=153 <br />G=204 <br />B=255</td>
										<td bgcolor="#99cccc">#99CCCC<br /><br />R=153 <br />G=204 <br />B=204</td>
										<td bgcolor="#99cc99">#99CC99<br /><br />R=153 <br />G=204 <br />B=153</td>
										<td bgcolor="#99cc66">#99CC66<br /><br />R=153 <br />G=204 <br />B=102</td>
										<td bgcolor="#99cc33">#99CC33<br /><br />R=153 <br />G=204 <br />B=51</td>
										<td bgcolor="#99cc00">#99CC00<br /><br />R=153 <br />G=204 <br />B=0</td>
								</tr>
								<tr>
										<td bgcolor="#9999ff">#9999FF<br /><br />R=153 <br />G=153 <br />B=255</td>
										<td bgcolor="#9999cc">#9999CC<br /><br />R=153 <br />G=153 <br />B=204</td>
										<td bgcolor="#999999">#999999<br /><br />R=153 <br />G=153 <br />B=153</td>
										<td bgcolor="#999966">#999966<br /><br />R=153 <br />G=153 <br />B=102</td>
										<td bgcolor="#999933">#999933<br /><br />R=153 <br />G=153 <br />B=51</td>
										<td bgcolor="#999900">#999900<br /><br />R=153 <br />G=153 <br />B=0</td>
								</tr>
								<tr>
										<td bgcolor="#9966ff">
												<font color="white">#9966FF<br /><br />R=153 <br />G=102 <br />B=255</font>
										</td>
										<td bgcolor="#9966cc">
												<font color="white">#9966CC<br /><br />R=153 <br />G=102 <br />B=204</font>
										</td>
										<td bgcolor="#996699">
												<font color="white">#996699<br /><br />R=153<br />G=102<br />B=153</font>
										</td>
										<td bgcolor="#996666">
												<font color="white">#996666<br /><br />R=153<br />G=102<br />B=102</font>
										</td>
										<td bgcolor="#996633">
												<font color="white">#996633<br /><br />R=153<br />G=102<br />B=51</font>
										</td>
										<td bgcolor="#996600">
												<font color="white">#996600<br /><br />R=153<br />G=102<br />B=0</font>
										</td>
								</tr>
								<tr>
										<td bgcolor="#9933ff">
												<font color="white">#9933FF<br /><br />R=153 <br />G=51 <br />B=255</font>
										</td>
										<td bgcolor="#9933cc">
												<font color="white">#9933CC<br /><br />R=153 <br />G=51 <br />B=204</font>
										</td>
										<td bgcolor="#993399">
												<font color="white">#993399<br /><br />R=153 <br />G=51 <br />B=153</font>
										</td>
										<td bgcolor="#993366">
												<font color="white">#993366<br /><br />R=153<br />G=51<br />B=102</font>
										</td>
										<td bgcolor="#993333">
												<font color="white">#993333<br /><br />R=153<br />G=51<br />B=51</font>
										</td>
										<td bgcolor="#993300">
												<font color="white">#993300<br /><br />R=153<br />G=51<br />B=0</font>
										</td>
								</tr>
								<tr>
										<td bgcolor="#9900ff">
												<font color="white">#9900FF<br /><br />R=153 <br />G=0 <br />B=255</font>
										</td>
										<td bgcolor="#9900cc">
												<font color="white">#9900CC<br /><br />R=153<br />G=0<br />B=204</font>
										</td>
										<td bgcolor="#990099">
												<font color="white">#990099<br /><br />R=153 <br />G=0 <br />B=153</font>
										</td>
										<td bgcolor="#990066">
												<font color="white">#990066<br /><br />R=153 <br />G=0 <br />B=102</font>
										</td>
										<td bgcolor="#990033">
												<font color="white">#990033<br /><br />R=153<br />G=0<br />B=51</font>
										</td>
										<td bgcolor="#990000">
												<font color="white">#990000<br /><br />R=153<br />G=0<br />B=0</font>
										</td>
								</tr>
								<tr>
										<td colspan="6"> </td>
								</tr>
								<tr>
										<td bgcolor="#66ffff">#66FFFF<br /><br />R=102 <br />G=255 <br />B=255</td>
										<td bgcolor="#66ffcc">#66FFCC<br /><br />R=102 <br />G=255 <br />B=204</td>
										<td bgcolor="#66ff99">#66FF99<br /><br />R=102 <br />G=255 <br />B=153</td>
										<td bgcolor="#66ff66">#66FF66<br /><br />R=102 <br />G=255 <br />B=102</td>
										<td bgcolor="#66ff33">#66FF33<br /><br />R=102 <br />G=255 <br />B=51</td>
										<td bgcolor="#66ff00">#66FF00<br /><br />R=102 <br />G=255 <br />B=0</td>
								</tr>
								<tr>
										<td bgcolor="#66ccff">#66CCFF<br /><br />R=102 <br />G=204 <br />B=255</td>
										<td bgcolor="#66cccc">#66CCCC<br /><br />R=102 <br />G=204 <br />B=204</td>
										<td bgcolor="#66cc99">#66CC99<br /><br />R=102 <br />G=204 <br />B=153</td>
										<td bgcolor="#66cc66">#66CC66<br /><br />R=102 <br />G=204 <br />B=102</td>
										<td bgcolor="#66cc33">#66CC33<br /><br />R=102 <br />G=204 <br />B=51</td>
										<td bgcolor="#66cc00">#66CC00<br /><br />R=102 <br />G=204 <br />B=0</td>
								</tr>
								<tr>
										<td bgcolor="#6699ff">#6699FF<br /><br />R=102 <br />G=153 <br />B=255</td>
										<td bgcolor="#6699cc">#6699CC<br /><br />R=102 <br />G=153 <br />B=204</td>
										<td bgcolor="#669999">#669999<br /><br />R=102 <br />G=153 <br />B=153</td>
										<td bgcolor="#669966">#669966<br /><br />R=102 <br />G=153 <br />B=102</td>
										<td bgcolor="#669933">#669933<br /><br />R=102 <br />G=153 <br />B=51</td>
										<td bgcolor="#669900">#669900<br /><br />R=102 <br />G=153 <br />B=0</td>
								</tr>
								<tr>
										<td bgcolor="#6666ff">
												<font color="white">#6666FF</font>
												<font color="white">
														<br />
														<br />R=102 <br />G=102 <br />B=255</font>
										</td>
										<td bgcolor="#6666cc">
												<font color="white">#6666CC</font>
												<font color="white">
														<br />
														<br />R=102 <br />G=102 <br />B=204</font>
										</td>
										<td bgcolor="#666699">
												<font color="white">#666699</font>
												<font color="white">
														<br />
														<br />R=102 <br />G=102 <br />B=153</font>
										</td>
										<td bgcolor="#666666">
												<font color="white">#666666</font>
												<font color="white">
														<br />
														<br />R=102 <br />G=102 <br />B=102</font>
										</td>
										<td bgcolor="#666633">
												<font color="white">#666633</font>
												<font color="white">
														<br />
														<br />R=102 <br />G=102 <br />B=51</font>
										</td>
										<td bgcolor="#666600">
												<font color="white">#666600</font>
												<font color="white">
														<br />
														<br />R=102 <br />G=102 <br />B=0</font>
										</td>
								</tr>
								<tr>
										<td bgcolor="#6633ff">
												<font color="white">#6633FF</font>
												<font color="white">
														<br />
														<br />R=102 <br />G=51 <br />B=255</font>
										</td>
										<td bgcolor="#6633cc">
												<font color="white">#6633CC</font>
												<font color="white">
														<br />
														<br />R=102 <br />G=51 <br />B=204</font>
										</td>
										<td bgcolor="#663399">
												<font color="white">#663399</font>
												<font color="white">
														<br />
														<br />R=102 <br />G=51 <br />B=153</font>
										</td>
										<td bgcolor="#663366">
												<font color="white">#663366</font>
												<font color="white">
														<br />
														<br />R=102 <br />G=51 <br />B=102</font>
										</td>
										<td bgcolor="#663333">
												<font color="white">#663333</font>
												<font color="white">
														<br />
														<br />R=102<br />G=51<br />B=51</font>
										</td>
										<td bgcolor="#663300">
												<font color="white">#663300</font>
												<font color="white">
														<br />
														<br />R=102<br />G=51<br />B=0</font>
										</td>
								</tr>
								<tr>
										<td bgcolor="#6600ff">
												<font color="white">#6600FF</font>
												<font color="white">
														<br />
														<br />R=102 <br />G=0 <br />B=255</font>
										</td>
										<td bgcolor="#6600cc">
												<font color="white">#6600CC</font>
												<font color="white">
														<br />
														<br />R=102 <br />G=0 <br />B=204</font>
										</td>
										<td bgcolor="#660099">
												<font color="white">#660099</font>
												<font color="white">
														<br />
														<br />R=102 <br />G=0 <br />B=153</font>
										</td>
										<td bgcolor="#660066">
												<font color="white">#660066</font>
												<font color="white">
														<br />
														<br />R=102<br />G=0<br />B=102</font>
										</td>
										<td bgcolor="#660033">
												<font color="white">#660033</font>
												<font color="white">
														<br />
														<br />R=102<br />G=0<br />B=51</font>
										</td>
										<td bgcolor="#660000">
												<font color="white">#660000</font>
												<font color="white">
														<br />
														<br />R=102<br />G=0<br />B=0</font>
										</td>
								</tr>
								<tr>
										<td colspan="6"> </td>
								</tr>
								<tr>
										<td bgcolor="#33ffff">#33FFFF<br /><br />R=51 <br />G=255 <br />B=255</td>
										<td bgcolor="#33ffcc">#33FFCC<br /><br />R=51 <br />G=255 <br />B=204</td>
										<td bgcolor="#33ff99">#33FF99<br /><br />R=51 <br />G=255 <br />B=153</td>
										<td bgcolor="#33ff66">#33FF66<br /><br />R=51 <br />G=255<br />B=102</td>
										<td bgcolor="#33ff33">#33FF33<br /><br />R=51 <br />G=255 <br />B=51</td>
										<td bgcolor="#33ff00">#33FF00<br /><br />R=51 <br />G=255 <br />B=0</td>
								</tr>
								<tr>
										<td bgcolor="#33ccff">#33CCFF<br /><br />R=51 <br />G=204 <br />B=255</td>
										<td bgcolor="#33cccc">#33CCCC<br /><br />R=51 <br />G=204 <br />B=204</td>
										<td bgcolor="#33cc99">#33CC99<br /><br />R=51 <br />G=204 <br />B=153</td>
										<td bgcolor="#33cc66">#33CC66<br /><br />R=51 <br />G=204 <br />B=102</td>
										<td bgcolor="#33cc33">#33CC33<br /><br />R=51 <br />G=204 <br />B=51</td>
										<td bgcolor="#33cc00">#33CC00<br /><br />R=51 <br />G=204 <br />B=0</td>
								</tr>
								<tr>
										<td bgcolor="#3399ff">#3399FF<br /><br />R=51 <br />G=153 <br />B=255</td>
										<td bgcolor="#3399cc">#3399CC<br /><br />R=51 <br />G=153 <br />B=204</td>
										<td bgcolor="#339999">#339999<br /><br />R=51 <br />G=153 <br />B=153</td>
										<td bgcolor="#339966">#339966<br /><br />R=51 <br />G=153 <br />B=102</td>
										<td bgcolor="#339933">#339933<br /><br />R=51 <br />G=153 <br />B=51</td>
										<td bgcolor="#339900">#339900<br /><br />R=51 <br />G=153 <br />B=0</td>
								</tr>
								<tr>
										<td bgcolor="#3366ff">
												<font color="white">#3366FF</font>
												<font color="white">
														<br />
														<br />R=51 <br />G=102 <br />B=255</font>
										</td>
										<td bgcolor="#3366cc">
												<font color="white">#3366CC</font>
												<font color="white">
														<br />
														<br />R=51 <br />G=102 <br />B=204</font>
										</td>
										<td bgcolor="#336699">
												<font color="white">#336699</font>
												<font color="white">
														<br />
														<br />R=51 <br />G=102 <br />B=153</font>
										</td>
										<td bgcolor="#336666">
												<font color="white">#336666</font>
												<font color="white">
														<br />
														<br />R=51 <br />G=102 <br />B=102</font>
										</td>
										<td bgcolor="#336633">
												<font color="white">#336633</font>
												<font color="white">
														<br />
														<br />R=51 <br />G=102 <br />B=51</font>
										</td>
										<td bgcolor="#336600">
												<font color="white">#336600</font>
												<font color="white">
														<br />
														<br />R=51 <br />G=102 <br />B=0</font>
										</td>
								</tr>
								<tr>
										<td bgcolor="#3333ff">
												<font color="white">#3333FF</font>
												<font color="white">
														<br />
														<br />R=51 <br />G=51 <br />B=255</font>
										</td>
										<td bgcolor="#3333cc">
												<font color="white">#3333CC</font>
												<font color="white">
														<br />
														<br />R=51 <br />G=51 <br />B=204</font>
										</td>
										<td bgcolor="#333399">
												<font color="white">#333399</font>
												<font color="white">
														<br />
														<br />R=51 <br />G=51 <br />B=153</font>
										</td>
										<td bgcolor="#333366">
												<font color="white">#333366</font>
												<font color="white">
														<br />
														<br />R=51 <br />G=51 <br />B=102</font>
										</td>
										<td bgcolor="#333333">
												<font color="white">#333333</font>
												<font color="white">
														<br />
														<br />R=51 <br />G=51 <br />B=51</font>
										</td>
										<td bgcolor="#333300">
												<font color="white">#333300</font>
												<font color="white">
														<br />
														<br />R=51 <br />G=51 <br />B=0</font>
										</td>
								</tr>
								<tr>
										<td bgcolor="#3300ff">
												<font color="white">#3300FF</font>
												<font color="white">
														<br />
														<br />R=51 <br />G=0 <br />B=255</font>
										</td>
										<td bgcolor="#3300cc">
												<font color="white">#3300CC</font>
												<font color="white">
														<br />
														<br />R=51 <br />G=0 <br />B=204</font>
										</td>
										<td bgcolor="#330099">
												<font color="white">#330099</font>
												<font color="white">
														<br />
														<br />R=51 <br />G=0 <br />B=153</font>
										</td>
										<td bgcolor="#330066">
												<font color="white">#330066</font>
												<font color="white">
														<br />
														<br />R=51 <br />G=0 <br />B=102</font>
										</td>
										<td bgcolor="#330033">
												<font color="white">#330033</font>
												<font color="white">
														<br />
														<br />R=51 <br />G=0 <br />B=51</font>
										</td>
										<td bgcolor="#330000">
												<font color="white">#330000</font>
												<font color="white">
														<br />
														<br />R=51<br />G=0<br />B=0</font>
										</td>
								</tr>
								<tr>
										<td colspan="6"> </td>
								</tr>
								<tr>
										<td bgcolor="#00ffff">#00FFFF<br /><br />R=0 <br />G=255 <br />B=255</td>
										<td bgcolor="#00ffcc">#00FFCC<br /><br />R=0 <br />G=255 <br />B=204</td>
										<td bgcolor="#00ff99">#00FF99<br /><br />R=0 <br />G=255 <br />B=153</td>
										<td bgcolor="#00ff66">#00FF66<br /><br />R=0 <br />G=255 <br />B=102</td>
										<td bgcolor="#00ff33">#00FF33<br /><br />R=0 <br />G=255 <br />B=51</td>
										<td bgcolor="#00ff00">#00FF00<br /><br />R=0<br />G=255 <br />B=0</td>
								</tr>
								<tr>
										<td bgcolor="#00ccff">#00CCFF<br /><br />R=0 <br />G=204 <br />B=255</td>
										<td bgcolor="#00cccc">#00CCCC<br /><br />R=0 <br />G=204 <br />B=204</td>
										<td bgcolor="#00cc99">#00CC99<br /><br />R=0 <br />G=204 <br />B=153</td>
										<td bgcolor="#00cc66">#00CC66<br /><br />R=0 <br />G=204 <br />B=102</td>
										<td bgcolor="#00cc33">#00CC33<br /><br />R=0 <br />G=204 <br />B=51</td>
										<td bgcolor="#00cc00">#00CC00<br /><br />R=0 <br />G=204 <br />B=0</td>
								</tr>
								<tr>
										<td bgcolor="#0099ff">#0099FF<br /><br />R=0 <br />G=153 <br />B=255</td>
										<td bgcolor="#0099cc">#0099CC<br /><br />R=0 <br />G=153 <br />B=204</td>
										<td bgcolor="#009999">#009999<br /><br />R=0 <br />G=153 <br />B=153</td>
										<td bgcolor="#009966">#009966<br /><br />R=0 <br />G=153 <br />B=102</td>
										<td bgcolor="#009933">#009933<br /><br />R=0 <br />G=153 <br />B=51</td>
										<td bgcolor="#009900">#009900<br /><br />R=0 <br />G=153 <br />B=0</td>
								</tr>
								<tr>
										<td bgcolor="#0066ff">
												<font color="white">#0066FF</font>
												<font color="white">
														<br />
														<br />R=0 <br />G=102 <br />B=255</font>
										</td>
										<td bgcolor="#0066cc">
												<font color="white">#0066CC</font>
												<font color="white">
														<br />
														<br />R=0 <br />G=102 <br />B=204</font>
										</td>
										<td bgcolor="#006699">
												<font color="white">#006699</font>
												<font color="white">
														<br />
														<br />R=0 <br />G=102 <br />B=153</font>
										</td>
										<td bgcolor="#006666">
												<font color="white">#006666</font>
												<font color="white">
														<br />
														<br />R=0 <br />G=102 <br />B=102</font>
										</td>
										<td bgcolor="#006633">
												<font color="white">#006633</font>
												<font color="white">
														<br />
														<br />R=0 <br />G=102 <br />B=51</font>
										</td>
										<td bgcolor="#006600">
												<font color="white">#006600</font>
												<font color="white">
														<br />
														<br />R=0 <br />G=102 <br />B=0</font>
										</td>
								</tr>
								<tr>
										<td bgcolor="#0033ff">
												<font color="white">#0033FF</font>
												<font color="white">
														<br />
														<br />R=0 <br />G=51 <br />B=255</font>
										</td>
										<td bgcolor="#0033cc">
												<font color="white">#0033CC</font>
												<font color="white">
														<br />
														<br />R=0 <br />G=51 <br />B=204</font>
										</td>
										<td bgcolor="#003399">
												<font color="white">#003399</font>
												<font color="white">
														<br />
														<br />R=0 <br />G=51 <br />B=153</font>
										</td>
										<td bgcolor="#003366">
												<font color="white">#003366</font>
												<font color="white">
														<br />
														<br />R=0 <br />G=51 <br />B=102</font>
										</td>
										<td bgcolor="#003333">
												<font color="white">#003333</font>
												<font color="white">
														<br />
														<br />R=0 <br />G=51 <br />B=51</font>
										</td>
										<td bgcolor="#003300">
												<font color="white">#003300</font>
												<font color="white">
														<br />
														<br />R=0 <br />G=51 <br />B=0</font>
										</td>
								</tr>
								<tr>
										<td bgcolor="#0000ff">
												<font color="white">#0000FF</font>
												<font color="white">
														<br />
														<br />R=0 <br />G=0 <br />B=255</font>
										</td>
										<td bgcolor="#0000cc">
												<font color="white">#0000CC</font>
												<font color="white">
														<br />
														<br />R=0 <br />G=0 <br />B=204</font>
										</td>
										<td bgcolor="#000099">
												<font color="white">#000099</font>
												<font color="white">
														<br />
														<br />R=0 <br />G=0 <br />B=153</font>
										</td>
										<td bgcolor="#000066">
												<font color="white">#000066</font>
												<font color="white">
														<br />
														<br />R=0 <br />G=0 <br />B=102</font>
										</td>
										<td bgcolor="#000033">
												<font color="white">#000033</font>
												<font color="white">
														<br />
														<br />R=0 <br />G=0 <br />B=51</font>
										</td>
										<td bgcolor="#000000">
												<font color="white">#000000</font>
												<font color="white">
														<br />
														<br />R=0 <br />G=0 <br />B=0</font>
										</td>
								</tr>
						</tbody>
				</table>
		</center>
		<p align="left">
				<br />
		</p>
<img src ="http://www.blogjava.net/coacoa2008/aggbug/145051.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/coacoa2008/" target="_blank">Welcome</a> 2007-09-14 09:50 <a href="http://www.blogjava.net/coacoa2008/articles/145051.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>表单Form实例和讲解</title><link>http://www.blogjava.net/coacoa2008/articles/144883.html</link><dc:creator>Welcome</dc:creator><author>Welcome</author><pubDate>Thu, 13 Sep 2007 07:40:00 GMT</pubDate><guid>http://www.blogjava.net/coacoa2008/articles/144883.html</guid><wfw:comment>http://www.blogjava.net/coacoa2008/comments/144883.html</wfw:comment><comments>http://www.blogjava.net/coacoa2008/articles/144883.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/coacoa2008/comments/commentRss/144883.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/coacoa2008/services/trackbacks/144883.html</trackback:ping><description><![CDATA[
		<h2>
				<h2>
						<img height="20" alt="+" src="http://www.lib.tsinghua.edu.cn/chinese/INTERNET/HTML/Normal/br20t.gif" width="20" /> HTML 文件结构(Document Structures)</h2>
				<h3>&lt;html&gt;...&lt;/html&gt;<br />&lt;head&gt;...&lt;/head&gt;<br />&lt;body&gt;...&lt;/body&gt;</h3>
				<dl>
						<pre>&lt;HTML&gt;
&lt;HEAD&gt;
     &lt;title&gt;, &lt;base&gt;, &lt;link&gt;, &lt;isindex&gt;, &lt;meta&gt;
&lt;/HEAD&gt;
&lt;BODY&gt;
    HTML 文件的正文写在这里... ... 
&lt;/BODY&gt;
&lt;/HTML&gt;
</pre>
				</dl>
				<p>
						<!--################## LANGUAGE INFO ########################-->
						<a name="lang">
						</a>
				</p>
				<h2>
						<img height="20" alt="+" src="http://www.lib.tsinghua.edu.cn/chinese/INTERNET/HTML/Normal/br20t.gif" width="20" /> 语言字符集(Charsets)的信息 <img height="14" src="http://www.lib.tsinghua.edu.cn/chinese/INTERNET/HTML/Normal/netscape.gif" width="80" /></h2>
				<h3>&lt;meta http-equiv="Content-Type" content="text/html;charset=#"&gt;<br /></h3>
				<dl compact="">
						<dt>#= 
</dt>
						<dd>us-ascii, iso-8859-1, x-mac-roman, iso-8859-2, x-mac-ce,<br />iso-2022-jp, x-sjis, x-euc-jp,<br />euc-kr, iso-2022-kr,<br />gb2312, gb_2312-80,<br />x-euc-tw, x-cns11643-1, x-cns11643-2, big5 </dd>
				</dl>
				<p>可在 HTML 文件中设置 MIME 字符集信息。<br />您在浏览主页时，最好自己在浏览器的选项菜单内选择相应的语言(language encoding)。<br />但是如果 HTML 文件里写明了设置，浏览器就会自动设置语言选项。<br />尤其是主页里用到了<a href="http://www.lib.tsinghua.edu.cn/chinese/INTERNET/HTML/Normal/entities.html">字符实体(entities)</a>，则该主页就应该写明字符集信息。<br />否则，您在浏览该主页时，若未正确设置语言选项，显示将可能混乱。</p>
				<pre>
				</pre>
				<p>
						<!--################## Background Color ########################-->
						<a name="bgcolor">
						</a>
				</p>
				<h2>
						<img height="20" alt="+" src="http://www.lib.tsinghua.edu.cn/chinese/INTERNET/HTML/Normal/br20t.gif" width="20" /> 背景色彩和文字色彩</h2>
				<h3>&lt;body bgcolor=# text=# link=# alink=# vlink=#&gt;</h3>
				<dl>
						<dd>bgcolor --- 背景色彩 
</dd>
						<dd>text --- 非可链接文字的色彩 
</dd>
						<dd>link --- 可链接文字的色彩 
</dd>
						<dd>alink --- 正被点击的可链接文字的色彩 
</dd>
						<dd>vlink --- 已经点击(访问)过的可链接文字的色彩 
<h3>#=rrggbb</h3></dd>
						<dd>色彩是用 16 进制的 红－绿－蓝(red-green-blue, RGB) 值来表示。<br />16 进制的数码有: 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f. 
<p></p></dd>
				</dl>
				<h3>背景图象 &lt;body background="image-URL"&gt;<br />Non Scrolling Background &lt;body bgproperties=FIXED&gt; <img height="14" src="http://www.lib.tsinghua.edu.cn/chinese/INTERNET/HTML/Normal/ie.gif" width="80" /></h3>
				<pre>
				</pre>
				<p>
						<!--################## MARGIN ########################-->
						<a name="margin">
						</a>
				</p>
				<h2>
						<img height="20" alt="+" src="http://www.lib.tsinghua.edu.cn/chinese/INTERNET/HTML/Normal/br20t.gif" width="20" align="top" /> 页面空白(Margin) <img height="14" src="http://www.lib.tsinghua.edu.cn/chinese/INTERNET/HTML/Normal/ie.gif" width="80" /></h2>
				<p>
						<!---Margi- -->
				</p>
				<h3>页面左边的空白 &lt;body leftmargin=#&gt;<br />页面上方的空白(天头) &lt;body topmargin=#&gt; #=margin amount</h3>
				<pre>
				</pre>
				<p>
						<!--################## Link ########################-->
						<a name="link">
						</a>
				</p>
				<h2>
						<img height="20" alt="+" src="http://www.lib.tsinghua.edu.cn/chinese/INTERNET/HTML/Normal/br20t.gif" width="20" align="top" /> 链接(Link)</h2>
				<p>
						<!---link basi- -->
				</p>
				<h3>基本语法 &lt;a href="URL"&gt; ... &lt;/a&gt;</h3>
				<dl>
						<dd>
								<tt>这是一个<br />&lt;a href="samp/link.html"&gt;链接的例子&lt;/a&gt;。 <br />点一下带下划线的文字!</tt>
								<br />
						</dd>
				</dl>
				<p>这是一个<a href="http://www.lib.tsinghua.edu.cn/chinese/INTERNET/HTML/Normal/samp/link.html">链接的例子</a>。 点一下带下划线的文字!</p>
				<p>
				</p>
				<pre>
				</pre>
				<p>
						<!---link nam- -->
				</p>
				<h3>跳转到页面的另外一个地方<br />&lt;a href="#name"&gt; ... &lt;/a&gt;<br />&lt;a name="name"&gt; ... &lt;/a&gt; </h3>
				<dl>
						<dd>
								<tt>&lt;a href="#jump-test"&gt;跳转到下一个"链接点"&lt;/a&gt;&lt;P&gt;<br />&lt;a name="jump-test"&gt;下一个链接点&lt;/a&gt; </tt>
						</dd>
				</dl>
				<p>
						<a href="http://www.lib.tsinghua.edu.cn/chinese/INTERNET/HTML/Normal/page.html#jump-test">跳转到下一个"链接点"</a>
				</p>
				<p>
						<a name="jump-test">
						</a>下一个链接点</p>
				<pre>
				</pre>
				<p>
						<!---link name - -->
						<a name="jump2">
						</a>
				</p>
				<h3>跳转到另一个页面的某个地方<br />&lt;a href="URL#name"&gt; ... &lt;/a&gt;<br />&lt;a name="name"&gt; ... &lt;/a&gt; </h3>
				<dl>
						<dd>
								<tt>跳转到另一个页面的&lt;a href="samp/link.html#jump-test"&gt;某个地方&lt;/a&gt;。<br /></tt>
						</dd>
				</dl>
				<p>跳转到另一个页面的<a href="http://www.lib.tsinghua.edu.cn/chinese/INTERNET/HTML/Normal/samp/link.html#jump-test">某个地方</a>。</p>
				<pre>
				</pre>
				<p>
						<!--################## Target WINDOWS ########################-->
						<a name="window">
						</a>
				</p>
				<h2>
						<img height="20" alt="+" src="http://www.lib.tsinghua.edu.cn/chinese/INTERNET/HTML/Normal/br20t.gif" width="20" align="top" /> 开一个新的(浏览器)窗口 (Target Window) </h2>
				<p>
						<!---Target Window- -->
				</p>
				<h3>&lt;a href="URL" target="Window_Name"&gt; ... &lt;/a&gt;</h3>
				<dl>
						<dd>
								<tt>&lt;a href="samp/window.html" target="window_name"&gt;<br />开一个新窗口!<br />&lt;/a&gt; </tt>
						</dd>
				</dl>
				<p>
						<a href="http://www.lib.tsinghua.edu.cn/chinese/INTERNET/HTML/Normal/samp/window.html" target="window_name">开一个新窗口!</a>
				</p>
				<pre>
				</pre>
				<p>
						<!--################## HR ########################-->
						<a name="hr">
						</a>
				</p>
				<h2>
						<img height="20" alt="+" src="http://www.lib.tsinghua.edu.cn/chinese/INTERNET/HTML/Normal/br20t.gif" width="20" /> 标尺线</h2>
				<h3>&lt;hr&gt;</h3>
				<p>
						<tt>&lt;hr&gt; </tt>
				</p>
				<p>
				</p>
				<hr />
				<p>
				</p>
				<pre>
				</pre>
				<h3>&lt;hr size=#&gt;</h3>
				<p>
						<tt>&lt;hr size=10&gt; </tt>
				</p>
				<p>
				</p>
				<hr size="10" />
				<p>
				</p>
				<pre>
				</pre>
				<h3>&lt;hr width=#&gt;</h3>
				<p>
						<tt>&lt;hr width=50&gt;<br />&lt;hr width=50%&gt; </tt>
				</p>
				<p>
				</p>
				<hr width="50" />
				<hr width="50%" />
				<p>
				</p>
				<pre>
				</pre>
				<h3>&lt;hr align=#&gt; #=left, right</h3>
				<p>
						<tt>&lt;hr width=50% align=left&gt;<br />&lt;hr width=50% align=right&gt; </tt>
				</p>
				<p>
				</p>
				<hr align="left" width="50%" />
				<hr align="right" width="50%" />
				<p>
				</p>
				<pre>
				</pre>
				<h3>&lt;hr noshade&gt;</h3>
				<p>
						<tt>&lt;hr noshade&gt; </tt>
				</p>
				<p>
				</p>
				<hr noshade="" />
				<p>
				</p>
				<pre>
				</pre>
				<h3>&lt;hr color=#&gt; <img height="14" src="http://www.lib.tsinghua.edu.cn/chinese/INTERNET/HTML/Normal/ie.gif" width="80" /></h3>
		</h2>
		<h2>========</h2>
		<h2>
				<img height="20" alt="+" src="http://www.lib.tsinghua.edu.cn/chinese/INTERNET/HTML/Normal/br20t.gif" width="20" align="top" /> 基本语法</h2>
		<p>
				<!---Form Basi- -->
		</p>
		<h3>表单的基本语法</h3>
		<dl>
				<h3>
						<tt>&lt;form action="url" method=*&gt;<br />... <br />... <br />&lt;input type=submit&gt; &lt;input type=reset&gt;<br />&lt;/form&gt; </tt>
				</h3>
				<p>
						<tt>*=GET, POST </tt>
				</p>
		</dl>
		<pre>
		</pre>
		<p>
				<!---Input Basi- -->
		</p>
		<h3>表单中提供给用户的输入形式</h3>
		<dl>
				<h3>
						<tt>&lt;input type=* name=**&gt;</tt>
				</h3>
				<p>
						<tt>*=text, password, checkbox, radio, image, hidden, submit, reset</tt>
				</p>
				<p>
						<tt>**=Symbolic Name for CGI script </tt>
				</p>
		</dl>
		<pre>
		</pre>
		<p>
				<!--################## Text & Passwd ########################-->
				<a name="text">
				</a>
		</p>
		<h2>
				<img height="20" alt="+" src="http://www.lib.tsinghua.edu.cn/chinese/INTERNET/HTML/Normal/br20t.gif" width="20" align="top" /> 文字输入和密码输入</h2>
		<p>
				<!---Text & Passwor- -->
				<tt>*=text, password</tt>
		</p>
		<h3>&lt;input type=*&gt;<br />&lt;input type=* value=**&gt;</h3>
		<pre>&lt;form action=/cgi-bin/post-query method=POST&gt;
您的姓名: 
&lt;input type=text name=姓名&gt;&lt;br&gt;
您的主页的网址: 
&lt;input type=text name=网址 value=http://&gt;&lt;br&gt;
密码: 
&lt;input type=password name=密码&gt;&lt;br&gt;
&lt;input type=submit value="发送"&gt;&lt;input type=reset value="重设"&gt;
&lt;/form&gt;

</pre>
		<p>
		</p>
		<form action="/cgi-bin/post-query" method="post">您的姓名: <input name="姓名" /><br />您的主页的网址: <input value="http://" name="网址" /><br />密码: <input type="password" name="密码" /><br /><input type="submit" value="发送" /><input type="reset" value="重设" /></form>
		<pre>
		</pre>
		<p>
				<!---Text & Password- Size, Max- -->
		</p>
		<h3>&lt;input type=* size=**&gt;<br />&lt;input type=* maxlength=**&gt;</h3>
		<pre>&lt;form action=/cgi-bin/post-query method=POST&gt;
&lt;input type=text name=a01 size=40&gt;&lt;br&gt;
&lt;input type=text name=a02 maxlength=5&gt;&lt;br&gt;
&lt;input type=submit&gt;&lt;input type=reset&gt;
&lt;/form&gt;

</pre>
		<p>
		</p>
		<form action="/cgi-bin/post-query" method="post">
				<input size="40" name="a01" />
				<br />
				<input maxlength="5" name="a02" />
				<br />
				<input type="submit" value="提交查询内容" />
				<input type="reset" value="重置" />
		</form>
		<pre>
		</pre>
		<p>
				<!--################## Checkbox & Radio ########################-->
				<a name="check">
				</a>
		</p>
		<h2>
				<img height="20" alt="+" src="http://www.lib.tsinghua.edu.cn/chinese/INTERNET/HTML/Normal/br20t.gif" width="20" align="top" /> 复选框(Checkbox) 和 单选框(RadioButton) </h2>
		<p>
				<!---Checkbo- -->
		</p>
		<h3>&lt;input type=checkbox&gt;<br />&lt;input type=checkbox checked&gt;<br />&lt;input type=checkbox value=**&gt;</h3>
		<pre>&lt;form action=/cgi-bin/post-query method=POST&gt;
&lt;input type=checkbox name=水果1&gt;
        Banana&lt;p&gt;
&lt;input type=checkbox name=水果2 checked&gt;
        Apple&lt;p&gt;
&lt;input type=checkbox name=水果3 value=橘子&gt;
        Orange&lt;p&gt;
&lt;input type=submit&gt;&lt;input type=reset&gt;
&lt;/form&gt;

</pre>
		<p>
		</p>
		<form action="/cgi-bin/post-query" method="post">
				<input type="checkbox" name="水果1" />Banana 
<p><input type="checkbox" checked="" name="水果2" />Apple</p><p><input type="checkbox" value="橘子" name="水果3" />Orange</p><p><input type="submit" value="提交查询内容" /><input type="reset" value="重置" /></p></form>
		<pre>
		</pre>
		<p>
				<!---Checkbo- -->
		</p>
		<h3>&lt;input type=radio value=**&gt;<br />&lt;input type=radio value=** checked&gt;</h3>
		<pre>&lt;form action=/cgi-bin/post-query method=POST&gt;
&lt;input type=radio name=水果&gt;
        Banana&lt;p&gt;
&lt;input type=radio name=水果 checked&gt;
        Apple&lt;p&gt;
&lt;input type=radio name=水果 value=橘子&gt;
        Orange&lt;p&gt;
&lt;input type=submit&gt;&lt;input type=reset&gt;
&lt;/form&gt;

</pre>
		<p>
		</p>
		<form action="/cgi-bin/post-query" method="post">
				<input type="radio" name="水果" />Banana 
<p><input type="radio" checked="" name="水果" />Apple</p><p><input type="radio" value="橘子" name="水果" />Orange</p><p><input type="submit" value="提交查询内容" /><input type="reset" value="重置" /></p></form>
		<pre>
		</pre>
		<p>
				<!--################## Image ########################-->
				<a name="image">
				</a>
		</p>
		<h2>
				<img height="20" alt="+" src="http://www.lib.tsinghua.edu.cn/chinese/INTERNET/HTML/Normal/br20t.gif" width="20" align="top" /> 图象坐标 </h2>
		<p>
				<b>在下面选则一个系数后，在图象上点一下，就知道什么是图象坐标了！</b>
		</p>
		<h3>&lt;input type=image src=url&gt;</h3>
		<pre>&lt;form action=/cgi-bin/post-query method=POST&gt;
&lt;input type=image name=face src=f.gif&gt;&lt;p&gt;
&lt;input type=radio name=zoom value=2 checked&gt;x2
&lt;input type=radio name=zoom value=4&gt;x4
&lt;input type=radio name=zoom value=6&gt;x6&lt;p&gt;
&lt;input type=reset&gt;
&lt;/form&gt;

</pre>
		<p>
		</p>
		<form action="/cgi-bin/post-query" method="post">
				<input type="image" src="http://www.lib.tsinghua.edu.cn/chinese/INTERNET/HTML/Normal/f.gif" name="face" />
				<p>
						<input type="radio" checked="" value="2" name="zoom" />x2 <input type="radio" value="4" name="zoom" />x4 <input type="radio" value="6" name="zoom" />x6</p>
				<p>
						<input type="reset" value="重置" />
				</p>
		</form>
		<pre>
		</pre>
		<p>
				<!--################## Hidden ########################-->
				<a name="hide">
				</a>
		</p>
		<h2>
				<img height="20" alt="+" src="http://www.lib.tsinghua.edu.cn/chinese/INTERNET/HTML/Normal/br20t.gif" width="20" align="top" /> 隐藏表单的元素 </h2>
		<h3>&lt;input type=hidden value=*&gt;</h3>
		<pre>&lt;form action=/cgi-bin/post-query method=POST&gt;
&lt;input type=hidden name=add value=hoge@hoge.jp&gt;
Here is a hidden element. &lt;p&gt;
&lt;input type=submit&gt;&lt;input type=reset&gt;
&lt;/form&gt;

</pre>
		<p>
		</p>
		<form action="/cgi-bin/post-query" method="post">
				<input type="hidden" value="hoge@hoge.jp" name="add" />Here is a hidden element. 
<p><input type="submit" value="提交查询内容" /><input type="reset" value="重置" /></p></form>
		<pre>
		</pre>
		<p>
				<!--################## Select ########################-->
				<a name="select">
				</a>
		</p>
		<h2>
				<img height="20" alt="+" src="http://www.lib.tsinghua.edu.cn/chinese/INTERNET/HTML/Normal/br20t.gif" width="20" align="top" /> 列表框(Selectable Menu) </h2>
		<p>
				<!---Basi- -->
		</p>
		<h3>基本语法</h3>
		<dl>
				<h3>&lt;select name=*&gt;<br />&lt;option&gt; ...<br />&lt;/select&gt; </h3>
		</dl>
		<p>
				<!---select & optio- -->
		</p>
		<h3>&lt;option selected&gt;<br />&lt;option value=**&gt;</h3>
		<pre>&lt;form action=/cgi-bin/post-query method=POST&gt;
&lt;select name=fruits&gt;
        &lt;option&gt;Banana
        &lt;option selected&gt;Apple
        &lt;option value=My_Favorite&gt;Orange
&lt;/select&gt;&lt;p&gt;
&lt;input type=submit&gt;&lt;input type=reset&gt;
&lt;/form&gt;

</pre>
		<p>
		</p>
		<form action="/cgi-bin/post-query" method="post">
				<select name="fruits">
						<option>Banana</option>
						<option selected="">Apple</option>
						<option value="My_Favorite">Orange</option>
				</select>
				<p>
						<input type="submit" value="提交查询内容" />
						<input type="reset" value="重置" />
				</p>
		</form>
		<pre>
		</pre>
		<p>
				<!---size & multipl- -->
		</p>
		<h3>&lt;select size=**&gt;</h3>
		<pre>&lt;form action=/cgi-bin/post-query method=POST&gt;
&lt;select name=fruits size=3&gt;
        &lt;option&gt;Banana
        &lt;option selected&gt;Apple
        &lt;option value=My_Favorite&gt;Orange
        &lt;option&gt;Peach
&lt;/select&gt;&lt;p&gt;
&lt;input type=submit&gt;&lt;input type=reset&gt;
&lt;/form&gt;

</pre>
		<p>
		</p>
		<form action="/cgi-bin/post-query" method="post">
				<select size="3" name="fruits">
						<option>Banana</option>
						<option selected="">Apple</option>
						<option value="My_Favorite">Orange</option>
						<option>Peach</option>
				</select>
				<p>
						<input type="submit" value="提交查询内容" />
						<input type="reset" value="重置" />
				</p>
		</form>
		<pre>
		</pre>
		<p>
				<!---multipl- -->
		</p>
		<h3>&lt;select size=** multiple&gt;</h3>
		<b>注意，是用 Ctrl 键配合鼠标实现多选。<br />(和 MS-WINDOWS 的 File Manager 一样)</b>
		<pre>&lt;form action=/cgi-bin/post-query method=POST&gt;
&lt;select name=fruits size=3 multiple&gt;
        &lt;option selected&gt;Banana
        &lt;option selected&gt;Apple
        &lt;option value=My_Favorite&gt;Orange
        &lt;option selected&gt;Peach
&lt;/select&gt;&lt;p&gt;
&lt;input type=submit&gt;&lt;input type=reset&gt;
&lt;/form&gt;
</pre>
		<p>
		</p>
		<form action="/cgi-bin/post-query" method="post">
				<select multiple="" size="3" name="fruits">
						<option selected="">Banana</option>
						<option selected="">Apple</option>
						<option value="My_Favorite">Orange</option>
						<option selected="">Peach</option>
				</select>
				<p>
						<input type="submit" value="提交查询内容" />
						<input type="reset" value="重置" />
				</p>
		</form>
		<pre>
		</pre>
		<p>
				<!--################## Textarea ########################-->
				<a name="textarea">
				</a>
		</p>
		<h2>
				<img height="20" alt="+" src="http://www.lib.tsinghua.edu.cn/chinese/INTERNET/HTML/Normal/br20t.gif" width="20" align="top" /> 文本区域</h2>
		<h3>&lt;textarea name=* rows=** cols=**&gt; ... &lt;textarea&gt;</h3>
		<pre>&lt;form action=/cgi-bin/post-query method=POST&gt;
&lt;textarea name=comment rows=5 cols=60&gt;
&lt;/textarea&gt;
&lt;P&gt;
&lt;input type=submit&gt;&lt;input type=reset&gt;
&lt;/form&gt;

</pre>
		<p>
		</p>
		<form action="/cgi-bin/post-query" method="post">
				<textarea name="comment" rows="5" cols="60">
				</textarea>
				<p>
						<input type="submit" value="提交查询内容" />
						<input type="reset" value="重置" />
				</p>
		</form>
		<pre>
		</pre>
		<p>
				<!---Word Wrapping Of- -->
				<a name="wrap">
				</a>
		</p>
		<h3>对于很长的行是否进行换行的设置(Word Wrapping) <img height="14" src="http://www.lib.tsinghua.edu.cn/chinese/INTERNET/HTML/Normal/netscape.gif" width="80" /></h3>
		<h3>&lt;textarea wrap=off&gt; ... &lt;/textarea&gt;</h3>
		<dl>
				<dd>不换行，是缺省设置。 </dd>
		</dl>
		<p>
				<!---Word Wrapping Sof- -->
		</p>
		<h3>&lt;textarea wrap=soft&gt; ... &lt;/textarea&gt;</h3>“软换行”，好象 MS－WORD 里的“软回车”。 
<dl><dd><tt>&lt;form action=/cgi-bin/post-query method=POST&gt;<br />&lt;textarea wrap=soft name=comment rows=5 cols=25&gt; &lt;/textarea&gt;&lt;P&gt;<br />&lt;input type=submit&gt;&lt;input type=reset&gt;<br />&lt;/form&gt;</tt><br /></dd></dl><p></p><form action="/cgi-bin/post-query" method="post"><textarea name="comment" rows="5" cols="25"></textarea><p><input type="submit" value="提交查询内容" /><input type="reset" value="重置" /></p></form><p><!---Word Wrapping Har- --></p><h3>&lt;textarea wrap=hard&gt; ... &lt;/textarea&gt;</h3>“硬换行”，好象 MS－WORD 里的“硬回车”。 
<dl><dd><tt>&lt;form action=/cgi-bin/post-query method=POST&gt;<br />&lt;textarea wrap=hard name=comment rows=5 cols=25&gt; &lt;/textarea&gt;&lt;P&gt;<br />&lt;input type=submit&gt;&lt;input type=reset&gt;<br />&lt;/form&gt;</tt><br /></dd></dl><p></p><form action="/cgi-bin/post-query" method="post"><textarea name="comment" rows="5" wrap="hard" cols="25"></textarea><p><input type="submit" value="提交查询内容" /><input type="reset" value="重置" /></p></form><img src ="http://www.blogjava.net/coacoa2008/aggbug/144883.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/coacoa2008/" target="_blank">Welcome</a> 2007-09-13 15:40 <a href="http://www.blogjava.net/coacoa2008/articles/144883.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用户CLED操作</title><link>http://www.blogjava.net/coacoa2008/articles/144775.html</link><dc:creator>Welcome</dc:creator><author>Welcome</author><pubDate>Thu, 13 Sep 2007 03:14:00 GMT</pubDate><guid>http://www.blogjava.net/coacoa2008/articles/144775.html</guid><wfw:comment>http://www.blogjava.net/coacoa2008/comments/144775.html</wfw:comment><comments>http://www.blogjava.net/coacoa2008/articles/144775.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/coacoa2008/comments/commentRss/144775.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/coacoa2008/services/trackbacks/144775.html</trackback:ping><description><![CDATA[
		<p>(1)createUser!input.jsp<br /><br />&lt;FORM id="form1" METHOD=POST ACTION="createUserAction.jsp" onSubmit="return check();"&gt;<br /> &lt;TABLE  class="inputTable"&gt;<br />  &lt;TR&gt;&lt;Th&gt;用户名&lt;/Th&gt;&lt;TD&gt;&lt;INPUT TYPE="text" NAME="username" id="username"&gt;&lt;span class="require"&gt;(*)&lt;/span&gt;&lt;/TD&gt;&lt;/TR&gt;<br />  &lt;TR&gt;&lt;Th&gt;密码&lt;/Th&gt;&lt;TD&gt;&lt;INPUT TYPE="password" NAME="password" id="password"&gt;&lt;span class="require"&gt;(*)&lt;/span&gt;&lt;/TD&gt;&lt;/TR&gt;<br />  &lt;TR&gt;&lt;Th&gt;重输密码&lt;/Th&gt;&lt;TD&gt;&lt;INPUT TYPE="password" NAME="repwd" id="repwd"&gt;&lt;span class="require"&gt;(*)&lt;/span&gt;&lt;/TD&gt;&lt;/TR&gt;<br />  &lt;TR&gt;&lt;Th&gt;&amp;nbsp;&lt;/Th&gt;&lt;TD&gt;&lt;INPUT TYPE="submit" value="创建新用户"&gt;&lt;/TD&gt;&lt;/TR&gt;<br /> &lt;/TABLE&gt;<br />&lt;/FORM&gt;<br /><br />(2)<br /><br />createUserAction.jsp<br /><br />&lt;sql:query var="rs" dataSource="${dataSource}" &gt;<br /> select * from tb_user where username=?<br /> &lt;sql:param value="${param['username']}"/&gt;<br />&lt;/sql:query&gt; </p>
		<p>&lt;c:choose&gt;<br />&lt;c:when <font color="#ff1493">test</font>="${rs.rowCount<font color="#ff1493">==</font>0}"&gt;<br /><font color="#ff0000"> &lt;sql:update var="rs" dataSource="${dataSource}" &gt;</font><br />  insert into tb_user(username,password) values(?,?)<br />  &lt;sql:param value="${param['username']}"/&gt;<br />  &lt;sql:param value="${param['password']}"/&gt;<br /> &lt;/sql:update&gt; <br /> <br /> &lt;c:redirect url="listUser.jsp"/&gt;<br />&lt;/c:when&gt;</p>
		<p>&lt;c:otherwise&gt;<br /> &lt;SCRIPT LANGUAGE="JavaScript"&gt;<br /> &lt;!--<br />  alert("该用户名已存在");<br />  history.go(-1);<br /> //--&gt;<br /> &lt;/SCRIPT&gt;<br />&lt;/c:otherwise&gt;<br />&lt;/c:choose&gt;<br /><br /><br />(3)<br /><br />editUser!input.jsp<br /><br />&lt;sql:query var="rs" dataSource="${dataSource}" &gt;<br />   select * from tb_user where id = ? <br />   &lt;sql:param value="${param['id']}"/&gt;<br />  &lt;/sql:query&gt;<br /><br /><font color="#ff1493">  &lt;c:set var="user" value="${rs.rows[0]}"/&gt;</font></p>
		<p>  &lt;FORM METHOD=POST ACTION="editUserAction.jsp" onSubmit="return check();"&gt;<br />  &lt;INPUT TYPE="hidden" NAME="id" value="${user.id}"&gt;<br />   &lt;TABLE class="inputTable"&gt;<br />    &lt;TR&gt;&lt;Th&gt;用户名&lt;/Th&gt;<br />    &lt;TD&gt;&lt;INPUT TYPE="text" NAME="username" id="username" value="${user.username}"&gt;&lt;<font color="#ff0000">span</font> class="require"&gt; (*必填)&lt;/span&gt;&lt;/TD&gt;&lt;/TR&gt;<br />    &lt;TR&gt;&lt;Th&gt;旧密码&lt;/Th&gt;&lt;TD&gt;&lt;INPUT TYPE="password" NAME="<font style="BACKGROUND-COLOR: #800080">oldPassword</font>"  id="oldPassword" &gt;&lt;span class="require"&gt; (*必填)&lt;/span&gt;&lt;/TD&gt;&lt;/TR&gt;<br />    &lt;TR&gt;&lt;Th&gt;新密码&lt;/Th&gt;&lt;TD&gt;&lt;INPUT TYPE="password" NAME="password"  id="password"&gt;&lt;span class="require"&gt; (*必填)&lt;/span&gt;&lt;/TD&gt;&lt;/TR&gt;<br />    &lt;TR&gt;&lt;Th&gt;重输新密码&lt;/Th&gt;&lt;TD&gt;&lt;INPUT TYPE="password" NAME="repwd" id="repwd"&gt;&lt;span class="require"&gt; (*两次密码必须相同)&lt;/span&gt;&lt;/font&gt;&lt;/TD&gt;&lt;/TR&gt;<br />    &lt;TR&gt;&lt;Th&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/Th&gt;&lt;TD&gt;&lt;INPUT TYPE="submit" value="编辑"&gt;&lt;/TD&gt;&lt;/TR&gt;<br />   &lt;/TABLE&gt;<br />  &lt;/FORM&gt;<br /><br />(4)<br /><br />editUserAction.jsp<br /><br />&lt;sql:query var="rs" dataSource="${dataSource}" &gt;<br /> select password from tb_user where id = ? <br /> &lt;sql:param value="${<font color="#ff0000">param['id']}"/</font>&gt;<br />&lt;/sql:query&gt; </p>
		<p>&lt;c:choose&gt;<br />&lt;c:when test="${rs.rows[0].password!=param['<font color="#800080">oldPassword</font>']}"&gt;<br /> &lt;SCRIPT LANGUAGE="JavaScript"&gt;<br /> &lt;!--<br />  alert("旧密码错误!");<br />  history.go(-1);<br /> //--&gt;<br /> &lt;/SCRIPT&gt;<br />&lt;/c:when&gt;</p>
		<p>&lt;c:otherwise&gt;<br /> &lt;sql:query var="rs" dataSource="${dataSource}" &gt;<br />  select * from tb_user where id &lt;&gt; ? and username = ?             ??  &lt;&gt;  不等于<br />  &lt;sql:param value="${param['id']}"/&gt;<br />  &lt;sql:param value="${param['username']}"/&gt;<br /> &lt;/sql:query&gt; <br /> <br /> &lt;c:choose&gt;<br /> &lt;c:when test="${rs.rowCount==0}"&gt;<br />  &lt;sql:update var="rs" dataSource="${dataSource}" &gt;<br />  <font color="#ff0000"> update tb_user set username = ?,password = ? where id = ?<br /></font>   &lt;sql:param value="${param['username']}"/&gt;<br />   &lt;sql:param value="${param['password']}"/&gt;<br />   &lt;sql:param value="${param['id']}"/&gt;<br />  &lt;/sql:update&gt; <br />  <br />  &lt;c:redirect url="listUser.jsp"/&gt;<br /> &lt;/c:when&gt;<br /> <br /> &lt;c:otherwise&gt;<br />  &lt;SCRIPT LANGUAGE="JavaScript"&gt;<br />  &lt;!--<br />   alert("该用户名已存在");<br />   history.go(-1);<br />  //--&gt;<br />  &lt;/SCRIPT&gt;<br /> &lt;/c:otherwise&gt;<br /> &lt;/c:choose&gt;</p>
		<p>&lt;/c:otherwise&gt;<br />&lt;/c:choose&gt;<br /><br />(5)<br />deleteUserAction.jsp<br /><br />&lt;sql:update var="rs" dataSource="${dataSource}" &gt;<br />  delete from tb_user  where id = ? <br />  &lt;sql:param value="${param['id']}"/&gt;<br />&lt;/sql:update&gt; <br /> <br />&lt;c:redirect url="listUser.jsp"/&gt;<br /></p>
<img src ="http://www.blogjava.net/coacoa2008/aggbug/144775.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/coacoa2008/" target="_blank">Welcome</a> 2007-09-13 11:14 <a href="http://www.blogjava.net/coacoa2008/articles/144775.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>sql 关联操作总结  vote.jsp 投票系统总结</title><link>http://www.blogjava.net/coacoa2008/articles/144594.html</link><dc:creator>Welcome</dc:creator><author>Welcome</author><pubDate>Wed, 12 Sep 2007 11:49:00 GMT</pubDate><guid>http://www.blogjava.net/coacoa2008/articles/144594.html</guid><wfw:comment>http://www.blogjava.net/coacoa2008/comments/144594.html</wfw:comment><comments>http://www.blogjava.net/coacoa2008/articles/144594.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/coacoa2008/comments/commentRss/144594.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/coacoa2008/services/trackbacks/144594.html</trackback:ping><description><![CDATA[
		<p>(1)_<br />vote.jsp<br /><br /><font color="#0000ff">&lt;SCRIPT LANGUAGE="JavaScript"&gt;&lt;!--<br /> function poll(){<br />  return document.getElementById('poll').submit();<br /> }<br />//--&gt;<br />&lt;/SCRIPT&gt;<br /></font>&lt;sql:query var="rs" dataSource="${dataSource}" maxRows="1"&gt;<br />  select * from tb_vote order by createdDate <font color="#ff1493">desc</font><br />&lt;/sql:query&gt;<br /><br /><font style="BACKGROUND-COLOR: #ffffff"><font color="#ff1493">&lt;c:set var="vote" value="${rs.rows[0]}"/&gt;</font><br /></font>&lt;sql:query var="rs" dataSource="${dataSource}"&gt;<br /> <font color="#ff0000"> select * from tb_voteitem where vote_id = ?</font><br />  &lt;sql:param value="${vote.id}"/&gt;<br />&lt;/sql:query&gt;<br />&lt;center&gt;<font color="#0000ff">${vote.subject}&lt;/</font>center&gt;<br /><br />&lt;FORM id="poll" action="poll.jsp" METHOD="post" target="_blank"&gt;<br /> &lt;input type="hidden" name="vote.id" value="${vote.id}"/&gt;<br /><br /><font color="#0000ff"> &lt;c:forEach var="voteitem" items="${rs.rows}"&gt;<br /> &lt;INPUT TYPE="radio" NAME="voteitem.id" VALUE="${voteitem.id}"&gt;${voteitem.title}&lt;BR&gt;<br /> &lt;/c:forEach&gt;<br /></font> &lt;INPUT TYPE="button" onClick="return poll();" VALUE="提交" style=" float:RIGHT"&gt;<br />&lt;/FORM&gt;<br /><br />(2)<br /><br />poll.jsp<br /><br /><font color="#000000">&lt;SCRIPT LANGUAGE="JavaScript"&gt;<br />&lt;!--<br /> function init(){<br />  window.resizeTo(400, 400);<br />  alert("感谢您的支持");<br /> }<br />//--&gt;<br />&lt;/SCRIPT&gt;<br /></font><br />&lt;sql:update var="vote" dataSource="${dataSource}" &gt;<br />  <font color="#0000ff">update tb_voteitem set count = count + 1  where id = ?</font><br />  &lt;sql:param value="${param['voteitem.id']}"/&gt;<br />&lt;/sql:update&gt;<br />&lt;sql:update var="vote" dataSource="${dataSource}" &gt;<br /> <font color="#ff1493"> update tb_vote set count = count + 1  where id = ?</font><br />  &lt;sql:param value="${param['vote.id']}"/&gt;<br />&lt;/sql:update&gt;</p>
		<p>&lt;sql:query var="rs" dataSource="${dataSource}" maxRows="1"&gt;<br />  select * from tb_vote order by createdDate desc<br />&lt;/sql:query&gt;<br /><br />&lt;c:set var="vote" value="${rs.rows[0]}"/&gt;<br />&lt;sql:query var="rs" dataSource="${dataSource}"&gt;<br />  <font color="#0000ff">select * from tb_voteitem where vote_id = <font style="BACKGROUND-COLOR: #ffc0cb">?</font></font><br />  &lt;sql:param value="$<font style="BACKGROUND-COLOR: #ffc0cb">{vote.id}"/</font>&gt;<br />&lt;/sql:query&gt;<br /><font color="#008000">&lt;body onLoad="init();"&gt;<br /></font>${vote.subject} 共${vote.count}票<br />&lt;FORM ACTION="vote_compute.jsp" METHOD="post"&gt;<br />&lt;table&gt;<br /><font color="#000080">&lt;c:forEach var="voteitem" items="${rs.rows}"&gt;<br /></font>&lt;tr&gt;<br />&lt;th&gt;${voteitem.title}&lt;/th&gt;<br />&lt;td<font color="#ff0000">&gt;&lt;img src="res/poll_bg.gif" height="20px" width="${voteitem.count/vote.count*200}"&gt;&lt;/td&gt;<br /></font>&lt;td&gt;${voteitem.count}&lt;/td&gt;<br />&lt;/tr&gt;<br />&lt;/c:forEach&gt;<br />&lt;/table&gt;<br />&lt;/body&gt;<br /><br />(3)<br />createVote!input.jsp<br /><br />&lt;FORM METHOD=POST ACTION="createVoteAction.jsp" onSubmit="return check();"&gt;<br /> &lt;TABLE class="inputTable"&gt;<br />  &lt;TR&gt;&lt;Th&gt;主题&lt;/Th&gt;&lt;TD&gt;&lt;INPUT TYPE="text" NAME="subject" size="60"&gt;&lt;/TD&gt;&lt;/TR&gt;<br />  &lt;TR&gt;&lt;Th&gt;开始日期&lt;/Th&gt;&lt;TD&gt;&lt;INPUT TYPE="text" NAME="createdDate"&gt;&lt;/TD&gt;&lt;/TR&gt;<br />  &lt;TR&gt;&lt;Th&gt;&amp;nbsp;&lt;/Th&gt;&lt;TD&gt;&lt;INPUT TYPE="submit" value="提 交"&gt;&lt;/TD&gt;&lt;/TR&gt;<br /> &lt;/TABLE&gt;<br />&lt;/FORM&gt;<br /><br /><br />(4)<br />createVoteAction.jsp<br /><br />&lt;sql:update var="rs" dataSource="${dataSource}" &gt;<br />  insert into tb_vote(subject,count,createdDate) values(?,?,?) <br />  &lt;sql:param value="${param['subject']}"/&gt;<br />  &lt;sql:param value="0"/&gt;<br />  &lt;sql:param value="&lt;%=new java.util.Date()%&gt;"/&gt;<br />&lt;/sql:update&gt; <br /> <br />&lt;c:redirect url="listVote.jsp"/&gt;<br /><br />(5)<br /><br />editVote!input.jsp<br /><br />&lt;sql:query var="rs" dataSource="${dataSource}" &gt;<br /><font color="#ff1493"> select * from tb_vote where id = ? <br /></font> &lt;sql:param value="${param['id']}"/&gt;<br />&lt;/sql:query&gt;<br />&lt;c:set var="vote" value="${rs.rows[0]}"/&gt;<br />&lt;FORM METHOD=POST ACTION="editVoteAction.jsp" &gt;<br /> &lt;INPUT TYPE="hidden" NAME="id" value="<font color="#ff1493">${vote.id}"&gt;</font><br /> &lt;TABLE class="inputTable"&gt;<br />  &lt;TR&gt;&lt;Th&gt;标题&lt;/Th&gt;&lt;TD&gt;&lt;INPUT TYPE="text" NAME="subject" value="${vote.subject}"  size="60" &gt;&lt;/TD&gt;&lt;/TR&gt;<br />  &lt;TR&gt;&lt;Th&gt;总票数&lt;/Th&gt;&lt;TD&gt;<br />  &lt;INPUT TYPE="text" NAME<font color="#ff0000">="count"</font> value="${vote.count}")"&gt;&lt;/TD&gt;&lt;/TR&gt;<br />  &lt;TR&gt;&lt;Th&gt;开始日期&lt;/Th&gt;&lt;TD&gt;&lt;INPUT TYPE="text" NAME="time" value="${vote.createdDate}"&gt;&lt;/TD&gt;&lt;/TR&gt;<br />  <br />  &lt;TR&gt;&lt;Th&gt;&lt;/Th&gt;&lt;TD&gt;&lt;INPUT TYPE="submit" value="提交"&gt;&amp;nbsp;&lt;INPUT Type="reset" value="重置"&gt;&lt;/TD&gt;&lt;/TR&gt;<br /> &lt;/TABLE&gt;<br />&lt;/FORM&gt;<br /><br /><br />(6)<br />editVoteAction.jsp<br /><br />&lt;sql:update var="vote" <font color="#000000">dataSource="${dataSource}" &gt;<br /></font>  <font color="#ff1493">update tb_vote set subject = ?,count = ?,createdDate=?  where id = ?<br /></font>  &lt;sql:param value="${param['subject']}"/&gt;<br />  &lt;sql:param value="${param['count']}"/&gt;<br />  &lt;sql:param value="${param['id']}"/&gt;<br /><br />  &lt;c:choose&gt;<br />     &lt;c:when test="${empty(param['createdDate'])}"&gt;<br />      &lt;sql:param value="&lt;%=new java.sql.Timestamp(System.currentTimeMillis())%&gt;" /&gt;<br />     &lt;/c:when&gt;<br />     &lt;c:otherwise&gt;<br />      &lt;sql:param value="${param['createdDate']}" /&gt;<br />     &lt;/c:otherwise&gt;<br />    <font color="#ff0000"> &lt;/c:choose&gt;<br /></font>  <br /> &lt;/sql:update&gt; <br /> &lt;c:redirect url="listVote.jsp"/&gt;<br /><br />(7)<br /><br />deleteVote.sjp<br /><br />&lt;sql:update var="rs" dataSource="${dataSource}" &gt;<br />  delete from tb_vote  where id = ? <br />  &lt;sql:param value="${param['id']}"/&gt;<br />&lt;/sql:update&gt; <br />&lt;c:redirect url="listVote.jsp"/&gt;<br /><br /><br />&lt;!#$#$!$#$!#$#$#^%^%^%^*&amp;^*&amp;*&amp;*()(*)()_)+_%&amp;$&gt;<br />(8)_<br />CreateVoteItem.jsp<br />&lt;FORM METHOD=POST ACTION="createVoteItemAction.jsp" onSubmit="return check();"&gt;<br />  &lt;TABLE class="inputTable"&gt;<br />     &lt;INPUT TYPE="hidden" NAME="vote.id" value="${param['vote.id']}"&gt;&lt;/TD&gt;&lt;/TR&gt;<br />   &lt;TR&gt;&lt;Th&gt;选项&lt;/Th&gt;&lt;TD&gt;&lt;INPUT TYPE="text" NAME="title"&gt;&lt;/TD&gt;&lt;/TR&gt;<br />   &lt;TR&gt;&lt;Th&gt;记票&lt;/Th&gt;&lt;TD&gt;&lt;INPUT TYPE="text" NAME="count"&gt;&lt;/TD&gt;&lt;/TR&gt;<br />   &lt;TR&gt;&lt;Th&gt;&amp;nbsp;&lt;/Th&gt;&lt;TD&gt;&lt;INPUT TYPE="submit" value="提 交"&gt;&lt;/TD&gt;&lt;/TR&gt;<br />  &lt;/TABLE&gt;<br /> &lt;/FORM&gt;<br /><br /><br />(9)</p>
		<p>createVoteItemAction.jsp</p>
		<p>&lt;sql:update var="rs" dataSource="${dataSource}" &gt;<br />  insert into tb_voteitem(<font color="#ff1493">vote_id,title,count</font>) values(?,?,?)     &lt;!--<br />                                                                                                                 tb_voteItem .   vote_id= tb_vote.id    &gt;级联<br />  &lt;sql:param value="${param['vote.id']}"/&gt; <br />  &lt;sql:param value="${param['title']}"/&gt; <br />  &lt;sql:param value="0"/&gt;<br />&lt;/sql:update&gt; </p>
		<p>(10)<br /><br />listVoteItem.jsp<br /><br />&lt;a href="createVoteItem!input.jsp?vote.id=${param['vote.id']}"&gt;添加&lt;/a&gt;<br /> &lt;sql:query var="rs" dataSource="${dataSource}" &gt;<br />  select * from tb_voteitem where vote_id = <font color="#ff1493">?<br /></font>  &lt;sql:param value="${param<font color="#ff1493">['vote.id']}"/</font>&gt;<br /> &lt;/sql:query&gt; <br /> &lt;div&gt;<br /> &lt;form action="listVoteItem.jsp" method="POST"&gt;<br /> &lt;table class="listTable"&gt;<br /> &lt;tr&gt;<br /> &lt;th width="50%"&gt;标题&lt;/th&gt;<br /> &lt;th width="10%"&gt;票数&lt;/th&gt;<br /> &lt;th width="3%"&gt;&amp;nbsp;&lt;/th&gt;<br /> &lt;th width="3%"&gt;&amp;nbsp;&lt;/th&gt;<br /> &lt;/tr&gt;<br /> <br /> &lt;c:forEach var="voteitem" items="${rs.rows}"&gt;<br />  &lt;tr&gt;<br />  &lt;td&gt;${voteitem.title}&lt;/td&gt;<br />  &lt;td&gt;${voteitem.count}&lt;/td&gt;<br />  &lt;td&gt;&lt;a href="editVoteItem!input.jsp?id=${voteitem.id}" title="编辑该记录"&gt;编辑&lt;/a&gt;&lt;/td&gt;<br />  &lt;td&gt;&lt;a href="javascript:if(confirm('您确认删除吗？')){document.location.href='deleteVoteItemAction.jsp?id=${voteitem.id}&amp;vote.id=${voteitem.vote_id}'};"&gt;删除&lt;/a&gt;&lt;/td&gt;<br />  &lt;/tr&gt;<br /> &lt;/c:forEach&gt;<br /> &lt;/table&gt;<br />&lt;/form&gt;<br /><br />(10)<br />editVoteItem!input.jsp<br /><br />&lt;sql:query var="rs" dataSource="${dataSource}" &gt;<br /> select * from tb_voteitem where id = ? <br /> &lt;sql:param value="${param['id']}"/&gt;<br />&lt;/sql:query&gt;<br />&lt;c:set var="voteitem" value="${rs.rows[0]}"/&gt;<br />&lt;FORM METHOD=POST ACTION="editVoteItemAction.jsp" &gt;<br /> &lt;INPUT TYPE="hidden" NAME="id" value="${voteitem.id}"&gt;<br /> &lt;TABLE class="inputTable"&gt;<br />  &lt;INPUT TYPE="hidden" NAME="vote.id" value="${voteitem.vote_id}")"&gt;<br />  &lt;TR&gt;&lt;Th&gt;title&lt;/Th&gt;&lt;TD&gt;&lt;INPUT TYPE="text" NAME="title" value="${voteitem.title}")"&gt;&lt;/TD&gt;&lt;/TR&gt;<br />  &lt;TR&gt;&lt;Th&gt;count&lt;/Th&gt;&lt;TD&gt;<br />  &lt;INPUT TYPE="text" NAME="count" value="${voteitem.count}")"&gt;&lt;/TD&gt;&lt;/TR&gt;<br />  <br />  &lt;TR&gt;&lt;Th&gt;&lt;/Th&gt;&lt;TD&gt;&lt;INPUT TYPE="submit" value="提交"&gt;&amp;nbsp;&lt;INPUT Type="reset" value="重置"&gt;&lt;/TD&gt;&lt;/TR&gt;<br /> &lt;/TABLE&gt;<br />&lt;/FORM&gt;<br /><br />(11)<br /><br />editVoteItemAction.jsp<br /><br /><br />&lt;sql:update var="rs" dataSource="${dataSource}" &gt;<br />  update tb_voteItem set title = ? count=? where id = ?<br /> &lt;sql:param value="${param['title']}"/&gt;<br /> &lt;sql:param value="${param['count']}"/&gt;<br /> &lt;sql:param value="${param['id']}"/&gt;<br />&lt;/sql:update&gt; <br /> <br />&lt;c:redirect url="listVoteItem.jsp?<font color="#ff1493">vote.id=${param['vote.id '</font>]}"/&gt;<br /><br /><br />(11)mysql 导出数据 <a href="http://fanqiang.chinaunix.net/db/mysql/2001-05-27/1357.shtml">http://fanqiang.chinaunix.net/db/mysql/2001-05-27/1357.shtml</a><br /><br />mysqldump -d -u Username -p address_ip &gt;;c:\test.txt<br />我来写详细一些，这样可以只导出表结构，主要是-d参数，不会导出数据。<br /><br />1.导出整个数据库</p>
		<p>　　mysqldump -u 用户名 -p 数据库名 &gt; 导出的文件名</p>
		<p>　　mysqldump -u wcnc -p smgp_apps_wcnc &gt; wcnc.sql</p>
		<p>　　2.导出一个表</p>
		<p>　　mysqldump -u 用户名 -p 数据库名 表名&gt; 导出的文件名</p>
		<p>　　mysqldump -u wcnc -p smgp_apps_wcnc users&gt; wcnc_users.sql</p>
		<p>　　3.导出一个数据库结构</p>
		<p>　　mysqldump -u wcnc -p -d --add-drop-table smgp_apps_wcnc &gt;d:wcnc_db.sql</p>
		<p>　　-d 没有数据 --add-drop-table 在每个create语句之前增加一个drop table</p>
		<p>　　4.导入数据库</p>
		<p>　　常用source 命令</p>
		<p>　　进入mysql数据库控制台，</p>
		<p>　　如mysql -u root -p</p>
		<p>　　mysql&gt;use 数据库</p>
		<p>　　然后使用source命令，后面参数为脚本文件(如这里用到的.sql)</p>
		<p>　　mysql&gt;source d:wcnc_db.sql</p>
		<p>
				<br />
				<br />
				<br /> </p>
<img src ="http://www.blogjava.net/coacoa2008/aggbug/144594.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/coacoa2008/" target="_blank">Welcome</a> 2007-09-12 19:49 <a href="http://www.blogjava.net/coacoa2008/articles/144594.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>util.web.SetCharacterEncodingFilter 字符编码过滤器</title><link>http://www.blogjava.net/coacoa2008/articles/144555.html</link><dc:creator>Welcome</dc:creator><author>Welcome</author><pubDate>Wed, 12 Sep 2007 09:26:00 GMT</pubDate><guid>http://www.blogjava.net/coacoa2008/articles/144555.html</guid><wfw:comment>http://www.blogjava.net/coacoa2008/comments/144555.html</wfw:comment><comments>http://www.blogjava.net/coacoa2008/articles/144555.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/coacoa2008/comments/commentRss/144555.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/coacoa2008/services/trackbacks/144555.html</trackback:ping><description><![CDATA[
		<p> webxml  字符UTF-8 处理<br /><br />&lt;filter&gt;<br />  &lt;filter-name&gt;Set Character Encoding&lt;/filter-name&gt;<br />  &lt;filter-class&gt;<br />   util.web.SetCharacterEncodingFilter<br />  &lt;/filter-class&gt;<br />  &lt;init-param&gt;<br />   &lt;param-name&gt;encoding&lt;/param-name&gt;<br />   &lt;param-value&gt;utf-8&lt;/param-value&gt;<br />  &lt;/init-param&gt;<br /> &lt;/filter&gt;</p>
		<p> &lt;filter-mapping&gt;<br />  &lt;filter-name&gt;Set Character Encoding&lt;/filter-name&gt;<br />  &lt;url-pattern&gt;/*&lt;/url-pattern&gt;<br /> &lt;/filter-mapping&gt;<br /><br />SetCharacterEncodingFilter.java<br /><br />package util.web;</p>
		<p>
				<br />import java.io.BufferedWriter;<br />import java.io.FileWriter;<br />import java.io.IOException;</p>
		<p>import javax.servlet.Filter;<br />import javax.servlet.FilterChain;<br />import javax.servlet.FilterConfig;<br />import javax.servlet.ServletException;<br />import javax.servlet.ServletRequest;<br />import javax.servlet.ServletResponse;<br />/**<br /> * @author Dave<br /> */<br />public class SetCharacterEncodingFilter implements Filter {</p>
		<p>    //     ----------------------------------------------------- Instance Variables </p>
		<p>    /** <br />    * The default character encoding to set for requests that pass through <br />    * this filter. <br />    */<br />    protected String encoding = null;</p>
		<p>    /** <br />    * The filter configuration object we are associated with. If this value <br />    * is null, this filter instance is not currently configured. <br />    */<br />    protected FilterConfig filterConfig = null;</p>
		<p>    /** <br />    * Should a character encoding specified by the client be ignored? <br />    */<br />    protected boolean ignore = true;</p>
		<p>    //     --------------------------------------------------------- Public Methods </p>
		<p>    /** <br />    * Take this filter out of service. <br />    */<br />    public void destroy() {</p>
		<p>        this.encoding = null;<br />        this.filterConfig = null;</p>
		<p>    }</p>
		<p>    /** <br />    * Select and set (if specified) the character encoding to be used to <br />    * interpret request parameters for this request. <br />    * <br />    * @param request The servlet request we are processing <br />    * @param result The servlet response we are creating <br />    * @param chain The filter chain we are processing <br />    * <br />    * @exception IOException if an input/output error occurs <br />    * @exception ServletException if a servlet error occurs <br />    */<br />    public void doFilter(<br />        ServletRequest request,<br />        ServletResponse response,<br />        FilterChain chain)<br />        throws IOException, ServletException {</p>
		<p>        //     Conditionally select and set the character encoding to be used <br />        if (ignore || (request.getCharacterEncoding() == null)) {<br />            String encoding = selectEncoding(request);<br />            if (encoding != null) {<br />                request.setCharacterEncoding(encoding);<br />            }<br />        }<br />        <br />        //     Pass control on to the next filter <br />        chain.doFilter(request, response);<br />        BufferedWriter  bw = new BufferedWriter(new FileWriter("/temp/insertlog.log"));;<br />        //bw.<br />        //response.getOutputStream().println();</p>
		<p>    }</p>
		<p>    /** <br />    * Place this filter into service. <br />    * <br />    * @param filterConfig The filter configuration object <br />    */<br />    public void init(FilterConfig filterConfig) throws ServletException {</p>
		<p>        this.filterConfig = filterConfig;<br />        this.encoding = filterConfig.getInitParameter("encoding");<br />        String value = filterConfig.getInitParameter("ignore");<br />        if (value == null) {<br />            this.ignore = true;<br />        } else if (value.equalsIgnoreCase("true")) {<br />            this.ignore = true;<br />        } else if (value.equalsIgnoreCase("yes")) {<br />            this.ignore = true;<br />        } else {<br />            this.ignore = false;<br />        }</p>
		<p>    }</p>
		<p>    //     ------------------------------------------------------ Protected Methods </p>
		<p>    /** <br />    * Select an appropriate character encoding to be used, based on the <br />    * characteristics of the current request and/or filter initialization <br />    * parameters. If no character encoding should be set, return <br />    * &lt;code&gt;null&lt;/code&gt;. <br />    * &lt;p&gt; <br />    * The default implementation unconditionally returns the value configured <br />    * by the &lt;strong&gt;encoding&lt;/strong&gt; initialization parameter for this <br />    * filter. <br />    * <br />    * @param request The servlet request we are processing <br />    */<br />    protected String selectEncoding(ServletRequest request) {</p>
		<p>        return (this.encoding);</p>
		<p>    }</p>
		<p>}</p>
		<p> </p>
<img src ="http://www.blogjava.net/coacoa2008/aggbug/144555.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/coacoa2008/" target="_blank">Welcome</a> 2007-09-12 17:26 <a href="http://www.blogjava.net/coacoa2008/articles/144555.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>