﻿<?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-灵魂-放水-文章分类-综合技术</title><link>http://www.blogjava.net/zqli/category/7607.html</link><description>为学日益，为道日损。</description><language>zh-cn</language><lastBuildDate>Tue, 27 Feb 2007 10:27:42 GMT</lastBuildDate><pubDate>Tue, 27 Feb 2007 10:27:42 GMT</pubDate><ttl>60</ttl><item><title>[收藏]CSDN - 文档中心 -各种排序算法java实现 </title><link>http://www.blogjava.net/zqli/articles/51148.html</link><dc:creator>放水老倌</dc:creator><author>放水老倌</author><pubDate>Wed, 07 Jun 2006 08:06:00 GMT</pubDate><guid>http://www.blogjava.net/zqli/articles/51148.html</guid><wfw:comment>http://www.blogjava.net/zqli/comments/51148.html</wfw:comment><comments>http://www.blogjava.net/zqli/articles/51148.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zqli/comments/commentRss/51148.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zqli/services/trackbacks/51148.html</trackback:ping><description><![CDATA[
		<p>package org.rut.util.algorithm.support;</p>
		<p>import org.rut.util.algorithm.SortUtil;<br />/**<br /> * @author treeroot<br /> * @since 2006-2-2<br /> * @version 1.0<br /> */<br />public class InsertSort implements SortUtil.Sort{</p>
		<p>    /* (non-Javadoc)<br />     * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])<br />     */<br />    public void sort(int[] data) {<br />        int temp;<br />        for(int i=1;i&lt;data.length;i++){<br />            for(int j=i;(j&gt;0)&amp;&amp;(data[j]&lt;data[j-1]);j--){<br />                SortUtil.swap(data,j,j-1);<br />            }<br />        }        <br />    }</p>
		<p>}<br />冒泡排序:</p>
		<p>package org.rut.util.algorithm.support;</p>
		<p>import org.rut.util.algorithm.SortUtil;</p>
		<p>/**<br /> * @author treeroot<br /> * @since 2006-2-2<br /> * @version 1.0<br /> */<br />public class BubbleSort implements SortUtil.Sort{</p>
		<p>    /* (non-Javadoc)<br />     * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])<br />     */<br />    public void sort(int[] data) {<br />        int temp;<br />        for(int i=0;i&lt;data.length;i++){<br />            for(int j=data.length-1;j&gt;i;j--){<br />                if(data[j]&lt;data[j-1]){<br />                    SortUtil.swap(data,j,j-1);<br />                }<br />            }<br />        }<br />    }</p>
		<p>}</p>
		<p>选择排序:</p>
		<p>package org.rut.util.algorithm.support;</p>
		<p>import org.rut.util.algorithm.SortUtil;</p>
		<p>/**<br /> * @author treeroot<br /> * @since 2006-2-2<br /> * @version 1.0<br /> */<br />public class SelectionSort implements SortUtil.Sort {</p>
		<p>    /*<br />     * (non-Javadoc)<br />     * <br />     * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])<br />     */<br />    public void sort(int[] data) {<br />        int temp;<br />        for (int i = 0; i &lt; data.length; i++) {<br />            int lowIndex = i;<br />            for (int j = data.length - 1; j &gt; i; j--) {<br />                if (data[j] &lt; data[lowIndex]) {<br />                    lowIndex = j;<br />                }<br />            }<br />            SortUtil.swap(data,i,lowIndex);<br />        }<br />    }</p>
		<p>}</p>
		<p>Shell排序:</p>
		<p>package org.rut.util.algorithm.support;</p>
		<p>import org.rut.util.algorithm.SortUtil;</p>
		<p>/**<br /> * @author treeroot<br /> * @since 2006-2-2<br /> * @version 1.0<br /> */<br />public class ShellSort implements SortUtil.Sort{</p>
		<p>    /* (non-Javadoc)<br />     * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])<br />     */<br />    public void sort(int[] data) {<br />        for(int i=data.length/2;i&gt;2;i/=2){<br />            for(int j=0;j&lt;i;j++){<br />                insertSort(data,j,i);<br />            }<br />        }<br />        insertSort(data,0,1);<br />    }</p>
		<p>    /**<br />     * @param data<br />     * @param j<br />     * @param i<br />     */<br />    private void insertSort(int[] data, int start, int inc) {<br />        int temp;<br />        for(int i=start+inc;i&lt;data.length;i+=inc){<br />            for(int j=i;(j&gt;=inc)&amp;&amp;(data[j]&lt;data[j-inc]);j-=inc){<br />                SortUtil.swap(data,j,j-inc);<br />            }<br />        }<br />    }</p>
		<p>}</p>
		<p>快速排序:</p>
		<p>package org.rut.util.algorithm.support;</p>
		<p>import org.rut.util.algorithm.SortUtil;</p>
		<p>/**<br /> * @author treeroot<br /> * @since 2006-2-2<br /> * @version 1.0<br /> */<br />public class QuickSort implements SortUtil.Sort{</p>
		<p>    /* (non-Javadoc)<br />     * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])<br />     */<br />    public void sort(int[] data) {<br />        quickSort(data,0,data.length-1);        <br />    }<br />    private void quickSort(int[] data,int i,int j){<br />        int pivotIndex=(i+j)/2;<br />        //swap<br />        SortUtil.swap(data,pivotIndex,j);<br />        <br />        int k=partition(data,i-1,j,data[j]);<br />        SortUtil.swap(data,k,j);<br />        if((k-i)&gt;1) quickSort(data,i,k-1);<br />        if((j-k)&gt;1) quickSort(data,k+1,j);<br />        <br />    }<br />    /**<br />     * @param data<br />     * @param i<br />     * @param j<br />     * @return<br />     */<br />    private int partition(int[] data, int l, int r,int pivot) {<br />        do{<br />           while(data[++l]&lt;pivot);<br />           while((r!=0)&amp;&amp;data[--r]&gt;pivot);<br />           SortUtil.swap(data,l,r);<br />        }<br />        while(l&lt;r);<br />        SortUtil.swap(data,l,r);        <br />        return l;<br />    }</p>
		<p>}<br />改进后的快速排序:</p>
		<p>package org.rut.util.algorithm.support;</p>
		<p>import org.rut.util.algorithm.SortUtil;</p>
		<p>/**<br /> * @author treeroot<br /> * @since 2006-2-2<br /> * @version 1.0<br /> */<br />public class ImprovedQuickSort implements SortUtil.Sort {</p>
		<p>    private static int MAX_STACK_SIZE=4096;<br />    private static int THRESHOLD=10;<br />    /* (non-Javadoc)<br />     * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])<br />     */<br />    public void sort(int[] data) {<br />        int[] stack=new int[MAX_STACK_SIZE];<br />        <br />        int top=-1;<br />        int pivot;<br />        int pivotIndex,l,r;<br />        <br />        stack[++top]=0;<br />        stack[++top]=data.length-1;<br />        <br />        while(top&gt;0){<br />            int j=stack[top--];<br />            int i=stack[top--];<br />            <br />            pivotIndex=(i+j)/2;<br />            pivot=data[pivotIndex];<br />            <br />            SortUtil.swap(data,pivotIndex,j);<br />            <br />            //partition<br />            l=i-1;<br />            r=j;<br />            do{<br />                while(data[++l]&lt;pivot);<br />                while((r!=0)&amp;&amp;(data[--r]&gt;pivot));<br />                SortUtil.swap(data,l,r);<br />            }<br />            while(l&lt;r);<br />            SortUtil.swap(data,l,r);<br />            SortUtil.swap(data,l,j);<br />            <br />            if((l-i)&gt;THRESHOLD){<br />                stack[++top]=i;<br />                stack[++top]=l-1;<br />            }<br />            if((j-l)&gt;THRESHOLD){<br />                stack[++top]=l+1;<br />                stack[++top]=j;<br />            }<br />            <br />        }<br />        //new InsertSort().sort(data);<br />        insertSort(data);<br />    }<br />    /**<br />     * @param data<br />     */<br />    private void insertSort(int[] data) {<br />        int temp;<br />        for(int i=1;i&lt;data.length;i++){<br />            for(int j=i;(j&gt;0)&amp;&amp;(data[j]&lt;data[j-1]);j--){<br />                SortUtil.swap(data,j,j-1);<br />            }<br />        }       <br />    }</p>
		<p>}</p>
		<p>归并排序:</p>
		<p>package org.rut.util.algorithm.support;</p>
		<p>import org.rut.util.algorithm.SortUtil;</p>
		<p>/**<br /> * @author treeroot<br /> * @since 2006-2-2<br /> * @version 1.0<br /> */<br />public class MergeSort implements SortUtil.Sort{</p>
		<p>    /* (non-Javadoc)<br />     * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])<br />     */<br />    public void sort(int[] data) {<br />        int[] temp=new int[data.length];<br />        mergeSort(data,temp,0,data.length-1);<br />    }<br />    <br />    private void mergeSort(int[] data,int[] temp,int l,int r){<br />        int mid=(l+r)/2;<br />        if(l==r) return ;<br />        mergeSort(data,temp,l,mid);<br />        mergeSort(data,temp,mid+1,r);<br />        for(int i=l;i&lt;=r;i++){<br />            temp[i]=data[i];<br />        }<br />        int i1=l;<br />        int i2=mid+1;<br />        for(int cur=l;cur&lt;=r;cur++){<br />            if(i1==mid+1)<br />                data[cur]=temp[i2++];<br />            else if(i2&gt;r)<br />                data[cur]=temp[i1++];<br />            else if(temp[i1]&lt;temp[i2])<br />                data[cur]=temp[i1++];<br />            else<br />                data[cur]=temp[i2++];            <br />        }<br />    }</p>
		<p>}</p>
		<p>改进后的归并排序:</p>
		<p>package org.rut.util.algorithm.support;</p>
		<p>import org.rut.util.algorithm.SortUtil;</p>
		<p>/**<br /> * @author treeroot<br /> * @since 2006-2-2<br /> * @version 1.0<br /> */<br />public class ImprovedMergeSort implements SortUtil.Sort {</p>
		<p>    private static final int THRESHOLD = 10;</p>
		<p>    /*<br />     * (non-Javadoc)<br />     * <br />     * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])<br />     */<br />    public void sort(int[] data) {<br />        int[] temp=new int[data.length];<br />        mergeSort(data,temp,0,data.length-1);<br />    }</p>
		<p>    private void mergeSort(int[] data, int[] temp, int l, int r) {<br />        int i, j, k;<br />        int mid = (l + r) / 2;<br />        if (l == r)<br />            return;<br />        if ((mid - l) &gt;= THRESHOLD)<br />            mergeSort(data, temp, l, mid);<br />        else<br />            insertSort(data, l, mid - l + 1);<br />        if ((r - mid) &gt; THRESHOLD)<br />            mergeSort(data, temp, mid + 1, r);<br />        else<br />            insertSort(data, mid + 1, r - mid);</p>
		<p>        for (i = l; i &lt;= mid; i++) {<br />            temp[i] = data[i];<br />        }<br />        for (j = 1; j &lt;= r - mid; j++) {<br />            temp[r - j + 1] = data[j + mid];<br />        }<br />        int a = temp[l];<br />        int b = temp[r];<br />        for (i = l, j = r, k = l; k &lt;= r; k++) {<br />            if (a &lt; b) {<br />                data[k] = temp[i++];<br />                a = temp[i];<br />            } else {<br />                data[k] = temp[j--];<br />                b = temp[j];<br />            }<br />        }<br />    }</p>
		<p>    /**<br />     * @param data<br />     * @param l<br />     * @param i<br />     */<br />    private void insertSort(int[] data, int start, int len) {<br />        for(int i=start+1;i&lt;start+len;i++){<br />            for(int j=i;(j&gt;start) &amp;&amp; data[j]&lt;data[j-1];j--){<br />                SortUtil.swap(data,j,j-1);<br />            }<br />        }<br />    }</p>
		<p>}<br />堆排序:</p>
		<p>package org.rut.util.algorithm.support;</p>
		<p>import org.rut.util.algorithm.SortUtil;</p>
		<p>/**<br /> * @author treeroot<br /> * @since 2006-2-2<br /> * @version 1.0<br /> */<br />public class HeapSort implements SortUtil.Sort{</p>
		<p>    /* (non-Javadoc)<br />     * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])<br />     */<br />    public void sort(int[] data) {<br />        MaxHeap h=new MaxHeap();<br />        h.init(data);<br />        for(int i=0;i&lt;data.length;i++)<br />            h.remove();<br />        System.arraycopy(h.queue,1,data,0,data.length);<br />    }</p>
		<p>
				<br />     private static class MaxHeap{<br />         <br />        <br />        void init(int[] data){<br />            this.queue=new int[data.length+1];<br />            for(int i=0;i&lt;data.length;i++){<br />                queue[++size]=data[i];<br />                fixUp(size);<br />            }<br />        }<br />         <br />        private int size=0;</p>
		<p>        private int[] queue;<br />                <br />        public int get() {<br />            return queue[1];<br />        }</p>
		<p>        public void remove() {<br />            SortUtil.swap(queue,1,size--);<br />            fixDown(1);<br />        }<br />        //fixdown<br />        private void fixDown(int k) {<br />            int j;<br />            while ((j = k &lt;&lt; 1) &lt;= size) {<br />                if (j &lt; size &amp;&amp; queue[j]&lt;queue[j+1])<br />                    j++; <br />                if (queue[k]&gt;queue[j]) //不用交换<br />                    break;<br />                SortUtil.swap(queue,j,k);<br />                k = j;<br />            }<br />        }<br />        private void fixUp(int k) {<br />            while (k &gt; 1) {<br />                int j = k &gt;&gt; 1;<br />                if (queue[j]&gt;queue[k])<br />                    break;<br />                SortUtil.swap(queue,j,k);<br />                k = j;<br />            }<br />        }</p>
		<p>    }</p>
		<p>}</p>
		<p> </p>
		<p>SortUtil:</p>
		<p>package org.rut.util.algorithm;</p>
		<p>import org.rut.util.algorithm.support.BubbleSort;<br />import org.rut.util.algorithm.support.HeapSort;<br />import org.rut.util.algorithm.support.ImprovedMergeSort;<br />import org.rut.util.algorithm.support.ImprovedQuickSort;<br />import org.rut.util.algorithm.support.InsertSort;<br />import org.rut.util.algorithm.support.MergeSort;<br />import org.rut.util.algorithm.support.QuickSort;<br />import org.rut.util.algorithm.support.SelectionSort;<br />import org.rut.util.algorithm.support.ShellSort;</p>
		<p>/**<br /> * @author treeroot<br /> * @since 2006-2-2<br /> * @version 1.0<br /> */<br />public class SortUtil {<br />    public final static int INSERT = 1;</p>
		<p>    public final static int BUBBLE = 2;</p>
		<p>    public final static int SELECTION = 3;</p>
		<p>    public final static int SHELL = 4;</p>
		<p>    public final static int QUICK = 5;</p>
		<p>    public final static int IMPROVED_QUICK = 6;</p>
		<p>    public final static int MERGE = 7;</p>
		<p>    public final static int IMPROVED_MERGE = 8;</p>
		<p>    public final static int HEAP = 9;</p>
		<p>    public static void sort(int[] data) {<br />        sort(data, IMPROVED_QUICK);<br />    }<br />    private static String[] name={<br />            "insert","bubble","selection","shell","quick","improved_quick","merge","improved_merge","heap"<br />    };<br />    <br />    private static Sort[] impl=new Sort[]{<br />            new InsertSort(),<br />            new BubbleSort(),<br />            new SelectionSort(),<br />            new ShellSort(),<br />            new QuickSort(),<br />            new ImprovedQuickSort(),<br />            new MergeSort(),<br />            new ImprovedMergeSort(),<br />            new HeapSort()<br />    };</p>
		<p>    public static String toString(int algorithm){<br />        return name[algorithm-1];<br />    }<br />    <br />    public static void sort(int[] data, int algorithm) {<br />        impl[algorithm-1].sort(data);<br />    }</p>
		<p>    public static interface Sort {<br />        public void sort(int[] data);<br />    }</p>
		<p>    public static void swap(int[] data, int i, int j) {<br />        int temp = data[i];<br />        data[i] = data[j];<br />        data[j] = temp;<br />    }<br />}<br /></p>
<img src ="http://www.blogjava.net/zqli/aggbug/51148.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zqli/" target="_blank">放水老倌</a> 2006-06-07 16:06 <a href="http://www.blogjava.net/zqli/articles/51148.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>下拉式列表框</title><link>http://www.blogjava.net/zqli/articles/47598.html</link><dc:creator>放水老倌</dc:creator><author>放水老倌</author><pubDate>Tue, 23 May 2006 02:48:00 GMT</pubDate><guid>http://www.blogjava.net/zqli/articles/47598.html</guid><wfw:comment>http://www.blogjava.net/zqli/comments/47598.html</wfw:comment><comments>http://www.blogjava.net/zqli/articles/47598.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zqli/comments/commentRss/47598.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zqli/services/trackbacks/47598.html</trackback:ping><description><![CDATA[
		<p align="justify">建立下拉式列表框</p>
		<font face="宋体" size="3">
				<p align="justify">用来代替复选框和单选按钮的另一个方法是建立下拉式列表框来显示一个选择菜单。下拉式列表框一次只能显示一个选择，要查看别的可能的选项，你可以点击框右边的箭头。使用下拉式列表框的一个好处是它和单选按钮和复选框相比，占用网页上较少的空间。</p>
				<p align="justify">你可以使用&lt;SELECT&gt;和&lt;OPTION&gt;标识符来建立一个下拉式列表框，象下面的例子：</p>
				<p align="justify">
						<font color="#ff8c00">&lt;HTML&gt;</font>
				</p>
				<p align="justify">
						<font color="#ff8c00">&lt;HEAD&gt;</font>
				</p>
				<p align="justify">
						<font color="#ff8c00">&lt;TITLE&gt; Drop-Down List Box &lt;/TITLE&gt;</font>
				</p>
				<p align="justify">
						<font color="#ff8c00">&lt;/HEAD&gt;</font>
				</p>
				<p align="justify">
						<font color="#ff8c00">&lt;BODY &gt;</font>
				</p>
				<p align="justify">
						<font color="#ff8c00">&lt;FORM ACTION＝“somedirectory/mypage.asp” METHOD=“POST”&gt;</font>
				</p>
				<p align="justify">
						<font color="#ff8c00">&lt;BR&gt; Please indicate your sex:</font>
				</p>
				<p align="justify">
						<font color="#ff8c00">&lt;BR&gt; &lt;SELECT NAME=“sex”&gt;</font>
				</p>
				<p align="justify">
						<font color="#ff8c00">&lt;OPTION VALUE=“Is Male”&gt;Male</font>
				</p>
				<p align="justify">
						<font color="#ff8c00">&lt;OPTION VALUE=“Is Female”&gt;Female</font>
				</p>
				<p align="justify">
						<font color="#ff8c00">&lt;/SELECT&gt;</font>
				</p>
				<p align="justify">
						<font color="#ff8c00">&lt;INPUT TYPE=SUBMIT VALUE=“Submit Me!”&gt;</font>
				</p>
				<p align="justify">
						<font color="#ff8c00">&lt;/FORM&gt;</font>
				</p>
				<p align="justify">
						<font color="#ff8c00">&lt;/BODY&gt;</font>
				</p>
				<p align="justify">
						<font color="#ff8c00">&lt;/HTML&gt;</font>
				</p>
				<p align="justify">在此例中，&lt;SELECT&gt;的NAME属性为你的下拉式列表框提供了一个名字，每一个&lt;OPTION&gt;标识符提供了一个可能的选项。&lt;OPTION&gt;的VALUE属性指定了当选择了此项并按下Submit按钮后应该被提交的值。最后，在&lt;OPTION&gt;标识符后出现的文字决定了这一项在下拉式列表框中怎样显示出来。</p>
				<p align="justify">此例中的列表框与一组单选按钮的功能一样，你一次只能选择一项。例如，如果你从列表框中选择了Female一项，当按下Submit按钮时，发送的值将是Is Female。这个值将与列表框名sex相关联，你永远也不会一次选择多项。</p>
				<p align="justify">缺省状态下，跟在第一个&lt;OPTION&gt;标识符后的文字将会成为下拉式列表框的初始值而显示，你可以使用&lt;OPTION&gt;的SELECT属性来改变这一缺省值。在下例中，当列表框出现时，Female被选择了，虽然在选项列表中Male排在Female的前面。</p>
				<p align="justify">
						<font color="#ff1493">&lt;HTML&gt;</font>
				</p>
				<p align="justify">
						<font color="#ff1493">&lt;HEAD&gt;</font>
				</p>
				<p align="justify">
						<font color="#ff1493">&lt;TITLE&gt; Drop-Down List Box &lt;/TITLE&gt;</font>
				</p>
				<p align="justify">
						<font color="#ff1493">&lt;/HEAD&gt;</font>
				</p>
				<p align="justify">
						<font color="#ff1493">&lt;BODY &gt;</font>
				</p>
				<p align="justify">
						<font color="#ff1493">&lt;FORM ACTION＝“somedirectory/mypage.asp” METHOD=“POST”&gt;</font>
				</p>
				<p align="justify">
						<font color="#ff1493">&lt;BR&gt; Please indicate your sex:</font>
				</p>
				<p align="justify">
						<font color="#ff1493">&lt;BR&gt; &lt;SELECT NAME=“sex”&gt;</font>
				</p>
				<p align="justify">
						<font color="#ff1493">&lt;OPTION VALUE=“Is Male”&gt;Male</font>
				</p>
				<p align="justify">
						<font color="#ff1493">&lt;OPTION VALUE=“Is Female” SELECTED&gt;Female</font>
				</p>
				<p align="justify">
						<font color="#ff1493">&lt;/SELECT&gt;</font>
				</p>
				<p align="justify">
						<font color="#ff1493">&lt;BR&gt; &lt;INPUT TYPE=SUBMIT VALUE=“Submit Me!”&gt;</font>
				</p>
				<p align="justify">
						<font color="#ff1493">&lt;/FORM&gt;</font>
				</p>
				<p align="justify">
						<font color="#ff1493">&lt;/BODY&gt;</font>
				</p>
				<p align="justify">
						<font color="#ff1493">&lt;/HTML&gt;</font>
				</p>
				<p align="justify">指定一个不同的缺省值在某种情况下是很有用的，那就是当你有一个字母顺序的列表，但你想选择列表中的某一个作为它的缺省值。例如，假设你有一个许多图象的列表，但你想让缺省的图象是中国，在这种情况下，你可以使用SELECT属性来指定P.R.China为缺省值，即使这个国家的名字排列在整个字母表的后头。</p>
		</font>
<img src ="http://www.blogjava.net/zqli/aggbug/47598.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zqli/" target="_blank">放水老倌</a> 2006-05-23 10:48 <a href="http://www.blogjava.net/zqli/articles/47598.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一、JSP页面显示乱码二、表单提交中文时出现乱码三、数据库连[转]</title><link>http://www.blogjava.net/zqli/articles/46343.html</link><dc:creator>放水老倌</dc:creator><author>放水老倌</author><pubDate>Tue, 16 May 2006 02:35:00 GMT</pubDate><guid>http://www.blogjava.net/zqli/articles/46343.html</guid><wfw:comment>http://www.blogjava.net/zqli/comments/46343.html</wfw:comment><comments>http://www.blogjava.net/zqli/articles/46343.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zqli/comments/commentRss/46343.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zqli/services/trackbacks/46343.html</trackback:ping><description><![CDATA[ <b>一、JSP页面显示乱码二、表单提交中文时出现乱码三、数据库连</b><br />大家在JSP的开发过程中，经常出现中文乱码的问题，可能一至困扰着您，我现在把我在JSP开发中遇到的中文乱码的问题及解决办法写出来供大家参考。 <br /><br />一、JSP页面显示乱码 <br />下面的显示页面(display.jsp)就出现乱码： <br />&lt;html&gt; <br />&lt;head&gt; <br />&lt;title&gt;JSP的中文处理&lt;/title&gt; <br />&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&gt; <br />&lt;/head&gt; <br /><br />&lt;body&gt; <br />&lt;% <br />out.print("JSP的中文处理"); <br />%&gt; <br />&lt;/body&gt; <br />&lt;/html&gt; <br />对不同的WEB服务器和不同的JDK版本，处理结果就不一样。原因：服务器使用的编码方式不同和浏览器对不同的字符显示结果不同而导致的。解决办法：在JSP页面中指定编码方式(gb2312),即在页面的第一行加上：&lt;%@ page contentType="text/html; charset=gb2312"%&gt;，就可以消除乱码了。完整页面如下： <br />&lt;%@ page contentType="text/html; charset=gb2312"%&gt; <br />&lt;html&gt; <br />&lt;head&gt; <br />&lt;title&gt;JSP的中文处理&lt;/title&gt; <br />&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&gt; <br />&lt;/head&gt; <br /><br />&lt;body&gt; <br />&lt;% <br />out.print("JSP的中文处理"); <br />%&gt; <br />&lt;/body&gt; <br />&lt;/html&gt; <br /><br />二、表单提交中文时出现乱码 <br />下面是一个提交页面(submit.jsp)，代码如下： <br />&lt;html&gt; <br />&lt;head&gt; <br />&lt;title&gt;JSP的中文处理&lt;/title&gt; <br />&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&gt; <br />&lt;/head&gt; <br /><br />&lt;body&gt; <br />&lt;form name="form1" method="post" action="process.jsp"&gt; <br />&lt;div align="center"&gt; <br />&lt;input type="text" name="name"&gt; <br />&lt;input type="submit" name="Submit" value="Submit"&gt; <br />&lt;/div&gt; <br />&lt;/form&gt; <br />&lt;/body&gt; <br />&lt;/html&gt; <br />下面是处理页面(process.jsp)代码： <br />&lt;%@ page contentType="text/html; charset=gb2312"%&gt; <br />&lt;html&gt; <br />&lt;head&gt; <br />&lt;title&gt;JSP的中文处理&lt;/title&gt; <br />&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&gt; <br />&lt;/head&gt; <br /><br />&lt;body&gt; <br />&lt;%=request.getParameter("name")%&gt; <br />&lt;/body&gt; <br />&lt;/html&gt; <br />如果submit.jsp提交英文字符能正确显示，如果提交中文时就会出现乱码。原因：浏览器默认使用UTF-8编码方式来发送请求，而UTF-8和GB2312编码方式表示字符时不一样，这样就出现了不能识别字符。解决办法:通过request.seCharacterEncoding("gb2312")对请求进行统一编码，就实现了中文的正常显示。修改后的process.jsp代码如下： <br />&lt;%@ page contentType="text/html; charset=gb2312"%&gt; <br />&lt;% <br />request.seCharacterEncoding("gb2312"); <br />%&gt; <br />&lt;html&gt; <br />&lt;head&gt; <br />&lt;title&gt;JSP的中文处理&lt;/title&gt; <br />&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&gt; <br />&lt;/head&gt; <br /><br />&lt;body&gt; <br />&lt;%=request.getParameter("name")%&gt; <br />&lt;/body&gt; <br />&lt;/html&gt; <br /><br />三、数据库连接出现乱码 <br />只要涉及中文的地方全部是乱码，解决办法：在数据库的数据库URL中加上useUnicode=true&amp;characterEncoding=GBK就OK了。 <br /><br />四、数据库的显示乱码 <br />在mysql4.1.0中,varchar类型，text类型就会出现中文乱码，对于varchar类型把它设为binary属性就可以解决中文问题，对于text类型就要用一个编码转换类来处理，实现如下： <br />public class Convert { <br />/** 把ISO-8859-1码转换成GB2312 <br />*/ <br />public static String ISOtoGB(String iso){ <br />String gb; <br />try{ <br />if(iso.equals("") || iso == null){ <br />return ""; <br />} <br />else{ <br />iso = iso.trim(); <br />gb = new String(iso.getBytes("ISO-8859-1"),"GB2312"); <br />return gb; <br />} <br />} <br />catch(Exception e){ <br />System.err.print("编码转换错误："+e.getMessage()); <br />return ""; <br />} <br />} <br />} <br />把它编译成class，就可以调用Convert类的静态方法ISOtoGB()来转换编码。 <br /><br /><br />如果你还有什么不懂之处：我给大家推荐一个好的JSP-JAVA网站： <br /><br />http://www.phy.hbnu.edu.cn/dsp/ <br /><br />Linux和Java是互联网的宠儿,更是互联网时代的两头雄师, Linux的网络安全性和开放源代码,Java的平台独立性和安全易用性，正好符合Internet平台的要求，Linux和Java真是天生一对鸳鸯。双狮资源网给你提供了最好的Linux和Java学习资源， 欢迎大家多多访问并宣传： <br />http://www.phy.hbnu.edu.cn/dsp/ <img src ="http://www.blogjava.net/zqli/aggbug/46343.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zqli/" target="_blank">放水老倌</a> 2006-05-16 10:35 <a href="http://www.blogjava.net/zqli/articles/46343.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ＣＳＳ</title><link>http://www.blogjava.net/zqli/articles/34337.html</link><dc:creator>放水老倌</dc:creator><author>放水老倌</author><pubDate>Wed, 08 Mar 2006 12:11:00 GMT</pubDate><guid>http://www.blogjava.net/zqli/articles/34337.html</guid><wfw:comment>http://www.blogjava.net/zqli/comments/34337.html</wfw:comment><comments>http://www.blogjava.net/zqli/articles/34337.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/zqli/comments/commentRss/34337.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zqli/services/trackbacks/34337.html</trackback:ping><description><![CDATA[CSS声明的样式属性是具有继承性的，也就是说，若样式单没有为某一元素指定特定的样式，则该元素将自动继承父元素的属性，若某一元素指定了特定的样式，那么该元素将不使用通过继承得到的样式，我们甚至可以将这种性质称之为重载。哈哈<BR><BR>样式是从一个元素的现有的样式规则中选择出来的，有时候会碰到一个元素有多个可选的样式的情况，因此需要规定一种机制解决这种冲突。假设一个元素有如下的可选样式：<BR>1、继承的样式<BR>2、本元素的通用样式<BR>3、通过类名选择的样式<BR>4、通过ID选择的样式<BR><BR>则该元素的样式表使用次序是4、3、2、1<img src ="http://www.blogjava.net/zqli/aggbug/34337.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zqli/" target="_blank">放水老倌</a> 2006-03-08 20:11 <a href="http://www.blogjava.net/zqli/articles/34337.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ＸＭＬ</title><link>http://www.blogjava.net/zqli/articles/33894.html</link><dc:creator>放水老倌</dc:creator><author>放水老倌</author><pubDate>Mon, 06 Mar 2006 09:39:00 GMT</pubDate><guid>http://www.blogjava.net/zqli/articles/33894.html</guid><wfw:comment>http://www.blogjava.net/zqli/comments/33894.html</wfw:comment><comments>http://www.blogjava.net/zqli/articles/33894.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/zqli/comments/commentRss/33894.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zqli/services/trackbacks/33894.html</trackback:ping><description><![CDATA[1、在一个通用实体引用中可以包含另一个通用实体引用。<BR>&lt;! ENTITY&nbsp; COPY99&nbsp; "COPYRIGHT1999&amp;ERH;"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; ERH实体作为COPY99实体的一部分存在，而COPY99实体本身最终又成为文档内容的一部分。<BR>2、通用实体成为文档的一部分，而非DTD的组成成分。通用实体引用不能插入那些仅为DTD而非文档内容的文本。然而在DTD中的实体引用通常是有用的，因此，XML提供了参数实体引用的手段。<BR>&lt;!ENTITY&nbsp;&nbsp; %REH&nbsp;&nbsp;&nbsp; "EACELY"&gt;<BR>&lt;!ENTITY&nbsp;&nbsp; COPY99&nbsp; "COPYRIGHT1999%ERH;"&gt;<img src ="http://www.blogjava.net/zqli/aggbug/33894.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zqli/" target="_blank">放水老倌</a> 2006-03-06 17:39 <a href="http://www.blogjava.net/zqli/articles/33894.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CRC[转]</title><link>http://www.blogjava.net/zqli/articles/33579.html</link><dc:creator>放水老倌</dc:creator><author>放水老倌</author><pubDate>Sat, 04 Mar 2006 02:48:00 GMT</pubDate><guid>http://www.blogjava.net/zqli/articles/33579.html</guid><wfw:comment>http://www.blogjava.net/zqli/comments/33579.html</wfw:comment><comments>http://www.blogjava.net/zqli/articles/33579.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zqli/comments/commentRss/33579.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zqli/services/trackbacks/33579.html</trackback:ping><description><![CDATA[CRC 全称“Class-Responsibility-Collaboration”，是面向对象设计中的一种简单易行<BR>的快速设计方法。经过破门在公司项目的实践，感觉到设计过程的确简单易行，所以根据<BR>Ward Cunningham 的一篇讲稿整理出一份简单介绍，贴出来与大家共享。<BR><BR>翻译的PowerPoint讲稿可以在此下载：<BR><A href="ftp://www.clinux.org/pub/brokendoor/xp/firstCRC-cn.zip">firstCRC</A><BR><A href="ftp://www.clinux.org/pub/brokendoor/xp/firstCRC-cn.zip" target=_blank>ftp://www.clinux.org/pub/brokendoor/xp/firstCRC-cn.zip</A><BR><BR>1。面向对象编程的四个阶段<BR>- 标识对象<BR>- 设计草案<BR>- 构造层次<BR>- 实现方法<BR>其实现难度是按照由下到上的顺序递增的<BR><BR>2.标识对象简介<BR>- 按照合作代理（对象）的行为进行模块估计<BR>- 定义特定对象的类<BR>- 在类的基础上分配责任（符合需求）<BR><BR>3.一个设计方法<BR>- 根据经验和智慧做出决定<BR>- 用结构化的设计文档记录决定<BR>- 充分彻底的测试设计<BR>- 在实现的过程中维护和遵循设计<BR><BR>4.设计表述(CRC)<BR>- 列举所有的新类<BR>- 定义类成员担负的责任<BR>- 通过分配的责任来描述合作关系<BR><BR>5.CRC卡片介绍(使用实例 DrawingEditor)<BR>第一步：从已知的开始<BR>- 一个图由多个图片构成<BR>- 图片分成很多种类<BR>第二步：推测支持者<BR>- 一个线可能连接到其他图片<BR>- 一个“智能”点完成这个工作<BR>第三步：进行情景测试<BR>- 图片移动的时候依赖于定位器<BR>- 通过定位器改变顺序<BR>第四步：尝试进行分组<BR>- 一个处理类似一个工具<BR>- 处理器是唯一的<BR>第五步：重新分配责任<BR>- 选择保持在视图类中<BR>- 选择不会和图一起保存<BR><BR>第六步：为了清晰化而重写<BR>- 图片排序非常重要<BR><BR>__________________<BR><B>门之不存，道乃得之！</B><BR>下马饮君酒，问君何所之。<BR>君言不得意，归卧南山陲。<BR>但去莫复问，白云无尽时。<BR>————<BR>* <A href="http://www.softme.org/" target=_blank>http://www.softme.org</A><BR>* <A href="http://www.wfchina.org/" target=_blank>http://www.wfchina.org</A><BR>* <A href="http://gro.clinux.org/projects/webpm/" target=_blank>http://gro.clinux.org/projects/webpm/</A><BR></NORMALFONT><img src ="http://www.blogjava.net/zqli/aggbug/33579.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zqli/" target="_blank">放水老倌</a> 2006-03-04 10:48 <a href="http://www.blogjava.net/zqli/articles/33579.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ＲＦＩＤ</title><link>http://www.blogjava.net/zqli/articles/33216.html</link><dc:creator>放水老倌</dc:creator><author>放水老倌</author><pubDate>Thu, 02 Mar 2006 06:38:00 GMT</pubDate><guid>http://www.blogjava.net/zqli/articles/33216.html</guid><wfw:comment>http://www.blogjava.net/zqli/comments/33216.html</wfw:comment><comments>http://www.blogjava.net/zqli/articles/33216.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/zqli/comments/commentRss/33216.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zqli/services/trackbacks/33216.html</trackback:ping><description><![CDATA[<A href="http://www.rfidchina.org/index.php?option=search&amp;searchword=射频技术" target=_blank><SPAN class=keywords>射频技术</SPAN></A>和<A href="http://www.rfidchina.org/index.php?option=search&amp;searchword=条形码" target=_blank><SPAN class=keywords>条形码</SPAN></A>有什么不同？<BR>主要的区别如下：<BR>有无写入信息或更新内存的能力。条形码的内存不能更改。射频标签不像条形码，它特有的辨识器不能被复制。标签的作用不仅仅局限于视野之内，因为信息是由无线电波传输，而条形码必须在视野之内。<BR><BR>电子产品代码并不仅仅是一个无线电波条形码，它包含著一系列的数据和信息，象产地，日期代码和其他关键的供应信息，这些信息储存在一个小的硅片中，利用标签，解读器和计算机的联网，生产者和零售商就可以随时了解精确的产品和库存信息。<BR><img src ="http://www.blogjava.net/zqli/aggbug/33216.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zqli/" target="_blank">放水老倌</a> 2006-03-02 14:38 <a href="http://www.blogjava.net/zqli/articles/33216.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts-&gt;JSF</title><link>http://www.blogjava.net/zqli/articles/31740.html</link><dc:creator>放水老倌</dc:creator><author>放水老倌</author><pubDate>Tue, 21 Feb 2006 01:21:00 GMT</pubDate><guid>http://www.blogjava.net/zqli/articles/31740.html</guid><wfw:comment>http://www.blogjava.net/zqli/comments/31740.html</wfw:comment><comments>http://www.blogjava.net/zqli/articles/31740.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zqli/comments/commentRss/31740.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zqli/services/trackbacks/31740.html</trackback:ping><description><![CDATA[有无可能将Struts的某些方面同JSF相集成呢？想为现存的、基于Struts的应用套用JSF的事件驱动组件框架时，Struts的创造者编写了一个叫做Struts-Faces的集成类库来完成这个工作。<img src ="http://www.blogjava.net/zqli/aggbug/31740.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zqli/" target="_blank">放水老倌</a> 2006-02-21 09:21 <a href="http://www.blogjava.net/zqli/articles/31740.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>