﻿<?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-&lt;font color="#669933"&gt;MyJavaBlog&lt;/font&gt;-随笔分类-J2EE</title><link>http://www.blogjava.net/Swing/category/23523.html</link><description>&lt;font size="3"&gt;&lt;br&gt;&lt;font color="#669933"&gt;天行健  君子以自强不息&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;/font&gt;</description><language>zh-cn</language><lastBuildDate>Mon, 06 Aug 2007 05:46:38 GMT</lastBuildDate><pubDate>Mon, 06 Aug 2007 05:46:38 GMT</pubDate><ttl>60</ttl><item><title>J2EE学习</title><link>http://www.blogjava.net/Swing/archive/2007/07/26/132464.html</link><dc:creator>Sun</dc:creator><author>Sun</author><pubDate>Thu, 26 Jul 2007 02:28:00 GMT</pubDate><guid>http://www.blogjava.net/Swing/archive/2007/07/26/132464.html</guid><wfw:comment>http://www.blogjava.net/Swing/comments/132464.html</wfw:comment><comments>http://www.blogjava.net/Swing/archive/2007/07/26/132464.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Swing/comments/commentRss/132464.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Swing/services/trackbacks/132464.html</trackback:ping><description><![CDATA[<p style="COLOR: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;最近出差，闲来无事，决定要把web开发方面的知识再综合学习一下，尽管也一直在做这个，不过感觉知识不太系统，基础知识掌握的不太好，所以要利用这段时间将基础知识系统的学习一下，为以后的工作做准备，根据一个教程循序渐进的学习，下面是学习计划。<br><br><span style="COLOR: #ff0000"><font color=#008000>学习计划：</font><br>
<table style="WIDTH: 320px; BORDER-COLLAPSE: collapse" cellSpacing=0 cellPadding=3 border=1>
    <tbody>
        <tr>
            <td style="COLOR: #008000">序号</td>
            <td style="COLOR: #008000">名称</td>
            <td style="COLOR: #008000">完成情况</td>
            <td style="COLOR: #008000">时间安排</td>
        </tr>
        <tr>
            <td style="COLOR: #008000">1</td>
            <td style="COLOR: #008000"><font color=#008000>Html基础知识</font></td>
            <td style="COLOR: #008000">完成</td>
            <td style="COLOR: #008000">1.5天</td>
        </tr>
        <tr>
            <td style="COLOR: #008000">2</td>
            <td style="COLOR: #008000"><font color=#008000>Html高级知识</font></td>
            <td style="COLOR: #008000">完成</td>
            <td style="COLOR: #008000">2天</td>
        </tr>
        <tr>
            <td style="COLOR: #008000">3</td>
            <td style="COLOR: #008000"><font color=#008000>CSS知识</font></td>
            <td style="COLOR: #008000">完成</td>
            <td style="COLOR: #008000">1.5天</td>
        </tr>
        <tr>
            <td style="COLOR: #008000">4</td>
            <td style="COLOR: #008000"><font color=#008000>JavaScript语法</font></td>
            <td style="COLOR: #ff0000">未完成</td>
            <td style="COLOR: #008000">3天</td>
        </tr>
        <tr>
            <td style="COLOR: #008000">5</td>
            <td style="COLOR: #008000"><font color=#008000>DOM对象模型</font></td>
            <td style="COLOR: #ff0000">未完成</td>
            <td style="COLOR: #008000">2天</td>
        </tr>
    </tbody>
</table>
<br><span style="COLOR: #008000">每天记录学习情况，就当作是自己做一下监督<img height=20 src="http://www.blogjava.net/Emoticons/QQ/17.gif" width=20 border=0></span></span></p>
<span style="COLOR: #008000"
<p &gt;><br>Html基础知识学习收获<br>1、HTML的全局架构标签<br>&nbsp;&lt;body&gt;<br>&nbsp;text:用户设置网页中的文本颜色<br>&nbsp;link:用于设置超链接的颜色<br>&nbsp;alink:用于设定鼠标滑过时链接的颜色 <br>&nbsp;vlink:用于设定访问过的链接的颜色<br>&nbsp;background:设置背景图片 墙纸<br>&nbsp;bgcolor:用于设置背景颜色,如果设定background 则这个属性会失效<br>&nbsp;margin:用于设定网页显示画面与浏览器边缘的间隙 单位为像素 left/top
<p>&nbsp;</p>
<p>2、格式标签<br>&nbsp;&lt;nobr&gt;:设置长文本不自动换行显示(加滚动条)，默认的是自动换行<br>&nbsp;&lt;blockquote&gt;:内容缩进显示，可以加多个<br>&nbsp;&lt;center&gt;:水平方向居中显示<br>&nbsp;&lt;marquee&gt;:移动显示其中的内容<br>&nbsp;&lt;dl&gt;&lt;dt&gt;&lt;dd&gt;:列表显示<br>&nbsp;&lt;ol&gt;&lt;ul&gt;&lt;li&gt;:ol带数字列表 ul用圆点标示列表项<br>&nbsp;&lt;pre&gt;:显示其中文本的所有空格和换行</p>
<p>3、超链接标签<br>&nbsp;&lt;a href="<a href='&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#120;&#120;&#64;&#120;&#120;&#46;&#99;&#111;&#109;&#34;&#62;&#60;&#47;&#97;' href_cetemp='mailto:xx@xx.com"></a'>mailto:xx@xx.com"&gt;&lt;/a</a>&gt;<br>&nbsp;target:浏览器在哪显示页面 整个页面还是frame ex)_black 打开新窗口<br>&nbsp;自动定位:name属性 定义定位标记&lt;a href="a.html#mark"&gt;&lt;/a&gt;<br>&nbsp;href="#":表示本页面<br>&nbsp;href="":http下打开目录下的默认网页 本地则打开目录文件夹<br>4、URL<br>&nbsp;mailto URL:空格用20%表示<br>&nbsp;URL编码:<br>5、图像标签<br>&nbsp;属性:alt align border <br>&nbsp;显示过程:<br>&nbsp;计数过程:访问img src="<a href="http://www.xxx.com/count.jsp">www.xxx.com/count.jsp</a>" 向服务器要求图像数据 不关心怎么创造出来的数据<br>&nbsp;hr:创建水平线<br>&nbsp;图像地图:比如地图省份区域，热点区域 用map area来定义<br></p>
<span></span></span>
<img src ="http://www.blogjava.net/Swing/aggbug/132464.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Swing/" target="_blank">Sun</a> 2007-07-26 10:28 <a href="http://www.blogjava.net/Swing/archive/2007/07/26/132464.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java 反射机制详解</title><link>http://www.blogjava.net/Swing/archive/2007/07/05/128263.html</link><dc:creator>Sun</dc:creator><author>Sun</author><pubDate>Thu, 05 Jul 2007 02:26:00 GMT</pubDate><guid>http://www.blogjava.net/Swing/archive/2007/07/05/128263.html</guid><wfw:comment>http://www.blogjava.net/Swing/comments/128263.html</wfw:comment><comments>http://www.blogjava.net/Swing/archive/2007/07/05/128263.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/Swing/comments/commentRss/128263.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Swing/services/trackbacks/128263.html</trackback:ping><description><![CDATA[<span style="COLOR: #008000">Java 的反射机制是使其具有动态特性的非常关键的一种机制，也是在JavaBean 中广泛应用的一种特性。 <br>运用JavaBean 的最常见的问题是：根据指定的类名，类字段名和所对应的数据，得到该类的实例，下面的一个例子演示了这一实现。 <br>-|Base.java //抽象基类 <br>|Son1.java //基类扩展1 <br>|Son2.java //基类扩展2 <br>|Util.java <br>/** <br>* @author metaphy <br>* create 2005-4-14 9:06:56 <br>* 说明： <br>*/ <br>（1）Base.java 抽象基类只是一个定义 <br>public abstract class Base { <br>} <br>（2）Son1.java /Son2.java 是已经实现的JavaBean <br>public class Son1 extends Base{ <br>private int id ; <br>private String name ; <br><br>public int getId() { <br>return id; <br>} <br>public void setId(int id) { <br>this.id = id; <br>} <br>public String getName() { <br>return name; <br>} <br>public void setName(String name) { <br>this.name = name; <br>} <br><br>public void son1Method(String s){ <br>System.out.println(s) ; <br>} <br>} <br>（3） <br>public class Son2 extends Base{ <br>private int id; <br>private double salary; <br><br>public int getId() { <br>return id; <br>} <br>public void setId(int id) { <br>this.id = id; <br>} <br>public double getSalary() { <br>return salary; <br>} <br>public void setSalary(double salary) { <br>this.salary = salary; <br>} <br>} <br>（4）Util.java 演示了如何根据指定的类名，类字段名和所对应的数据，得到一个类的实例 <br>import java.lang.reflect.Method; <br>public class Util { <br>//此方法的最大好处是没有类名Son1,Son2 可以通过参数来指定，程序里面根本不用出现 <br>public static Base convertStr2ServiceBean(String beanName,String fieldSetter,String paraValue){ <br>Base base = null ; <br>try { <br>Class cls = Class.forName(beanName) ; <br>base = (Base)cls.newInstance() ; <br>Class[] paraTypes = new Class[]{String.class }; <br>Method method = cls.getMethod(fieldSetter, paraTypes) ; <br>String[] paraValues = new String[]{paraValue} ; <br>method.invoke(base, paraValues) ; <br>} catch (Throwable e) { <br>System.err.println(e); <br>} <br>return base ; <br>} <br><br><br>public static void main(String[] args){ <br>Son1 son1 =(Son1) Util.convertStr2ServiceBean("trying.reflect.Son1","setName","wang da sha"); <br>System.out.println("son1.getName() :"+son1.getName()) ; <br>} <br>} <br>//调用结果： <br>//son1.getName() :wang da sha <br><br>谢谢！希望能给大家一点启发！ <br>－－－－－－－－－－－－－－－－－－－－ <br>附： <br>//下面这篇文档来源于Internet，作者不详 <br>Reflection 是 Java 程序开发语言的特征之一，它允许运行中的 Java 程序对自身进行检查，或者说&#8220;自审&#8221;，并能直接操作程序的内部属性。例如，使用它能获得 Java 类中各成员的名称并显示出来。 <br>Java 的这一能力在实际应用中也许用得不是很多，但是在其它的程序设计语言中根本就不存在这一特性。例如，Pascal、C 或者 C++ 中就没有办法在程序中获得函数定义相关的信息。 <br>JavaBean 是 reflection 的实际应用之一，它能让一些工具可视化的操作软件组件。这些工具通过 reflection 动态的载入并取得 Java 组件(类) 的属性。 <br>1. 一个简单的例子 <br>考虑下面这个简单的例子，让我们看看 reflection 是如何工作的。 <br>import java.lang.reflect.*; <br>public class DumpMethods { <br>public static void main(String args[]) { <br>try { <br>Class c = Class.forName(args[0]); <br>Method m[] = c.getDeclaredMethods(); <br>for (int i = 0; i &lt; m.length; i++) <br>System.out.println(m[i].toString()); <br>} catch (Throwable e) { <br>System.err.println(e); <br>} <br>} <br>} <br>按如下语句执行： <br>java DumpMethods java.util.Stack <br>它的结果输出为： <br>public java.lang.Object java.util.Stack.push(java.lang.Object) <br>public synchronized java.lang.Object java.util.Stack.pop() <br>public synchronized java.lang.Object java.util.Stack.peek() <br>public boolean java.util.Stack.empty() <br>public synchronized int java.util.Stack.search(java.lang.Object) <br>这样就列出了java.util.Stack 类的各方法名以及它们的限制符和返回类型。 <br>这个程序使用 Class.forName 载入指定的类，然后调用 getDeclaredMethods 来获取这个类中定义了的方法列表。java.lang.reflect.Methods 是用来描述某个类中单个方法的一个类。 <br>2.开始使用 Reflection <br>用于 reflection 的类，如 Method，可以在 java.lang.relfect 包中找到。使用这些类的时候必须要遵循三个步骤：第一步是获得你想操作的类的 java.lang.Class 对象。在运行中的 Java 程序中，用 java.lang.Class 类来描述类和接口等。 <br>下面就是获得一个 Class 对象的方法之一： <br>Class c = Class.forName("java.lang.String"); <br>这条语句得到一个 String 类的类对象。还有另一种方法，如下面的语句： <br>Class c = int.class; <br>或者 <br>Class c = Integer.TYPE; <br>它们可获得基本类型的类信息。其中后一种方法中访问的是基本类型的封装类 (如 Integer) 中预先定义好的 TYPE 字段。 <br>第二步是调用诸如 getDeclaredMethods 的方法，以取得该类中定义的所有方法的列表。 <br>一旦取得这个信息，就可以进行第三步了——使用 reflection API 来操作这些信息，如下面这段代码： <br>Class c = Class.forName("java.lang.String"); <br>Method m[] = c.getDeclaredMethods(); <br>System.out.println(m[0].toString()); <br>它将以文本方式打印出 String 中定义的第一个方法的原型。 <br>在下面的例子中，这三个步骤将为使用 reflection 处理特殊应用程序提供例证。 <br>模拟 instanceof 操作符 <br>得到类信息之后，通常下一个步骤就是解决关于 Class 对象的一些基本的问题。例如，Class.isInstance 方法可以用于模拟 instanceof 操作符： <br>class A { <br>} <br>public class instance1 { <br>public static void main(String args[]) { <br>try { <br>Class cls = Class.forName("A"); <br>boolean b1 = cls.isInstance(new Integer(37)); <br>System.out.println(b1); <br>boolean b2 = cls.isInstance(new A()); <br>System.out.println(b2); <br>} catch (Throwable e) { <br>System.err.println(e); <br>} <br>} <br>} <br>在这个例子中创建了一个 A 类的 Class 对象，然后检查一些对象是否是 A 的实例。Integer(37) 不是，但 new A() 是。 <br>3.找出类的方法 <br>找出一个类中定义了些什么方法，这是一个非常有价值也非常基础的 reflection 用法。下面的代码就实现了这一用法： <br>import java.lang.reflect.*; <br>public class method1 { <br>private int f1(Object p, int x) throws NullPointerException { <br>if (p == null) <br>throw new NullPointerException(); <br>return x; <br>} <br>public static void main(String args[]) { <br>try { <br>Class cls = Class.forName("method1"); <br>Method methlist[] = cls.getDeclaredMethods(); <br>for (int i = 0; i &lt; methlist.length; i++) { <br>Method m = methlist[i]; <br>System.out.println("name = " + m.getName()); <br>System.out.println("decl class = " + m.getDeclaringClass()); <br>Class pvec[] = m.getParameterTypes(); <br>for (int j = 0; j &lt; pvec.length; j++) <br>System.out.println("param #" + j + " " + pvec[j]); <br>Class evec[] = m.getExceptionTypes(); <br>for (int j = 0; j &lt; evec.length; j++) <br>System.out.println("exc #" + j + " " + evec[j]); <br>System.out.println("return type = " + m.getReturnType()); <br>System.out.println("-----"); <br>} <br>} catch (Throwable e) { <br>System.err.println(e); <br>} <br>} <br>} <br>这个程序首先取得 method1 类的描述，然后调用 getDeclaredMethods 来获取一系列的 Method 对象，它们分别描述了定义在类中的每一个方法，包括 public 方法、protected 方法、package 方法和 private 方法等。如果你在程序中使用 getMethods 来代替 getDeclaredMethods，你还能获得继承来的各个方法的信息。 <br>取得了 Method 对象列表之后，要显示这些方法的参数类型、异常类型和返回值类型等就不难了。这些类型是基本类型还是类类型，都可以由描述类的对象按顺序给出。 <br>输出的结果如下： <br>name = f1 <br>decl class = class method1 <br>param #0 class java.lang.Object <br>param #1 int <br>exc #0 class java.lang.NullPointerException <br>return type = int <br>----- <br>name = main <br>decl class = class method1 <br>param #0 class [Ljava.lang.String; <br>return type = void <br>----- <br><br>4.获取构造器信息 <br>获取类构造器的用法与上述获取方法的用法类似，如： <br>import java.lang.reflect.*; <br>public class constructor1 { <br>public constructor1() { <br>} <br>protected constructor1(int i, double d) { <br>} <br>public static void main(String args[]) { <br>try { <br>Class cls = Class.forName("constructor1"); <br>Constructor ctorlist[] = cls.getDeclaredConstructors(); <br>for (int i = 0; i &lt; ctorlist.length; i++) { <br>Constructor ct = ctorlist[i]; <br>System.out.println("name = " + ct.getName()); <br>System.out.println("decl class = " + ct.getDeclaringClass()); <br>Class pvec[] = ct.getParameterTypes(); <br>for (int j = 0; j &lt; pvec.length; j++) <br>System.out.println("param #" + j + " " + pvec[j]); <br>Class evec[] = ct.getExceptionTypes(); <br>for (int j = 0; j &lt; evec.length; j++) <br>System.out.println("exc #" + j + " " + evec[j]); <br>System.out.println("-----"); <br>} <br>} catch (Throwable e) { <br>System.err.println(e); <br>} <br>} <br>} <br>这个例子中没能获得返回类型的相关信息，那是因为构造器没有返回类型。 <br>这个程序运行的结果是： <br>name = constructor1 <br>decl class = class constructor1 <br>----- <br>name = constructor1 <br>decl class = class constructor1 <br>param #0 int <br>param #1 double <br>----- <br>5.获取类的字段(域) <br>找出一个类中定义了哪些数据字段也是可能的，下面的代码就在干这个事情： <br><br>import java.lang.reflect.*; <br>public class field1 { <br>private double d; <br>public static final int i = 37; <br>String s = "testing"; <br>public static void main(String args[]) { <br>try { <br>Class cls = Class.forName("field1"); <br>Field fieldlist[] = cls.getDeclaredFields(); <br>for (int i = 0; i &lt; fieldlist.length; i++) { <br>Field fld = fieldlist[i]; <br>System.out.println("name = " + fld.getName()); <br>System.out.println("decl class = " + fld.getDeclaringClass()); <br>System.out.println("type = " + fld.getType()); <br>int mod = fld.getModifiers(); <br>System.out.println("modifiers = " + Modifier.toString(mod)); <br>System.out.println("-----"); <br>} <br>} catch (Throwable e) { <br>System.err.println(e); <br>} <br>} <br>} <br>这个例子和前面那个例子非常相似。例中使用了一个新东西 Modifier，它也是一个 reflection 类，用来描述字段成员的修饰语，如&#8220;private int&#8221;。这些修饰语自身由整数描述，而且使用 Modifier.toString 来返回以&#8220;官方&#8221;顺序排列的字符串描述 (如&#8220;static&#8221;在&#8220;final&#8221;之前)。这个程序的输出是： <br>name = d <br>decl class = class field1 <br>type = double <br>modifiers = private <br>----- <br>name = i <br>decl class = class field1 <br>type = int <br>modifiers = public static final <br>----- <br>name = s <br>decl class = class field1 <br>type = class java.lang.String <br>modifiers = <br>----- <br>和获取方法的情况一下，获取字段的时候也可以只取得在当前类中申明了的字段信息 (getDeclaredFields)，或者也可以取得父类中定义的字段 (getFields) 。 <br><br>6.根据方法的名称来执行方法 <br>文本到这里，所举的例子无一例外都与如何获取类的信息有关。我们也可以用 reflection 来做一些其它的事情，比如执行一个指定了名称的方法。下面的示例演示了这一操作： <br>import java.lang.reflect.*; <br>public class method2 { <br>public int add(int a, int b) { <br>return a + b; <br>} <br>public static void main(String args[]) { <br>try { <br>Class cls = Class.forName("method2"); <br>Class partypes[] = new Class[2]; <br>partypes[0] = Integer.TYPE; <br>partypes[1] = Integer.TYPE; <br>Method meth = cls.getMethod("add", partypes); <br>method2 methobj = new method2(); <br>Object arglist[] = new Object[2]; <br>arglist[0] = new Integer(37); <br>arglist[1] = new Integer(47); <br>Object retobj = meth.invoke(methobj, arglist); <br>Integer retval = (Integer) retobj; <br>System.out.println(retval.intvalue()); <br>} catch (Throwable e) { <br>System.err.println(e); <br>} <br>} <br>} <br>假如一个程序在执行的某处的时候才知道需要执行某个方法，这个方法的名称是在程序的运行过程中指定的 (例如，JavaBean 开发环境中就会做这样的事)，那么上面的程序演示了如何做到。 <br>上例中，getMethod 用于查找一个具有两个整型参数且名为 add 的方法。找到该方法并创建了相应的 Method 对象之后，在正确的对象实例中执行它。执行该方法的时候，需要提供一个参数列表，这在上例中是分别包装了整数 37 和 47 的两个 Integer 对象。执行方法的返回的同样是一个 Integer 对象，它封装了返回值 84。 <br>7.创建新的对象 <br>对于构造器，则不能像执行方法那样进行，因为执行一个构造器就意味着创建了一个新的对象 (准确的说，创建一个对象的过程包括分配内存和构造对象)。所以，与上例最相似的例子如下： <br>import java.lang.reflect.*; <br>public class constructor2 { <br>public constructor2() { <br>} <br>public constructor2(int a, int b) { <br>System.out.println("a = " + a + " b = " + b); <br>} <br>public static void main(String args[]) { <br>try { <br>Class cls = Class.forName("constructor2"); <br>Class partypes[] = new Class[2]; <br>partypes[0] = Integer.TYPE; <br>partypes[1] = Integer.TYPE; <br>Constructor ct = cls.getConstructor(partypes); <br>Object arglist[] = new Object[2]; <br>arglist[0] = new Integer(37); <br>arglist[1] = new Integer(47); <br>Object retobj = ct.newInstance(arglist); <br>} catch (Throwable e) { <br>System.err.println(e); <br>} <br>} <br>} <br>根据指定的参数类型找到相应的构造函数并执行它，以创建一个新的对象实例。使用这种方法可以在程序运行时动态地创建对象，而不是在编译的时候创建对象，这一点非常有价值。 <br>8.改变字段(域)的值 <br>reflection 的还有一个用处就是改变对象数据字段的值。reflection 可以从正在运行的程序中根据名称找到对象的字段并改变它，下面的例子可以说明这一点： <br>import java.lang.reflect.*; <br>public class field2 { <br>public double d; <br>public static void main(String args[]) { <br>try { <br>Class cls = Class.forName("field2"); <br>Field fld = cls.getField("d"); <br>field2 f2obj = new field2(); <br>System.out.println("d = " + f2obj.d); <br>fld.setDouble(f2obj, 12.34); <br>System.out.println("d = " + f2obj.d); <br>} catch (Throwable e) { <br>System.err.println(e); <br>} <br>} <br>} <br>这个例子中，字段 d 的值被变为了 12.34。 <br>9.使用数组 <br>本文介绍的 reflection 的最后一种用法是创建的操作数组。数组在 Java 语言中是一种特殊的类类型，一个数组的引用可以赋给 Object 引用。观察下面的例子看看数组是怎么工作的： <br>import java.lang.reflect.*; <br>public class array1 { <br>public static void main(String args[]) { <br>try { <br>Class cls = Class.forName("java.lang.String"); <br>Object arr = Array.newInstance(cls, 10); <br>Array.set(arr, 5, "this is a test"); <br>String s = (String) Array.get(arr, 5); <br>System.out.println(s); <br>} catch (Throwable e) { <br>System.err.println(e); <br>} <br>} <br>} <br>例中创建了 10 个单位长度的 String 数组，为第 5 个位置的字符串赋了值，最后将这个字符串从数组中取得并打印了出来。 <br>下面这段代码提供了一个更复杂的例子： <br>import java.lang.reflect.*; <br>public class array2 { <br>public static void main(String args[]) { <br>int dims[] = new int[]{5, 10, 15}; <br>Object arr = Array.newInstance(Integer.TYPE, dims); <br>Object arrobj = Array.get(arr, 3); <br>Class cls = arrobj.getClass().getComponentType(); <br>System.out.println(cls); <br>arrobj = Array.get(arrobj, 5); <br>Array.setInt(arrobj, 10, 37); <br>int arrcast[][][] = (int[][][]) arr; <br>System.out.println(arrcast[3][5][10]); <br>} <br>} <br>例中创建了一个 5 x 10 x 15 的整型数组，并为处于 [3][5][10] 的元素赋了值为 37。注意，多维数组实际上就是数组的数组，例如，第一个 Array.get 之后，arrobj 是一个 10 x 15 的数组。进而取得其中的一个元素，即长度为 15 的数组，并使用 Array.setInt 为它的第 10 个元素赋值。 <br>注意创建数组时的类型是动态的，在编译时并不知道其类型。<br><br><br>注：以上信息均来自互联网</span> 
<img src ="http://www.blogjava.net/Swing/aggbug/128263.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Swing/" target="_blank">Sun</a> 2007-07-05 10:26 <a href="http://www.blogjava.net/Swing/archive/2007/07/05/128263.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ajax学习点滴(不断增加中)</title><link>http://www.blogjava.net/Swing/archive/2007/06/26/126350.html</link><dc:creator>Sun</dc:creator><author>Sun</author><pubDate>Tue, 26 Jun 2007 07:26:00 GMT</pubDate><guid>http://www.blogjava.net/Swing/archive/2007/06/26/126350.html</guid><wfw:comment>http://www.blogjava.net/Swing/comments/126350.html</wfw:comment><comments>http://www.blogjava.net/Swing/archive/2007/06/26/126350.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Swing/comments/commentRss/126350.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Swing/services/trackbacks/126350.html</trackback:ping><description><![CDATA[<p style="COLOR: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;把学习ajax的一些知识记录一下，以后不断补充。<br></p>
<p style="COLOR: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;用于处理XML文档的DOM元素属性</p>
<p style="COLOR: #008000">
<table cellSpacing=0 cellPadding=0 border=1>
    <tbody>
        <tr>
            <td style="COLOR: #008000" vAlign=top width=50 height=10>
            <p style="COLOR: #008000" align=center>属性</p>
            </td>
            <td style="COLOR: #008000" vAlign=top width=284 height=10>
            <p style="COLOR: #008000" align=center>描述</p>
            </td>
        </tr>
        <tr>
            <td style="COLOR: #008000" vAlign=top width=284>
            <p style="COLOR: #008000">childNodes</p>
            </td>
            <td style="COLOR: #008000" vAlign=top width=284>
            <p style="COLOR: #008000">返回当前元素所有子元素的数组</p>
            </td>
        </tr>
        <tr>
            <td style="COLOR: #008000" vAlign=top width=284>
            <p style="COLOR: #008000">firstChild</p>
            </td>
            <td style="COLOR: #008000" vAlign=top width=284>
            <p style="COLOR: #008000">返回当前元素的第一个下级子元素</p>
            </td>
        </tr>
        <tr>
            <td style="COLOR: #008000" vAlign=top width=284>
            <p style="COLOR: #008000">lastChild</p>
            </td>
            <td style="COLOR: #008000" vAlign=top width=284>
            <p style="COLOR: #008000">返回当前元素的最后一个子元素</p>
            </td>
        </tr>
        <tr>
            <td style="COLOR: #008000" vAlign=top width=284>
            <p style="COLOR: #008000">nextSibling</p>
            </td>
            <td style="COLOR: #008000" vAlign=top width=284>
            <p style="COLOR: #008000">返回紧跟在当前元素后面的元素</p>
            </td>
        </tr>
        <tr>
            <td style="COLOR: #008000" vAlign=top width=284>
            <p style="COLOR: #008000">nodeValue</p>
            </td>
            <td style="COLOR: #008000" vAlign=top width=284>
            <p style="COLOR: #008000">指定表示元素值的读/写属性</p>
            </td>
        </tr>
        <tr>
            <td style="COLOR: #008000" vAlign=top width=284>
            <p style="COLOR: #008000">parentNode</p>
            </td>
            <td style="COLOR: #008000" vAlign=top width=284>
            <p style="COLOR: #008000">返回元素的父节点</p>
            </td>
        </tr>
        <tr>
            <td style="COLOR: #008000" vAlign=top width=284>
            <p style="COLOR: #008000">previousSibling</p>
            </td>
            <td style="COLOR: #008000" vAlign=top width=284>
            <p style="COLOR: #008000">返回紧邻当前元素之前的元素</p>
            </td>
        </tr>
    </tbody>
</table>
</p>
<p style="COLOR: #008000">&nbsp;</p>
<p style="COLOR: #008000">用于遍历XML文档的DOM元素方法</p>
<p style="COLOR: #008000">
<table cellSpacing=0 cellPadding=0 border=1>
    <tbody>
        <tr>
            <td style="COLOR: #008000" vAlign=top width=284>
            <p style="COLOR: #008000" align=center>方法</p>
            </td>
            <td style="COLOR: #008000" vAlign=top width=284>
            <p style="COLOR: #008000" align=center>描述</p>
            </td>
        </tr>
        <tr>
            <td style="COLOR: #008000" vAlign=top width=284>
            <p style="COLOR: #008000">getElementById(id)</p>
            </td>
            <td style="COLOR: #008000" vAlign=top width=284>
            <p style="COLOR: #008000">获取文档中有指定唯一ID属性值的元素</p>
            </td>
        </tr>
        <tr>
            <td style="COLOR: #008000" vAlign=top width=284>
            <p style="COLOR: #008000">getElementsByTageName(name)</p>
            </td>
            <td style="COLOR: #008000" vAlign=top width=284>
            <p style="COLOR: #008000">返回当前元素中有指定标记名的子元素的数组</p>
            </td>
        </tr>
        <tr>
            <td style="COLOR: #008000" vAlign=top width=284>
            <p style="COLOR: #008000">hasChildNodes()</p>
            </td>
            <td style="COLOR: #008000" vAlign=top width=284>
            <p style="COLOR: #008000">返回一个布尔值，指示元素是否有子元素</p>
            </td>
        </tr>
        <tr>
            <td style="COLOR: #008000" vAlign=top width=284>
            <p style="COLOR: #008000">getAttribute(name)</p>
            </td>
            <td style="COLOR: #008000" vAlign=top width=284>
            <p style="COLOR: #008000">返回元素的属性值，属性由name指定</p>
            </td>
        </tr>
    </tbody>
</table>
<br></p>
<div style="COLOR: #008000"><a id=viewpost1_TitleUrl href="http://www.cnblogs.com/gofficer/archive/2007/06/01/767516.html"><span style="COLOR: #008000">动态创建内容时所用的W3C DOM属性和方法</span></a> </div>
<p style="COLOR: #008000">&nbsp;
<table cellSpacing=0 cellPadding=0 border=1>
    <tbody>
        <tr>
            <td style="COLOR: #008000" vAlign=top width=300>
            <p style="COLOR: #008000" align=center>属性/方法</p>
            </td>
            <td style="COLOR: #008000" vAlign=top width=300>
            <p style="COLOR: #008000" align=center>描述</p>
            </td>
        </tr>
        <tr>
            <td style="COLOR: #008000" vAlign=top width=300>
            <p style="COLOR: #008000">Document.createElement(tagName)</p>
            </td>
            <td style="COLOR: #008000" vAlign=top width=300>
            <p style="COLOR: #008000">文档对象上的createElement方法可以创建由tagName指定的元素。如果以字符串串div作为方法参数，就会生成一个div元素</p>
            </td>
        </tr>
        <tr>
            <td style="COLOR: #008000" vAlign=top width=300>
            <p style="COLOR: #008000">Document.createTextNode(text)</p>
            </td>
            <td style="COLOR: #008000" vAlign=top width=300>
            <p style="COLOR: #008000">文档对象的createTextNode方法会创建一个包含静态文本的节点。</p>
            </td>
        </tr>
        <tr>
            <td style="COLOR: #008000" vAlign=top width=300>
            <p style="COLOR: #008000">&lt;element&gt;.appendChild(childNode)</p>
            </td>
            <td style="COLOR: #008000" vAlign=top width=300>
            <p style="COLOR: #008000">appendChild方法将指定的节点增加到当前元素的子节点列表（作为一个新的子节点）。例如：可以增加一个option元素，作为select元素的子节点。</p>
            </td>
        </tr>
        <tr>
            <td style="COLOR: #008000" vAlign=top width=300>
            <p style="COLOR: #008000">&lt;element&gt;.getAttribute(name)</p>
            <p style="COLOR: #008000">&lt;element&gt;.setAttribute(name)</p>
            </td>
            <td style="COLOR: #008000" vAlign=top width=300>
            <p style="COLOR: #008000">这些方法分别获得和设置元素中name属性的值。</p>
            </td>
        </tr>
        <tr>
            <td style="COLOR: #008000" vAlign=top width=300>
            <p style="COLOR: #008000">&lt;element&gt;.insertBefore(newNode,targetNode)</p>
            </td>
            <td style="COLOR: #008000" vAlign=top width=300>
            <p style="COLOR: #008000">这个方法将节点newNode作为当前元素的子节点插到targetNode元素前面。</p>
            </td>
        </tr>
        <tr>
            <td style="COLOR: #008000" vAlign=top width=300>
            <p style="COLOR: #008000">&lt;element&gt;.removeAttribute(name)</p>
            </td>
            <td style="COLOR: #008000" vAlign=top width=300>
            <p style="COLOR: #008000">这个方法从元素中删除属性name。</p>
            </td>
        </tr>
        <tr>
            <td style="COLOR: #008000" vAlign=top width=300>
            <p style="COLOR: #008000">&lt;element&gt;.replaceChild(newNode,oldNode)</p>
            </td>
            <td style="COLOR: #008000" vAlign=top width=300>
            <p style="COLOR: #008000">这个方法将节点oldNode替换位节点newNode。</p>
            </td>
        </tr>
        <tr>
            <td style="COLOR: #008000" vAlign=top width=300>
            <p style="COLOR: #008000">&lt;element&gt;.hasChildnodes()</p>
            </td>
            <td style="COLOR: #008000" vAlign=top width=300>
            <p style="COLOR: #008000">这个方法返回一个布尔值，指示元素是否有子元素。</p>
            </td>
        </tr>
        <tr>
            <td style="COLOR: #008000" vAlign=top width=300>
            <p style="COLOR: #008000">&lt;element&gt;.cloneNode(true)</p>
            </td>
            <td style="COLOR: #008000" vAlign=top width=300>
            <p style="COLOR: #008000">克隆当前元素，并返回新元素</p>
            </td>
        </tr>
    </tbody>
</table>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1、在XML文档中文本本身被认为一个节点，而且必须是另外一个节点的子元素，ex)&lt;state&gt;shandong&lt;/state&gt; shandong 其实是state的子元素，必须先从state获取文本元素，再从这个文本元素得到文本内容，<br>具体代码如下：<br>var xmlDoc=xmlHttp.responseXML;<br>var allStates=xmlDoc.getElementsByTagName("state");//得到一个state的数组<br>var currentState=null;<br>for(var i=0;i&lt;allStates.length;i++){<br>&nbsp;&nbsp;&nbsp;currentState=allStates[i];//得到具体的一个state元素<br>&nbsp;&nbsp;&nbsp;alert(currentState.childNodes[0].nodeValue);//文本元素是state的第一个子元素<br>&nbsp;&nbsp;&nbsp;//通过childNodes属性得到state元素的文本元素，<br>&nbsp;&nbsp;&nbsp;//nodeValue返回文本元素的内容<br>}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2、关于浏览器的不兼容性引起的问题的解决方法<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1)、如果使用appendChild()将tr添加到一个table中，在ie中将不会出现此行<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;解决方法：将tr元素添加到表的&lt;tbody&gt;元素中<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(2)、IE中不能使用setAttribute正确的设置class属性，<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;解决方法：同时使用setAttribute("class","newclassName");和<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setAttribute&nbsp;&nbsp;("className","newclassName");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(3)、IE中不能使用setAttribute设置style属性<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;解决方法：&lt;element&gt;.style.cssText="font-size: 12px; "<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3、用post方法发送数据的时候，需要设置xmlHttp.setrequestheader("Content-Type","application/x-www-form-urlencoded");让服务器知道请求体中有请求参数。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4、在请求中加入"&amp;timeStamp="+new Date().getTime()的作用：有些浏览器会把多个xmlHttp请求的结果缓存在同一个url，如果对每个请求的响应不同会带来不好的后果，加上时间戳以后就可以保证URL的唯一性，避免浏览器缓存结果。<br></p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: #008000">&nbsp;5、xmlHttp.setrequestheader("contentType","text/html;charset=uft-8");可以解决发送过程中的汉字乱码问题。&nbsp;&nbsp;&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6、动态刷新的实现：核心就是setTimeout()方法通过setTimeout("startCallServer()",5000);方式隔5S后执行startCallServe方法 注意setTimeout方法只执行一次，所以在事件处理函数里要再次调用setTimeout方法这样形成一个循环调用。</span> 
<img src ="http://www.blogjava.net/Swing/aggbug/126350.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Swing/" target="_blank">Sun</a> 2007-06-26 15:26 <a href="http://www.blogjava.net/Swing/archive/2007/06/26/126350.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javascript控制html:radio 选中</title><link>http://www.blogjava.net/Swing/archive/2007/06/25/126050.html</link><dc:creator>Sun</dc:creator><author>Sun</author><pubDate>Mon, 25 Jun 2007 03:10:00 GMT</pubDate><guid>http://www.blogjava.net/Swing/archive/2007/06/25/126050.html</guid><wfw:comment>http://www.blogjava.net/Swing/comments/126050.html</wfw:comment><comments>http://www.blogjava.net/Swing/archive/2007/06/25/126050.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Swing/comments/commentRss/126050.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Swing/services/trackbacks/126050.html</trackback:ping><description><![CDATA[<span style="COLOR: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在刚做的一个考试系统中，用到了javascript控制radio的选取操作,主要思想就是取得上次操作选中的项的值存为hidden 然后在javascript中 通过循环取得这些值，然后和radio的value值进行对比，如果两者值一样则将radio的checked属性设置为true即可。<br>function sel(){<br>&nbsp;&nbsp;var sel=document.getElementById("pagex");<br>&nbsp;&nbsp;var st1=(sel.value-1)*10+1;<br>&nbsp;&nbsp;var st2=sel.value*10+1;<br>&nbsp;&nbsp;for(var m=st1;m&lt;st2;m++){<br>&nbsp;&nbsp;&nbsp;var ans=document.getElementsByName("sel"+m);<br>&nbsp;&nbsp;&nbsp;var val=document.getElementById("selx"+(m-1));<br>&nbsp;&nbsp;&nbsp;&nbsp; for(var i=0;i&lt;ans.length;i++){<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;if(ans[i].value==val.value){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans[i].checked=true;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;}<br>JavaScript功能真的很强大，博大精深，要好好学习了。</span> 
<img src ="http://www.blogjava.net/Swing/aggbug/126050.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Swing/" target="_blank">Sun</a> 2007-06-25 11:10 <a href="http://www.blogjava.net/Swing/archive/2007/06/25/126050.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>