<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>清风幻影</title>
    <description></description>
    <link>http://qingfengxia.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>Tomcat 5/6 utf-8 编码下完美解决(post/get)中文表单问题的过滤器</title>
        <author>qingfengxia</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://qingfengxia.javaeye.com">qingfengxia</a>&nbsp;
          链接：<a href="http://qingfengxia.javaeye.com/blog/198493" style="color:red;">http://qingfengxia.javaeye.com/blog/198493</a>&nbsp;
          发表时间: 2008年05月30日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><span style="font-weight: bold;">1.过滤器</span>
(包含get与post方式)SetCharacterEncodingFilter.java</p>
<pre name="code" class="java">package com.qingfeng.filter;

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.UnavailableException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;

public class SetCharacterEncodingFilter implements Filter {
     /**
     *
     * 对 HttpServletRequestWrapper 进行扩充, 不影响原来的功能并能提供所有的 HttpServletRequest
     * 接口中的功能. 它可以统一的对 Tomcat 默认设置下的中文问题进行解决而只需要用新的 Request 对象替换页面中的
     * request 对象即可.
     */
    protected String encoding = null;
    protected FilterConfig filterConfig = null;
    //protected boolean ignore = true;

    public void destroy() {
        this.encoding = null;
        this.filterConfig = null;
    }
    
    class Request extends HttpServletRequestWrapper {

        public Request(HttpServletRequest request) {
            super(request);
        }
        /**
         * 转换由表单读取的数据的内码.
         * 从 ISO 字符转到 utf-8(或gbk).
         */
        public String toChi(String input) {
            try {
                
              byte[] bytes = input.getBytes(&quot;ISO-8859-1&quot;);
              return new String(bytes, encoding);
            }
            catch (Exception ex) {
            }
            return null;
        }

        /**
         * Return the HttpServletRequest holded by this object.
         */
        private HttpServletRequest getHttpServletRequest()
        {
            return (HttpServletRequest)super.getRequest();
        }

        /**
         * 读取参数 -- 修正了中文问题.
         */
        public String getParameter(String name)
        {
            return toChi(getHttpServletRequest().getParameter(name));
        }

        /**
         * 读取参数列表 - 修正了中文问题.
         */
        public String[] getParameterValues(String name)
        {
              String values[] = getHttpServletRequest().getParameterValues(name);
              if (values != null) {
                for (int i = 0; i &lt; values.length; i++) {
                  values[i] = toChi(values[i]);
                }
              }
              return values;
        }
    }
    public void doFilter(ServletRequest request, ServletResponse response,
                         FilterChain chain)
        throws IOException, ServletException {


       // if (ignore || (request.getCharacterEncoding() == null)) {
       //     String encoding = selectEncoding(request);
            /*if (encoding != null)
                request.setCharacterEncoding(encoding);*/
       // }
        HttpServletRequest httpreq = (HttpServletRequest)request;
        if(httpreq.getMethod().equals(&quot;POST&quot;)) {
            request.setCharacterEncoding(encoding);
        } else {
            request = new Request(httpreq);
        }

    // Pass control on to the next filter
        chain.doFilter(request, response);

    }


    /**
     * Place this filter into service.
     *
     * @param filterConfig The filter configuration object
     */
    public void init(FilterConfig filterConfig) throws ServletException {

    this.filterConfig = filterConfig;
        this.encoding = filterConfig.getInitParameter(&quot;encoding&quot;);
 

    }

}</pre>
&nbsp;
<p><br />
<span style="font-weight: bold;">2.web.xml</span>
中增加过滤器配置</p>
<pre name="code" class="xml">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;web-app version=&quot;2.4&quot; xmlns=&quot;http://java.sun.com/xml/ns/j2ee&quot;
    xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
    xsi:schemaLocation=&quot;http://java.sun.com/xml/ns/j2ee
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd&quot;&gt;

    &lt;filter&gt;
        &lt;filter-name&gt;encodingfilter&lt;/filter-name&gt;
        &lt;filter-class&gt;com.filter.SetCharacterEncodingFilter&lt;/filter-class&gt;
        &lt;init-param&gt;
            &lt;param-name&gt;encoding&lt;/param-name&gt;
            &lt;param-value&gt;utf-8&lt;/param-value&gt;
        &lt;/init-param&gt;
    &lt;/filter&gt;
    &lt;filter-mapping&gt;
        &lt;filter-name&gt;encodingfilter&lt;/filter-name&gt;
        &lt;url-pattern&gt;/jsp/encoding/*&lt;/url-pattern&gt;
    &lt;/filter-mapping&gt;

  &lt;servlet&gt;
    &lt;description&gt;changecode&lt;/description&gt;
    &lt;display-name&gt;changecode&lt;/display-name&gt;
    &lt;servlet-name&gt;CodeServlet&lt;/servlet-name&gt;
    &lt;servlet-class&gt;com.filter.CodeServlet&lt;/servlet-class&gt;
  &lt;/servlet&gt;
&lt;servlet-mapping&gt;
    &lt;servlet-name&gt;CodeServlet&lt;/servlet-name&gt;
    &lt;url-pattern&gt;/servlet/CodeServlet&lt;/url-pattern&gt;
  &lt;/servlet-mapping&gt;
&lt;/web-app&gt;</pre>
&nbsp;
<p><br />
<span style="font-weight: bold;">3.测试页面</span>
 <br />
<span style="font-weight: bold;">(1) test.jsp</span></p>
<pre name="code" class="html">&lt;%@ page language=&quot;java&quot; import=&quot;java.util.*&quot; pageEncoding=&quot;UTF-8&quot;%&gt;
&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot;&gt;
&lt;html&gt;
  &lt;head&gt;
    &lt;title&gt;My JSP 'test.jsp' starting page&lt;/title&gt;
    &lt;!--
    &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;styles.css&quot;&gt;
    --&gt;
  &lt;/head&gt;
  &lt;body&gt;
   &lt;form action=&quot;action.jsp&quot;&gt;
   GET 方式: &lt;input type=text name=&quot;name&quot; value=&quot;GET 中文&quot;&gt;
   &lt;input type=submit&gt;
   &lt;/form&gt;
   &lt;form action=&quot;action.jsp&quot; method=&quot;POST&quot;&gt;
   POST 方式: &lt;input type=text name=&quot;name&quot; value=&quot;POST 中文&quot;&gt;
   &lt;input type=submit&gt;
   &lt;/form&gt;
  
   &lt;form action=&quot;/Test_2/servlet/CodeServlet&quot;&gt;
   GET 方式: &lt;input type=text name=&quot;name&quot; value=&quot;GET 中文&quot;&gt;
   &lt;input type=submit&gt;
   &lt;/form&gt;
   &lt;form action=&quot;/Test_2/servlet/CodeServlet&quot; method=&quot;POST&quot;&gt;
   POST 方式: &lt;input type=text name=&quot;name&quot; value=&quot;POST 中文&quot;&gt;
   &lt;input type=submit&gt;
   &lt;/form&gt;
  &lt;/body&gt;
&lt;/html&gt;</pre>
&nbsp;
<p><br />
<span style="font-weight: bold;">(2)action.jsp</span></p>
<pre name="code" class="html">&lt;%@ page language=&quot;java&quot; import=&quot;java.util.*&quot; pageEncoding=&quot;UTF-8&quot;%&gt;

&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot;&gt;
&lt;html&gt;
  &lt;head&gt;
    &lt;title&gt;My JSP 'action.jsp' starting page&lt;/title&gt;
    &lt;!--
    &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;styles.css&quot;&gt;
    --&gt;
  &lt;/head&gt;
   参数: &lt;%=request.getParameter(&quot;name&quot;) %&gt; &lt;br&gt;
  &lt;/body&gt;
&lt;/html&gt;</pre>
&nbsp;
<p><br />
<span style="font-weight: bold;">(3)CodeServlet.java<br />
</span>
</p>
<pre name="code" class="java">package com.filter.codetest;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class CodeServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        String name = request.getParameter(&quot;name&quot;);
        System.out.println(&quot;get方式:&quot;+name);
    }

    /**
     * The doPost method of the servlet. &lt;br&gt;
     *
     * This method is called when a form has its tag value method equals to post.
     *
     * @param request the request send by the client to the server
     * @param response the response send by the server to the client
     * @throws ServletException if an error occurred
     * @throws IOException if an error occurred
     */
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String name = request.getParameter(&quot;name&quot;);
        System.out.println(&quot;post方式:&quot;+name);
       
    }

}</pre>
&nbsp;
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://qingfengxia.javaeye.com/blog/198493#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 30 May 2008 00:40:16 +0800</pubDate>
        <link>http://qingfengxia.javaeye.com/blog/198493</link>
        <guid>http://qingfengxia.javaeye.com/blog/198493</guid>
      </item>
      <item>
        <title>：Java的AJAX请求中文编码方法</title>
        <author>qingfengxia</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://qingfengxia.javaeye.com">qingfengxia</a>&nbsp;
          链接：<a href="http://qingfengxia.javaeye.com/blog/198447" style="color:red;">http://qingfengxia.javaeye.com/blog/198447</a>&nbsp;
          发表时间: 2008年05月29日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>这里的方案是页面(page)是基于GBK(gb2312) 的编码格式
<br />
<br />
AJAX的中文情况,默认情况下,tomcat和weblogic的get和post请求的编码方案都不一样,不过前提都是要设置
request.setCharactorEncoding(&quot;UTF-8&quot;)如下面代码中,get方案是很烦琐的那种将得到的参数重新编码来实现
的|new String(request.getParameter(&quot;para name&quot;).getBytes(&quot;encoding
name&quot;))|而post方案是比较简单而方便的,也提倡使用这种方式,因为可以基于filter来管理编码
<br />
tomcat可以通过设置在server.xml里的Connector元素下设置URIencoding=&quot;gbk&quot;参数来让get使用
post的方案(即get和post都使用request.setCharactorEncoding(&quot;UTF-
8&quot;),request.getParameter(&quot;para name&quot;)
)具体设置参考http://www.javaeye.com/topic/131542,不过在weblogic下无解(我个人还没发现如何实
现),weblogic好像在解析get参数后自己又用什么编码格式包装过......其实AJAX
get根本没有普通请求get请求作为标签的作用,我们完全可以不使用get,而只使用post
<br />
<br />
测试用的jsp和servlet在下面,丢到一个项目里,在web.xml里配置servlet后运行可以看到效果,servlet的url-
pattern是这个&lt;url-pattern&gt;/GetAndPostExample&lt;/url-pattern&gt;
<br />
<br />
getAndPostExample.jsp</p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a href="http://www.javaeye.com/topic/131962#" title="复制代码" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;"><img src="http://www.javaeye.com/images/icon_copy.gif" alt="复制代码" />
</a>
</div>
</div>
<ol class="dp-j">
<li><span><span>&lt;%@&nbsp;page&nbsp;language=</span>
<span class="string">&quot;java&quot;</span>
<span>&nbsp;</span>
<span class="keyword">import</span>
<span>=</span>
<span class="string">&quot;java.util.Date&quot;</span>
<span>&nbsp;&nbsp;contentType=</span>
<span class="string">&quot;text/html;&nbsp;charset=gbk&quot;</span>
<span>%&gt;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&lt;html&gt;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;head&gt;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;发送带参数的信息到服务器，以及get,post的区别&lt;/title&gt;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;script&nbsp;type=<span class="string">&quot;text/javascript&quot;</span>
<span>&gt;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;xmlHttp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;show()&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(<span class="string">&quot;show&quot;</span>
<span>).value=document.getElementById(</span>
<span class="string">&quot;firstName&quot;</span>
<span>).value;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;createXMLHttpRequest()&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span>
<span>&nbsp;(window.ActiveXObject)&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlHttp&nbsp;=&nbsp;<span class="keyword">new</span>
<span>&nbsp;ActiveXObject(</span>
<span class="string">&quot;Microsoft.XMLHTTP&quot;</span>
<span>);&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">else</span>
<span>&nbsp;</span>
<span class="keyword">if</span>
<span>&nbsp;(window.XMLHttpRequest)&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlHttp&nbsp;=&nbsp;<span class="keyword">new</span>
<span>&nbsp;XMLhttpRequest();&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;createQueryString()&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;firstName&nbsp;=&nbsp;document.getElementById(<span class="string">&quot;firstName&quot;</span>
<span>).value;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;secondName&nbsp;=&nbsp;document.getElementById(<span class="string">&quot;secondName&quot;</span>
<span>).value;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;birthday&nbsp;=&nbsp;document.getElementById(<span class="string">&quot;birthday&quot;</span>
<span>).value;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;queryString&nbsp;=&nbsp;<span class="string">&quot;firstName=&quot;</span>
<span>+firstName+</span>
<span class="string">&quot;&amp;secondName=&quot;</span>
<span>+secondName&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+<span class="string">&quot;&amp;birthday=&quot;</span>
<span>+birthday;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span>
<span>&nbsp;queryString;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;doRequestUsingGET()&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;createXMLHttpRequest();&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show();&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;queryString&nbsp;=&nbsp;<span class="string">&quot;GetAndPostExample?&quot;</span>
<span>;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;queryString&nbsp;=&nbsp;queryString&nbsp;+&nbsp;createQueryString()&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;<span class="string">&quot;&amp;timeStamep=&quot;</span>
<span>&nbsp;+&nbsp;</span>
<span class="keyword">new</span>
<span>&nbsp;Date().getTime();&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlHttp.onreadystatechange&nbsp;=&nbsp;handleStateChange;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlHttp.open(<span class="string">&quot;GET&quot;</span>
<span>,queryString,</span>
<span class="keyword">true</span>
<span>);&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlHttp.setRequestHeader(<span class="string">&quot;RequestType&quot;</span>
<span>,</span>
<span class="string">&quot;ajax&quot;</span>
<span>);&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlHttp.send(<span class="keyword">null</span>
<span>);&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//alert(queryString);</span>
<span>&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;doRequestUsingPOST()&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;createXMLHttpRequest();&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;url&nbsp;=&nbsp;<span class="string">&quot;GetAndPostExample&quot;</span>
<span>&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;queryString&nbsp;=&nbsp;createQueryString()+&nbsp;<span class="string">&quot;&amp;timeStamp=&quot;</span>
<span>+&nbsp;</span>
<span class="keyword">new</span>
<span>&nbsp;Date().getTime();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlHttp.open(<span class="string">&quot;POST&quot;</span>
<span>,url,</span>
<span class="keyword">true</span>
<span>);&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlHttp.onreadystatechange&nbsp;=&nbsp;handleStateChange;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlHttp.setRequestHeader(<span class="string">&quot;Content-Type&quot;</span>
<span>,</span>
<span class="string">&quot;application/x-www-form-urlencoded;&quot;</span>
<span>);&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//设置报头,说明此请求是ajax请求</span>
<span>&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlHttp.setRequestHeader(<span class="string">&quot;RequestType&quot;</span>
<span>,</span>
<span class="string">&quot;ajax&quot;</span>
<span>);&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlHttp.send(queryString);&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;handleStateChange()&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span>
<span>&nbsp;(xmlHttp.readyState&nbsp;==&nbsp;</span>
<span class="number">4</span>
<span>)&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span>
<span>&nbsp;(xmlHttp.status&nbsp;==&nbsp;</span>
<span class="number">200</span>
<span>)&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parseResults();&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;parseResults()&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;responseDiv&nbsp;=&nbsp;document.getElementById(<span class="string">&quot;serverResponse&quot;</span>
<span>);&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span>
<span>&nbsp;(responseDiv.hasChildNodes())&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;responseDiv.removeChild(responseDiv.childNodes[<span class="number">0</span>
<span>]);&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;responseText&nbsp;=&nbsp;document.createTextNode(xmlHttp.responseText);&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;responseDiv.appendChild(responseText);&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/script&gt;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/head&gt;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;body&gt;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;h1&gt;输入你的姓，名，生日日期&lt;/h1&gt;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;br&gt;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;table&gt;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;tr&gt;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;姓：&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/td&gt;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input&nbsp;type=<span class="string">&quot;text&quot;</span>
<span>&nbsp;name=</span>
<span class="string">&quot;firstName&quot;</span>
<span>&nbsp;id=</span>
<span class="string">&quot;firstName&quot;</span>
<span>&nbsp;value=</span>
<span class="string">&quot;羽飞&quot;</span>
<span>&gt;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/td&gt;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/tr&gt;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;名：&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/td&gt;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input&nbsp;type=<span class="string">&quot;text&quot;</span>
<span>&nbsp;name=</span>
<span class="string">&quot;secondName&quot;</span>
<span>&nbsp;id=</span>
<span class="string">&quot;secondName&quot;</span>
<span>&nbsp;value=</span>
<span class="string">&quot;翼&quot;</span>
<span>&gt;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/td&gt;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;tr&gt;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/tr&gt;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;tr&gt;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;生日：&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/td&gt;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input&nbsp;type=<span class="string">&quot;text&quot;</span>
<span>&nbsp;name=</span>
<span class="string">&quot;birthday&quot;</span>
<span>&nbsp;id=</span>
<span class="string">&quot;birthday&quot;</span>
<span>&nbsp;value=</span>
<span class="string">&quot;五月&quot;</span>
<span>&gt;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/td&gt;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input&nbsp;type=<span class="string">&quot;text&quot;</span>
<span>&nbsp;name=</span>
<span class="string">&quot;show&quot;</span>
<span>&nbsp;id=</span>
<span class="string">&quot;show&quot;</span>
<span>&gt;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/td&gt;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/tr&gt;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/table&gt;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;form&nbsp;action=<span class="string">&quot;#&quot;</span>
<span>&gt;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input&nbsp;type=<span class="string">&quot;button&quot;</span>
<span>&nbsp;value=</span>
<span class="string">&quot;使用GET提交&quot;</span>
<span>&nbsp;onclick=</span>
<span class="string">&quot;doRequestUsingGET();&quot;</span>
<span>&gt;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;br&gt;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input&nbsp;type=<span class="string">&quot;button&quot;</span>
<span>&nbsp;value=</span>
<span class="string">&quot;使用POST提交&quot;</span>
<span>&nbsp;onclick=</span>
<span class="string">&quot;doRequestUsingPOST();&quot;</span>
<span>&gt;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/form&gt;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;br&gt;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;br&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;h2&gt;服务器返回信息：&lt;/h2&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&nbsp;id=<span class="string">&quot;serverResponse&quot;</span>
<span>&gt;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/body&gt;&nbsp;&nbsp;</span>
</li>
<li><span>&lt;/html&gt;&nbsp;&nbsp;</span>
</li>
</ol>
</div>
<pre name="code" class="java">&lt;%@ page language=&quot;java&quot; import=&quot;java.util.Date&quot;  contentType=&quot;text/html; charset=gbk&quot;%&gt;
&lt;html&gt;
	&lt;head&gt;
		&lt;title&gt;发送带参数的信息到服务器，以及get,post的区别&lt;/title&gt;
		&lt;script type=&quot;text/javascript&quot;&gt;
			var xmlHttp;			
			function show()
				{
				document.getElementById(&quot;show&quot;).value=document.getElementById(&quot;firstName&quot;).value;
				}
			function createXMLHttpRequest()
				{
				if (window.ActiveXObject)
					xmlHttp = new ActiveXObject(&quot;Microsoft.XMLHTTP&quot;);
				else if (window.XMLHttpRequest)
					xmlHttp = new XMLhttpRequest();
				}
			
			function createQueryString()
				{
				var firstName = document.getElementById(&quot;firstName&quot;).value;
				var secondName = document.getElementById(&quot;secondName&quot;).value;
				var birthday = document.getElementById(&quot;birthday&quot;).value;
				
				var queryString = &quot;firstName=&quot;+firstName+&quot;&amp;secondName=&quot;+secondName
												+&quot;&amp;birthday=&quot;+birthday;
				return queryString;
				}
			
			function doRequestUsingGET()
				{
				createXMLHttpRequest();
				show();
				var queryString = &quot;GetAndPostExample?&quot;;
				queryString = queryString + createQueryString()
										+ &quot;&amp;timeStamep=&quot; + new Date().getTime();
				xmlHttp.onreadystatechange = handleStateChange;
				xmlHttp.open(&quot;GET&quot;,queryString,true);
                                    xmlHttp.setRequestHeader(&quot;RequestType&quot;,&quot;ajax&quot;);
				xmlHttp.send(null);
				//alert(queryString);
				}
				
			function doRequestUsingPOST()
				{
				createXMLHttpRequest();
				show();		
				var url = &quot;GetAndPostExample&quot;
				var queryString = createQueryString()+ &quot;&amp;timeStamp=&quot;+ new Date().getTime();			
				xmlHttp.open(&quot;POST&quot;,url,true);
				xmlHttp.onreadystatechange = handleStateChange;
				xmlHttp.setRequestHeader(&quot;Content-Type&quot;,&quot;application/x-www-form-urlencoded;&quot;);
                                     //设置报头,说明此请求是ajax请求
                                     xmlHttp.setRequestHeader(&quot;RequestType&quot;,&quot;ajax&quot;);
				xmlHttp.send(queryString);
				}
				
			function handleStateChange()
				{
				if (xmlHttp.readyState == 4)
					{
					if (xmlHttp.status == 200)
						parseResults();
					}
				}
			
			function parseResults()
				{
				var responseDiv = document.getElementById(&quot;serverResponse&quot;);
				if (responseDiv.hasChildNodes())
					{
					responseDiv.removeChild(responseDiv.childNodes[0]);
					}
				var responseText = document.createTextNode(xmlHttp.responseText);
				responseDiv.appendChild(responseText);
				}
			
		&lt;/script&gt;
	&lt;/head&gt;
	&lt;body&gt;
		&lt;h1&gt;输入你的姓，名，生日日期&lt;/h1&gt;
		&lt;br&gt;
		
			&lt;table&gt;
				&lt;tr&gt;
					&lt;td&gt;
						姓：
					&lt;/td&gt;
					&lt;td&gt;
						&lt;input type=&quot;text&quot; name=&quot;firstName&quot; id=&quot;firstName&quot; value=&quot;羽飞&quot;&gt;
					&lt;/td&gt;
				&lt;/tr&gt;
					&lt;td&gt;
						名：
					&lt;/td&gt;
					&lt;td&gt;
						&lt;input type=&quot;text&quot; name=&quot;secondName&quot; id=&quot;secondName&quot; value=&quot;翼&quot;&gt;
					&lt;/td&gt;
				&lt;tr&gt;
				&lt;/tr&gt;
				&lt;tr&gt;
					&lt;td&gt;
						生日：
					&lt;/td&gt;
					&lt;td&gt;
						&lt;input type=&quot;text&quot; name=&quot;birthday&quot; id=&quot;birthday&quot; value=&quot;五月&quot;&gt;
					&lt;/td&gt;
					&lt;td&gt;
						&lt;input type=&quot;text&quot; name=&quot;show&quot; id=&quot;show&quot;&gt;
					&lt;/td&gt;
				&lt;/tr&gt;
			&lt;/table&gt;
		&lt;form action=&quot;#&quot;&gt;
			&lt;input type=&quot;button&quot; value=&quot;使用GET提交&quot; onclick=&quot;doRequestUsingGET();&quot;&gt;
			&lt;br&gt;
			&lt;input type=&quot;button&quot; value=&quot;使用POST提交&quot; onclick=&quot;doRequestUsingPOST();&quot;&gt;
		&lt;/form&gt;
		&lt;br&gt;
		&lt;br&gt;		
		&lt;h2&gt;服务器返回信息：&lt;/h2&gt;		
		&lt;div id=&quot;serverResponse&quot;&gt;
		&lt;/div&gt;
	&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>
<br />
<br />
GetAndPostExample.java</p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a href="http://www.javaeye.com/topic/131962#" title="复制代码" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;"><img src="http://www.javaeye.com/images/icon_copy.gif" alt="复制代码" />
</a>
</div>
</div>
<ol class="dp-j">
<li><span><span class="keyword">package</span>
<span>&nbsp;yufei;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;</span>
</li>
<li><span><span class="keyword">import</span>
<span>&nbsp;java.io.*;&nbsp;&nbsp;</span>
</span>
</li>
<li><span><span class="keyword">import</span>
<span>&nbsp;java.net.*;&nbsp;&nbsp;</span>
</span>
</li>
<li><span><span class="keyword">import</span>
<span>&nbsp;javax.servlet.*;&nbsp;&nbsp;</span>
</span>
</li>
<li><span><span class="keyword">import</span>
<span>&nbsp;javax.servlet.http.*;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;</span>
</li>
<li><span><span class="keyword">public</span>
<span>&nbsp;</span>
<span class="keyword">class</span>
<span>&nbsp;GetAndPostExample&nbsp;</span>
<span class="keyword">extends</span>
<span>&nbsp;HttpServlet&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">protected</span>
<span>&nbsp;</span>
<span class="keyword">void</span>
<span>&nbsp;processRequest(HttpServletRequest&nbsp;request,&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpServletResponse&nbsp;response,&nbsp;String&nbsp;method1)&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">throws</span>
<span>&nbsp;ServletException,IOException&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//设置文本类型(content&nbsp;type)</span>
<span>&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.setContentType(<span class="string">&quot;text/xml&quot;</span>
<span>);&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//设置文本类型的编码格式</span>
<span>&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.setCharacterEncoding(<span class="string">&quot;GBK&quot;</span>
<span>);&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.setHeader(<span class="string">&quot;Cache-Control&quot;</span>
<span>,</span>
<span class="string">&quot;no-cache&quot;</span>
<span>);&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;firstName&nbsp;=<span class="keyword">null</span>
<span>;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;secondName&nbsp;=&nbsp;<span class="keyword">null</span>
<span>;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;birthday&nbsp;=&nbsp;<span class="keyword">null</span>
<span>;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//无论是get还是post,都要使用下面这句</span>
<span>&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;request.setCharacterEncoding(<span class="string">&quot;UTF-8&quot;</span>
<span>);&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span>
<span>&nbsp;(method1.equals(</span>
<span class="string">&quot;GET&quot;</span>
<span>))&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;firstName&nbsp;=&nbsp;<span class="keyword">new</span>
<span>&nbsp;String(request.getParameter(</span>
<span class="string">&quot;firstName&quot;</span>
<span>).getBytes(</span>
<span class="string">&quot;ISO8859-1&quot;</span>
<span>));&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;secondName&nbsp;=&nbsp;<span class="keyword">new</span>
<span>&nbsp;String(request.getParameter(</span>
<span class="string">&quot;secondName&quot;</span>
<span>).getBytes(</span>
<span class="string">&quot;ISO8859-1&quot;</span>
<span>));&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;birthday&nbsp;=&nbsp;<span class="keyword">new</span>
<span>&nbsp;String(request.getParameter(</span>
<span class="string">&quot;birthday&quot;</span>
<span>).getBytes(</span>
<span class="string">&quot;ISO8859-1&quot;</span>
<span>));&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">else</span>
<span>&nbsp;</span>
<span class="keyword">if</span>
<span>&nbsp;(method1.equals(</span>
<span class="string">&quot;POST&quot;</span>
<span>))&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;firstName&nbsp;=&nbsp;request.getParameter(<span class="string">&quot;firstName&quot;</span>
<span>);&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;secondName&nbsp;=&nbsp;request.getParameter(<span class="string">&quot;secondName&quot;</span>
<span>);&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;birthday&nbsp;=&nbsp;request.getParameter(<span class="string">&quot;birthday&quot;</span>
<span>);&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;responseText&nbsp;=&nbsp;<span class="string">&quot;Hello&nbsp;&quot;</span>
<span>&nbsp;+&nbsp;firstName&nbsp;+&nbsp;</span>
<span class="string">&quot;&nbsp;&quot;</span>
<span>&nbsp;+&nbsp;secondName&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;<span class="string">&quot;&nbsp;你的生日是&nbsp;&quot;</span>
<span>&nbsp;+&nbsp;birthday&nbsp;+&nbsp;</span>
<span class="string">&quot;&nbsp;&quot;</span>
<span>&nbsp;+&nbsp;</span>
<span class="string">&quot;(method:&nbsp;&quot;</span>
<span>&nbsp;+&nbsp;method1&nbsp;+&nbsp;</span>
<span class="string">&quot;)&quot;</span>
<span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PrintWriter&nbsp;out&nbsp;=&nbsp;response.getWriter();&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.println(responseText);&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.close();&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">protected</span>
<span>&nbsp;</span>
<span class="keyword">void</span>
<span>&nbsp;doGet(HttpServletRequest&nbsp;request,&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpServletResponse&nbsp;response)&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">throws</span>
<span>&nbsp;ServletException,IOException&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;processRequest(request,response,<span class="string">&quot;GET&quot;</span>
<span>);&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">protected</span>
<span>&nbsp;</span>
<span class="keyword">void</span>
<span>&nbsp;doPost(HttpServletRequest&nbsp;request,&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpServletResponse&nbsp;response)&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">throws</span>
<span>&nbsp;ServletException,IOException&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;processRequest(request,response,<span class="string">&quot;POST&quot;</span>
<span>);&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span>
</li>
</ol>
</div>
<pre name="code" class="java">package yufei;

import java.io.*;
import java.net.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class GetAndPostExample extends HttpServlet
	{
		protected void processRequest(HttpServletRequest request,
				HttpServletResponse response, String method1)
				throws ServletException,IOException
				{
				//设置文本类型(content type)
				response.setContentType(&quot;text/xml&quot;);
                                     //设置文本类型的编码格式
				response.setCharacterEncoding(&quot;GBK&quot;);
				response.setHeader(&quot;Cache-Control&quot;,&quot;no-cache&quot;);
				
				String firstName =null;
				String secondName = null;
				String birthday = null;
                                    //无论是get还是post,都要使用下面这句
                                    request.setCharacterEncoding(&quot;UTF-8&quot;);
				if (method1.equals(&quot;GET&quot;))
				{			     
				 firstName = new String(request.getParameter(&quot;firstName&quot;).getBytes(&quot;ISO8859-1&quot;));
				 secondName = new String(request.getParameter(&quot;secondName&quot;).getBytes(&quot;ISO8859-1&quot;));
				 birthday = new String(request.getParameter(&quot;birthday&quot;).getBytes(&quot;ISO8859-1&quot;));
				}
				else if (method1.equals(&quot;POST&quot;))
				{				 			 firstName = request.getParameter(&quot;firstName&quot;);
				 secondName = request.getParameter(&quot;secondName&quot;);
				 birthday = request.getParameter(&quot;birthday&quot;);
				}	
				String responseText = &quot;Hello &quot; + firstName + &quot; &quot; + secondName
								+ &quot; 你的生日是 &quot; + birthday + &quot; &quot; + &quot;(method: &quot; + method1 + &quot;)&quot;;				
				PrintWriter out = response.getWriter();
				out.println(responseText);
				
				out.close();
				}
		protected void doGet(HttpServletRequest request,
				HttpServletResponse response)
				throws ServletException,IOException
				{
				processRequest(request,response,&quot;GET&quot;);
				}
		protected void doPost(HttpServletRequest request,
				HttpServletResponse response)
				throws ServletException,IOException
				{
				processRequest(request,response,&quot;POST&quot;);
				}
	}
</pre>
<p>
<br />
<br />
-
<br />
-
<br />
<br />
当我们的ajax请求只使用post(tomcat下可以实现get和post同样方案)请求时,我们可以使用过滤器来实现其编码设置,就可以把
servlet中的request.setCharactorEncoding提出来,去掉servlet里的
request.setCharactorEncoding(&quot;encoding name&quot;),加入下面的过滤器
<br />
根据fins大大的指导,将过滤器重写为可以区分普通请求和ajax请求的样式了(ajax请求中设置了header)
<br />
<br />
SetCharacterEncodingFilter.java</p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a href="http://www.javaeye.com/topic/131962#" title="复制代码" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;"><img src="http://www.javaeye.com/images/icon_copy.gif" alt="复制代码" />
</a>
</div>
</div>
<ol class="dp-j">
<li><span><span class="keyword">package</span>
<span>&nbsp;yufei;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;</span>
</li>
<li><span><span class="keyword">import</span>
<span>&nbsp;java.io.IOException;&nbsp;&nbsp;</span>
</span>
</li>
<li><span><span class="keyword">import</span>
<span>&nbsp;javax.servlet.FilterChain;&nbsp;&nbsp;</span>
</span>
</li>
<li><span><span class="keyword">import</span>
<span>&nbsp;javax.servlet.FilterConfig;&nbsp;&nbsp;</span>
</span>
</li>
<li><span><span class="keyword">import</span>
<span>&nbsp;javax.servlet.ServletException;&nbsp;&nbsp;</span>
</span>
</li>
<li><span><span class="keyword">import</span>
<span>&nbsp;javax.servlet.ServletRequest;&nbsp;&nbsp;</span>
</span>
</li>
<li><span><span class="keyword">import</span>
<span>&nbsp;javax.servlet.ServletResponse;&nbsp;&nbsp;</span>
</span>
</li>
<li><span><span class="keyword">import</span>
<span>&nbsp;javax.servlet.Filter;&nbsp;&nbsp;</span>
</span>
</li>
<li><span><span class="keyword">import</span>
<span>&nbsp;javax.servlet.http.HttpServletRequest;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;</span>
</li>
<li><span><span class="keyword">public</span>
<span>&nbsp;</span>
<span class="keyword">class</span>
<span>&nbsp;CharactorEncodingFilter&nbsp;</span>
<span class="keyword">implements</span>
<span>&nbsp;Filter&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span>
<span>&nbsp;CharactorEncodingFilter()&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">super</span>
<span>();&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">private</span>
<span>&nbsp;FilterConfig&nbsp;filterConfig;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">private</span>
<span>&nbsp;String&nbsp;ajaxEncoding&nbsp;=&nbsp;</span>
<span class="string">&quot;UTF-8&quot;</span>
<span>;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">private</span>
<span>&nbsp;String&nbsp;commonEncoding;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">protected</span>
<span>&nbsp;</span>
<span class="keyword">boolean</span>
<span>&nbsp;ignore&nbsp;=&nbsp;</span>
<span class="keyword">true</span>
<span>;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span>
<span>&nbsp;</span>
<span class="keyword">void</span>
<span>&nbsp;init(FilterConfig&nbsp;filterConfig)&nbsp;</span>
<span class="keyword">throws</span>
<span>&nbsp;ServletException&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">this</span>
<span>.filterConfig&nbsp;=&nbsp;filterConfig;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;commonEncoding&nbsp;=&nbsp;filterConfig.getInitParameter(<span class="string">&quot;CommonRequestEncoding&quot;</span>
<span>);&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;value&nbsp;=&nbsp;filterConfig.getInitParameter(<span class="string">&quot;ignore&quot;</span>
<span>);&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span>
<span>&nbsp;(value&nbsp;==&nbsp;</span>
<span class="keyword">null</span>
<span>)&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">this</span>
<span>.ignore&nbsp;=&nbsp;</span>
<span class="keyword">true</span>
<span>;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">else</span>
<span>&nbsp;</span>
<span class="keyword">if</span>
<span>&nbsp;(value.equalsIgnoreCase(</span>
<span class="string">&quot;true&quot;</span>
<span>))&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">this</span>
<span>.ignore&nbsp;=&nbsp;</span>
<span class="keyword">true</span>
<span>;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">else</span>
<span>&nbsp;</span>
<span class="keyword">if</span>
<span>&nbsp;(value.equalsIgnoreCase(</span>
<span class="string">&quot;yes&quot;</span>
<span>))&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">this</span>
<span>.ignore&nbsp;=&nbsp;</span>
<span class="keyword">true</span>
<span>;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">else</span>
<span>&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">this</span>
<span>.ignore&nbsp;=&nbsp;</span>
<span class="keyword">false</span>
<span>;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span>
<span>&nbsp;</span>
<span class="keyword">void</span>
<span>&nbsp;doFilter(ServletRequest&nbsp;req,&nbsp;ServletResponse&nbsp;res,&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FilterChain&nbsp;filterChain)&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">try</span>
<span>&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpServletRequest&nbsp;request&nbsp;=&nbsp;(HttpServletRequest)&nbsp;req;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span>
<span>&nbsp;(ignore&nbsp;||&nbsp;(request.getCharacterEncoding()&nbsp;==&nbsp;</span>
<span class="keyword">null</span>
<span>))&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span>
<span>&nbsp;(request.getHeader(</span>
<span class="string">&quot;RequestType&quot;</span>
<span>)&nbsp;!=&nbsp;</span>
<span class="keyword">null</span>
<span>&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp;&nbsp;request.getHeader(<span class="string">&quot;RequestType&quot;</span>
<span>)&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.equalsIgnoreCase(<span class="string">&quot;ajax&quot;</span>
<span>))&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;request.setCharacterEncoding(ajaxEncoding);&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">else</span>
<span>&nbsp;</span>
<span class="keyword">if</span>
<span>&nbsp;(commonEncoding&nbsp;!=&nbsp;</span>
<span class="keyword">null</span>
<span>)&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;request.setCharacterEncoding(commonEncoding);&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">else</span>
<span>&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;request.setCharacterEncoding(<span class="string">&quot;UTF-8&quot;</span>
<span>);&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;filterChain.doFilter(req,&nbsp;res);&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">catch</span>
<span>&nbsp;(IOException&nbsp;e)&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">catch</span>
<span>&nbsp;(ServletException&nbsp;e)&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span>
<span>&nbsp;</span>
<span class="keyword">void</span>
<span>&nbsp;destroy()&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">this</span>
<span>.commonEncoding&nbsp;=&nbsp;</span>
<span class="keyword">null</span>
<span>;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">this</span>
<span>.filterConfig&nbsp;=&nbsp;</span>
<span class="keyword">null</span>
<span>;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span>
</li>
</ol>
</div>
<pre name="code" class="java">package yufei;

import java.io.IOException;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.Filter;
import javax.servlet.http.HttpServletRequest;

public class CharactorEncodingFilter implements Filter
	{
	public CharactorEncodingFilter()
		{
		super();
		}
	private FilterConfig filterConfig;
	private String ajaxEncoding = &quot;UTF-8&quot;;
	private String commonEncoding;
	protected boolean ignore = true;
	public void init(FilterConfig filterConfig) throws ServletException
		{
		this.filterConfig = filterConfig;
		commonEncoding = filterConfig.getInitParameter(&quot;CommonRequestEncoding&quot;);
		String value = filterConfig.getInitParameter(&quot;ignore&quot;);
		if (value == null)
			this.ignore = true;
		else if (value.equalsIgnoreCase(&quot;true&quot;))
			this.ignore = true;
		else if (value.equalsIgnoreCase(&quot;yes&quot;))
			this.ignore = true;
		else
			this.ignore = false;
		}

	public void doFilter(ServletRequest req, ServletResponse res,
		FilterChain filterChain)

		{
		try
			{
			HttpServletRequest request = (HttpServletRequest) req;
			if (ignore || (request.getCharacterEncoding() == null))
				{
				if (request.getHeader(&quot;RequestType&quot;) != null
					&amp;&amp; request.getHeader(&quot;RequestType&quot;)
						.equalsIgnoreCase(&quot;ajax&quot;))
					{
					request.setCharacterEncoding(ajaxEncoding);
					}
				else if (commonEncoding != null)
					{
					request.setCharacterEncoding(commonEncoding);
					}
				else
					{
					request.setCharacterEncoding(&quot;UTF-8&quot;);
					}
				}
			filterChain.doFilter(req, res);
			}
		catch (IOException e)
			{
			e.printStackTrace();
			}
		catch (ServletException e)
			{
			e.printStackTrace();
			}
		}
	public void destroy()
		{
		this.commonEncoding = null;
		this.filterConfig = null;
		}
	}
</pre>
<p>
<br />
<br />
web.xml加入如下过滤器配置</p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a href="http://www.javaeye.com/topic/131962#" title="复制代码" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;"><img src="http://www.javaeye.com/images/icon_copy.gif" alt="复制代码" />
</a>
</div>
</div>
<ol class="dp-j">
<li><span><span>&lt;filter&gt;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;filter-name&gt;CharactorEncoding&lt;/filter-name&gt;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;filter-<span class="keyword">class</span>
<span>&gt;org.apache.struts2.dispatcher.FilterDispatcher&lt;/filter-</span>
<span class="keyword">class</span>
<span>&gt;&nbsp;&nbsp;</span>
</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;设置编码格式到initparameter里去&nbsp;--&gt;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;init-param&gt;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param-name&gt;CommonRequestEncoding&lt;/param-name&gt;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param-value&gt;GBK&lt;/param-value&gt;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/init-param&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
</li>
<li><span>&lt;/filter&gt;&nbsp;&nbsp;</span>
</li>
<li><span>&lt;filter-mapping&gt;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;filter-name&gt;CharactorEncoding&lt;/filter-name&gt;&nbsp;&nbsp;</span>
</li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;url-pattern&gt;/*&lt;/url-pattern&gt;&nbsp;&nbsp;</span>
</li>
<li><span>&lt;/filter-mapping&gt;&nbsp; <br />
</span>
</li>
</ol>
</div>
          <br/>
          <span style="color:red;">
            <a href="http://qingfengxia.javaeye.com/blog/198447#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 29 May 2008 21:41:44 +0800</pubDate>
        <link>http://qingfengxia.javaeye.com/blog/198447</link>
        <guid>http://qingfengxia.javaeye.com/blog/198447</guid>
      </item>
      <item>
        <title>Tomcat 5/6 GBK 编码下完美解决中文表单问题的过滤器 </title>
        <author>qingfengxia</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://qingfengxia.javaeye.com">qingfengxia</a>&nbsp;
          链接：<a href="http://qingfengxia.javaeye.com/blog/198446" style="color:red;">http://qingfengxia.javaeye.com/blog/198446</a>&nbsp;
          发表时间: 2008年05月29日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div class="posttitle" style="text-align: center;">
		<a href="http://www.blogjava.net/beansoft/archive/2007/10/09/151368.html" class="singleposttitle" id="viewpost1_TitleUrl"><br />
</a>
	</div>
<p>常
见的 Tomcat 5 表单编码提交后乱码的解决方案有很多, 有改 Tomcat Connector 属性的, 有加过滤器的. 但是
Tomcat 自带的那个过滤器只解决了 POST 方式的乱码却不能处理 GET 方式的乱码.&nbsp; 在这里那我就给出一个不需要修改任何
Tomcat 配置文件的完美解决中文问题的过滤器的代码:</p>
<p>&nbsp;</p>
<p>index.jsp</p>
<div>
<pre>&lt;%@ page language=<span style="color: #006080;">&quot;java&quot;</span>
 import=<span style="color: #006080;">&quot;java.util.*&quot;</span>
 pageEncoding=<span style="color: #006080;">&quot;GBK&quot;</span>
%&gt;


&lt;!DOCTYPE HTML PUBLIC <span style="color: #006080;">&quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot;</span>
&gt;
&lt;html&gt;
  &lt;head&gt;
   
    &lt;title&gt;表单测试页面&lt;/title&gt;

  &lt;/head&gt;
  
  &lt;body&gt;
   &lt;form action=<span style="color: #006080;">&quot;action.jsp&quot;</span>
&gt;
   GET 方式: &lt;input type=text name=<span style="color: #006080;">&quot;name&quot;</span>
 <span style="color: #0000ff;">value</span>
=<span style="color: #006080;">&quot;GET 中文&quot;</span>
&gt;
   &lt;input type=submit&gt;
   &lt;/form&gt;
   
      &lt;form action=<span style="color: #006080;">&quot;action.jsp&quot;</span>
 method=<span style="color: #006080;">&quot;POST&quot;</span>
&gt;
   POST 方式: &lt;input type=text name=<span style="color: #006080;">&quot;name&quot;</span>
 <span style="color: #0000ff;">value</span>
=<span style="color: #006080;">&quot;POST 中文&quot;</span>
&gt;
   &lt;input type=submit&gt;
   &lt;/form&gt;
  &lt;/body&gt;
&lt;/html&gt;
</pre>
</div>
<p>和普通的表单没有任何区别.</p>
<p>然后就是表单提交页面 action.jsp:</p>
<div>
<pre>&lt;%@ page language=<span style="color: #006080;">&quot;java&quot;</span>
 pageEncoding=<span style="color: #006080;">&quot;GBK&quot;</span>
%&gt;
&lt;html&gt;
  &lt;body&gt;
   参数: &lt;%=request.getParameter(<span style="color: #006080;">&quot;name&quot;</span>
) %&gt; &lt;br&gt;
  &lt;/body&gt;
&lt;/html&gt;</pre>
</div>
<p>接着是过滤器的配置文件 web.xml (用 2.5 版本也可以):</p>
<div>
<pre><span style="color: #0000ff;">&lt;?</span>
<span style="color: #800000;">xml</span>
 <span style="color: #ff0000;">version</span>
<span style="color: #0000ff;">=&quot;1.0&quot;</span>
 <span style="color: #ff0000;">encoding</span>
<span style="color: #0000ff;">=&quot;UTF-8&quot;</span>
?<span style="color: #0000ff;">&gt;</span>

<span style="color: #0000ff;">&lt;</span>
<span style="color: #800000;">web-app</span>
 <span style="color: #ff0000;">version</span>
<span style="color: #0000ff;">=&quot;2.4&quot;</span>
 
    <span style="color: #ff0000;">xmlns</span>
<span style="color: #0000ff;">=&quot;http://java.sun.com/xml/ns/j2ee&quot;</span>
 
    <span style="color: #ff0000;">xmlns:xsi</span>
<span style="color: #0000ff;">=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span>
 
    <span style="color: #ff0000;">xsi:schemaLocation</span>
<span style="color: #0000ff;">=&quot;http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd&quot;</span>
<span style="color: #0000ff;">&gt;</span>

    <span style="color: #0000ff;">&lt;</span>
<span style="color: #800000;">filter</span>
<span style="color: #0000ff;">&gt;</span>

    <span style="color: #0000ff;">&lt;</span>
<span style="color: #800000;">filter-name</span>
<span style="color: #0000ff;">&gt;</span>
TomcatFormFilter<span style="color: #0000ff;">&lt;/</span>
<span style="color: #800000;">filter-name</span>
<span style="color: #0000ff;">&gt;</span>

    <span style="color: #0000ff;">&lt;</span>
<span style="color: #800000;">filter-class</span>
<span style="color: #0000ff;">&gt;</span>
filters.TomcatFormFilter<span style="color: #0000ff;">&lt;/</span>
<span style="color: #800000;">filter-class</span>
<span style="color: #0000ff;">&gt;</span>

    <span style="color: #0000ff;">&lt;/</span>
<span style="color: #800000;">filter</span>
<span style="color: #0000ff;">&gt;</span>

    
    <span style="color: #0000ff;">&lt;</span>
<span style="color: #800000;">filter-mapping</span>
<span style="color: #0000ff;">&gt;</span>

    <span style="color: #0000ff;">&lt;</span>
<span style="color: #800000;">filter-name</span>
<span style="color: #0000ff;">&gt;</span>
TomcatFormFilter<span style="color: #0000ff;">&lt;/</span>
<span style="color: #800000;">filter-name</span>
<span style="color: #0000ff;">&gt;</span>

    <span style="color: #0000ff;">&lt;</span>
<span style="color: #800000;">url-pattern</span>
<span style="color: #0000ff;">&gt;</span>
*.jsp<span style="color: #0000ff;">&lt;/</span>
<span style="color: #800000;">url-pattern</span>
<span style="color: #0000ff;">&gt;</span>

    <span style="color: #0000ff;">&lt;/</span>
<span style="color: #800000;">filter-mapping</span>
<span style="color: #0000ff;">&gt;</span>

    
  <span style="color: #0000ff;">&lt;</span>
<span style="color: #800000;">welcome-file-list</span>
<span style="color: #0000ff;">&gt;</span>

    <span style="color: #0000ff;">&lt;</span>
<span style="color: #800000;">welcome-file</span>
<span style="color: #0000ff;">&gt;</span>
index.jsp<span style="color: #0000ff;">&lt;/</span>
<span style="color: #800000;">welcome-file</span>
<span style="color: #0000ff;">&gt;</span>

  <span style="color: #0000ff;">&lt;/</span>
<span style="color: #800000;">welcome-file-list</span>
<span style="color: #0000ff;">&gt;</span>

<span style="color: #0000ff;">&lt;/</span>
<span style="color: #800000;">web-app</span>
<span style="color: #0000ff;">&gt;</span>
</pre>
</div>
<p>最后最关键的就是我们的过滤器代码了, 对 GET 方式使用请求包装器, 而 POST 方式则用 setCharacterEncoding():</p>
<div>
<pre>package filters;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.ServletException;
import  javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import javax.servlet.http.HttpServletResponse;

<span style="color: #0000ff;">public</span>
 <span style="color: #0000ff;">class</span>
 TomcatFormFilter implements Filter {
    <span style="color: #008000;">/**</span>

<span style="color: #008000;">      * Request.java</span>

<span style="color: #008000;">      * 对 HttpServletRequestWrapper 进行扩充, 不影响原来的功能并能提供所有的 HttpServletRequest</span>

<span style="color: #008000;">      * 接口中的功能. 它可以统一的对 Tomcat 默认设置下的中文问题进行解决而只需要用新的 Request 对象替换页面中的</span>

<span style="color: #008000;">      * request 对象即可.</span>

<span style="color: #008000;">      */</span>


    <span style="color: #0000ff;">class</span>
 Request extends HttpServletRequestWrapper
    {

        <span style="color: #0000ff;">public</span>
 Request(HttpServletRequest request) {
            super(request);
        }

        <span style="color: #008000;">/**</span>

<span style="color: #008000;">         * 转换由表单读取的数据的内码.</span>

<span style="color: #008000;">         * 从 ISO 字符转到 GBK.</span>

<span style="color: #008000;">         */</span>

        <span style="color: #0000ff;">public</span>
 String toChi(String input) {
            <span style="color: #0000ff;">try</span>
 {
              <span style="color: #0000ff;">byte</span>
[] bytes = input.getBytes(<span style="color: #006080;">&quot;ISO8859-1&quot;</span>
);
              <span style="color: #0000ff;">return</span>
 <span style="color: #0000ff;">new</span>
 String(bytes, <span style="color: #006080;">&quot;GBK&quot;</span>
);
            }
            <span style="color: #0000ff;">catch</span>
 (Exception ex) {
            }
            <span style="color: #0000ff;">return</span>
 <span style="color: #0000ff;">null</span>
;
        }

        <span style="color: #008000;">/**</span>

<span style="color: #008000;">         * Return the HttpServletRequest holded by this object.</span>

<span style="color: #008000;">         */</span>

        <span style="color: #0000ff;">private</span>
 HttpServletRequest getHttpServletRequest()
        {
            <span style="color: #0000ff;">return</span>
 (HttpServletRequest)super.getRequest();
        }

        <span style="color: #008000;">/**</span>

<span style="color: #008000;">         * 读取参数 -- 修正了中文问题.</span>

<span style="color: #008000;">         */</span>

        <span style="color: #0000ff;">public</span>
 String getParameter(String name)
        {
            <span style="color: #0000ff;">return</span>
 toChi(getHttpServletRequest().getParameter(name));
        }

        <span style="color: #008000;">/**</span>

<span style="color: #008000;">         * 读取参数列表 - 修正了中文问题.</span>

<span style="color: #008000;">         */</span>

        <span style="color: #0000ff;">public</span>
 String[] getParameterValues(String name)
        {
              String values[] = getHttpServletRequest().getParameterValues(name);
              <span style="color: #0000ff;">if</span>
 (values != <span style="color: #0000ff;">null</span>
) {
                <span style="color: #0000ff;">for</span>
 (<span style="color: #0000ff;">int</span>
 i = 0; i &lt; values.length; i++) {
                  values[i] = toChi(values[i]);
                }
              }
              <span style="color: #0000ff;">return</span>
 values;
        }
    }
    <span style="color: #0000ff;">public</span>
 <span style="color: #0000ff;">void</span>
 destroy() {
        
    }

    <span style="color: #0000ff;">public</span>
 <span style="color: #0000ff;">void</span>
 doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        HttpServletRequest httpreq = (HttpServletRequest)request;
        <span style="color: #0000ff;">if</span>
(httpreq.getMethod().equals(<span style="color: #006080;">&quot;POST&quot;</span>
)) {
            request.setCharacterEncoding(<span style="color: #006080;">&quot;GBK&quot;</span>
);
        } <span style="color: #0000ff;">else</span>
 {
            request = <span style="color: #0000ff;">new</span>
 Request(httpreq);
        }

        chain.doFilter(request, response);
    }

    <span style="color: #0000ff;">public</span>
 <span style="color: #0000ff;">void</span>
 init(FilterConfig filterConfig) throws ServletException {
    }

}
</pre>
</div>
<p>怎么样, 是不是很简单也很方便呢?</p>
          <br/>
          <span style="color:red;">
            <a href="http://qingfengxia.javaeye.com/blog/198446#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 29 May 2008 21:40:30 +0800</pubDate>
        <link>http://qingfengxia.javaeye.com/blog/198446</link>
        <guid>http://qingfengxia.javaeye.com/blog/198446</guid>
      </item>
      <item>
        <title>XML生成树型菜单</title>
        <author>qingfengxia</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://qingfengxia.javaeye.com">qingfengxia</a>&nbsp;
          链接：<a href="http://qingfengxia.javaeye.com/blog/197371" style="color:red;">http://qingfengxia.javaeye.com/blog/197371</a>&nbsp;
          发表时间: 2008年05月27日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="xml">&lt;!-- 

= * = = * = = * = = * = = * = = * = = * = = * = = * = = * = = * = = *    
*    作 者：  我本有心   
=    QQ:     381584252   
*     E-Mail: hztgcl1986@163.com  
=     转载请注明出处及作者！   
*     版权所有,侵权必究！！！   
=   
*    http://www.8848so.com，人物搜索，8848So       
= * = = * = = * = = * = = * = = * = = * = = * = = * = = * = = * = = *    
--&gt;  
&lt;?xml version='1.0' encoding='utf-8'?&gt;  
&lt;menu&gt;  
&lt;rootLevel id='2'&gt;  
&lt;selfName&gt;美国&lt;/selfName&gt;  
&lt;/rootLevel&gt;  
&lt;rootLevel id='1'&gt;  
&lt;selfName&gt;中国&lt;/selfName&gt;  
&lt;level id='4'&gt;  
&lt;selfName&gt;河南&lt;/selfName&gt;  
&lt;parentID&gt;1&lt;/parentID&gt;  
&lt;/level&gt;  
&lt;level id='3'&gt;  
&lt;selfName&gt;山东&lt;/selfName&gt;  
&lt;parentID&gt;1&lt;/parentID&gt;  
&lt;level id='6'&gt;  
&lt;selfName&gt;菏泽&lt;/selfName&gt;  
&lt;parentID&gt;3&lt;/parentID&gt;  
&lt;level id='8'&gt;  
&lt;selfName&gt;曹县&lt;/selfName&gt;  
&lt;parentID&gt;6&lt;/parentID&gt;  
&lt;/level&gt;  
&lt;level id='7'&gt;  
&lt;selfName&gt;东明&lt;/selfName&gt;  
&lt;parentID&gt;6&lt;/parentID&gt;  
&lt;/level&gt;  
&lt;/level&gt;  
&lt;level id='5'&gt;  
&lt;selfName&gt;济南&lt;/selfName&gt;  
&lt;parentID&gt;3&lt;/parentID&gt;  
&lt;/level&gt;  
&lt;/level&gt;  
&lt;/rootLevel&gt;  
&lt;/menu&gt;  </pre>
&nbsp;
<p><span></span>
</p>
<div class="code_title">javascript 树型菜单</div>
<div class="dp-highlighter">
<pre name="code" class="html">&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;  
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;  
&lt;head&gt;  
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=gb2312&quot; /&gt;  
&lt;title&gt;JavaScript + XML树型菜单&lt;/title&gt;  
&lt;style type=&quot;text/css&quot;&gt;  
li.plus   
{   
    list-style-type:none;   
    list-style-image:url(Images/Plus.png); /*展开时图片,如&quot;+&quot;*/   
    cursor:hand;   
}   
  
li.minus   
{   
    list-style-type:none;   
    list-style-image:url(Images/Minus.png); /*折叠时图片,如&quot;-&quot;*/   
    cursor:hand;   
}   
  
li.item   
{   
    list-style-type:none;   
    list-style-image:url(Images/Item.png); /*无子项目时图片*/   
    cursor:hand;   
}   
&lt;/style&gt;  
&lt;/head&gt;  
  
&lt;body&gt;  
&lt;ul id=&quot;tree&quot;&gt;  
    &lt;li&gt;树&lt;/li&gt;  
&lt;/ul&gt;  
&lt;!--  
= * = = * = = * = = * = = * = = * = = * = = * = = * = = * = = * = = *    
*    作 者：  我本有心   
=    QQ:     381584252   
*     E-Mail: hztgcl1986@163.com  
=     转载请注明出处及作者！   
*     版权所有,侵权必究！！！   
=   
*    http://www.8848so.com，人物搜索，8848So       
= * = = * = = * = = * = = * = = * = = * = = * = = * = = * = = * = = *    
--&gt;  
&lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot;&gt;  
treeMenu(&quot;tree&quot;); //树   
  
function createXMLDom() //创建XMLDOM对象函数，跨浏览器解决方案   
{   
    var xmlDom;   
       
    if (window.ActiveXObject) //IE   
    {   
        xmlDom = new ActiveXObject(&quot;Microsoft.XMLDOM&quot;);   
        xmlDom.async = false;   
        xmlDom.load(&quot;/XML/InfoClass.xml&quot;);   
        if (xmlDom.parseError.errorCode != 0)   
        {   
            window.alert(&quot;XML文件加载错误. errorCode：&quot; + xmlDom.parseError.errorCode + &quot; reason：&quot; + xmlDom.parseError.reason);   
            return false;   
        }   
        else   
        {return xmlDom;}   
    }   
    else if (document.implementation &amp;&amp; document.implementation.createDocument) //FireFox   
    {   
        xmlDom = document.implementation.createDocument(&quot;&quot;,&quot;&quot;,null);   
        xmlDom.async = false;   
        xmlDom.load(&quot;/XML/InfoClass.xml&quot;);   
        return xmlDom;   
    }   
    else   
    {   
        window.alert(&quot;不支持XMLDOM对象&quot;);   
        return false;   
    }   
}   
  
function treeMenu(ulID)   
{   
    var xmlDom = createXMLDom(); //创建XMLDOM对象   
    var menu = xmlDom.documentElement; //xml文档根节点   
    var rootLevels = menu.getElementsByTagName(&quot;rootLevel&quot;); //一级分类集合   
           
    var ul = document.getElementById(ulID);   
    for (var i=0;i&lt;rootLevels.length;i++) //循环显示一级分类   
    {   
        var selfID = rootLevels[i].getAttribute(&quot;id&quot;);   
        var selfName = rootLevels[i].getElementsByTagName(&quot;selfName&quot;)[0].firstChild.nodeValue;   
        var li = document.createElement(&quot;li&quot;);   
        li.innerHTML = selfName;   
        li.id = selfID;   
               
        var levels = rootLevels[i].getElementsByTagName(&quot;level&quot;); //集合   
        if (levels.length &gt; 0) //有子类   
        {   
            li.className = &quot;plus&quot;;   
            li.onclick = function () {liClick(this,this.id,xmlDom);} //单击事件   
        }   
        else //无子类   
        {   
            li.className = &quot;item&quot;;   
        }   
        ul.appendChild(li);   
    }   
}   
  
function liClick(li,id,xmlDom,event)   
{   
    var childUL = li.getElementsByTagName(&quot;ul&quot;); //ul集合   
       
    if (childUL.length &gt; 0)//折叠   
    {closeChild(li,childUL);}   
    else //展开   
    {openChild(li,id,xmlDom);}   
       
    cancelBuble(event); //plus停止事件冒泡   
}   
  
function openChild(li,id,xmlDom) //展开函数   
{   
    li.className = &quot;minus&quot;; //折叠图标   
       
    var levels = xmlDom.documentElement.getElementsByTagName(&quot;level&quot;); //level集合   
    var ul = document.createElement(&quot;ul&quot;);   
    for (var m=0;m&lt;levels.length;m++)   
    {   
        var selfID = levels[m].getAttribute(&quot;id&quot;);   
        var selfName = levels[m].getElementsByTagName(&quot;selfName&quot;)[0].firstChild.nodeValue;   
        var parentID = levels[m].getElementsByTagName(&quot;parentID&quot;)[0].firstChild.nodeValue;   
           
        if (id == parentID) //属于id子类   
        {   
            var ulli = document.createElement(&quot;li&quot;);   
            ulli.innerHTML = selfName;   
            ulli.id = selfID;   
               
            var childLevels = levels[m].getElementsByTagName(&quot;level&quot;); //集合   
            if (childLevels.length &gt; 0) //有子类   
            {   
                ulli.className = &quot;plus&quot;;   
                   
                /*停止事件冒泡，跨浏览器解决方案 Start*/   
                if (window.ActiveXObject) //IE   
                {ulli.onclick = function () {liClick(this,this.id,xmlDom,event);}} //单击事件   
                else //FireFox   
                {ulli.onclick = function (event) {liClick(this,this.id,xmlDom,event);}} //单击   
                /*停止事件冒泡，跨浏览器解决方案 End*/   
            }   
            else //无子类   
            {   
                ulli.className = &quot;item&quot;;   
                   
                /*停止事件冒泡，跨浏览器解决方案 Start*/   
                if (window.ActiveXObject) //IE   
                {ulli.onclick = function () {cancelBuble(event);}} //item停止事件冒泡   
                else //FireFox   
                {ulli.onclick = function (event) {cancelBuble(event);}} //item停止事件冒泡   
                /*停止事件冒泡，跨浏览器解决方案 End*/   
            }   
               
            ul.appendChild(ulli);   
        }   
           
    }   
       
    li.appendChild(ul);   
}   
  
function closeChild(li,childUL) //折叠函数   
{   
    li.className = &quot;plus&quot;; //展开图标   
       
    for (var j=0;j&lt;childUL.length;j++) //循环删除ul,ul可能有子ul、li孙ul、li   
    {childUL[j].parentNode.removeChild(childUL[j]);}   
}   
  
function cancelBuble(domEvent) //停止事件冒泡函数,跨浏览器解决方案   
{   
    if (window.ActiveXObject) //IE   
    {domEvent.cancelBubble = true;}   
    else //FireFox   
    {domEvent.stopPropagation();}   
}   
&lt;/script&gt;  
&lt;/body&gt;  
&lt;/html&gt; 
</pre>
&nbsp;<span></span>
</div>
          <br/>
          <span style="color:red;">
            <a href="http://qingfengxia.javaeye.com/blog/197371#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 27 May 2008 11:44:06 +0800</pubDate>
        <link>http://qingfengxia.javaeye.com/blog/197371</link>
        <guid>http://qingfengxia.javaeye.com/blog/197371</guid>
      </item>
      <item>
        <title>对象的初始化</title>
        <author>qingfengxia</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://qingfengxia.javaeye.com">qingfengxia</a>&nbsp;
          链接：<a href="http://qingfengxia.javaeye.com/blog/197307" style="color:red;">http://qingfengxia.javaeye.com/blog/197307</a>&nbsp;
          发表时间: 2008年05月27日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>调用构造器的具体处理步骤:<br />
1.所有数据域被初始化为默认值(0,false或null).<br />
2.按照在类声明的次序依次执行所有域初始化语句(private int a=1;)和初始化块(static{......}).<br />
3.如果构造器第一行调用了第二个构造器,则执行第二个构造器主体.<br />
4.执行这个构造器的主体.<br />
<br />
<br />
注意点:&nbsp;&nbsp; 1.&nbsp; 将初始化块放置在域定义之后.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; 2.&nbsp; 首先运行初始化块,然后才运行构造器的主体部分.
		</p>
          <br/>
          <span style="color:red;">
            <a href="http://qingfengxia.javaeye.com/blog/197307#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 27 May 2008 09:39:56 +0800</pubDate>
        <link>http://qingfengxia.javaeye.com/blog/197307</link>
        <guid>http://qingfengxia.javaeye.com/blog/197307</guid>
      </item>
      <item>
        <title>&lt;![CDATA[javascript</title>
        <author>qingfengxia</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://qingfengxia.javaeye.com">qingfengxia</a>&nbsp;
          链接：<a href="http://qingfengxia.javaeye.com/blog/197319" style="color:red;">http://qingfengxia.javaeye.com/blog/197319</a>&nbsp;
          发表时间: 2008年05月23日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div><a href="http://blog.iyi.cn/tech/javascript/contents.htm" target="_blank">http://blog.iyi.cn/tech/javascript/contents.htm</a></div>
          <br/>
          <span style="color:red;">
            <a href="http://qingfengxia.javaeye.com/blog/197319#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 23 May 2008 00:04:25 +0800</pubDate>
        <link>http://qingfengxia.javaeye.com/blog/197319</link>
        <guid>http://qingfengxia.javaeye.com/blog/197319</guid>
      </item>
      <item>
        <title>&lt;![CDATA[ORA-01722 invalid number]]&gt;</title>
        <author>qingfengxia</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://qingfengxia.javaeye.com">qingfengxia</a>&nbsp;
          链接：<a href="http://qingfengxia.javaeye.com/blog/197256" style="color:red;">http://qingfengxia.javaeye.com/blog/197256</a>&nbsp;
          发表时间: 2008年05月22日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div><h1>ORA-01722</h1>

  
   <h3>From Oracle FAQ</h3>
   
         <div>Jump to: <a href="http://www.orafaq.com/wiki/ORA-01722#column-one">navigation</a>, <a href="http://www.orafaq.com/wiki/ORA-01722#searchInput">search</a></div>   <!-- start content -->
   <p><b>ORA-01722: invalid number</b>
</p>
<table summary="Contents"><tbody><tr><td><div><h2>Contents</h2> <span>[<a href="">hide</a>]</span></div>
<ul><li><a href="http://www.orafaq.com/wiki/ORA-01722#What_causes_this_error.3F"><span>1</span> <span>What causes this error?</span></a></li><li><a href="http://www.orafaq.com/wiki/ORA-01722#Examples"><span>2</span> <span>Examples</span></a></li><li><a href="http://www.orafaq.com/wiki/ORA-01722#How_to_fix_it"><span>3</span> <span>How to fix it</span></a>
<ul><li><a href="http://www.orafaq.com/wiki/ORA-01722#When_doing_an_INSERT_INTO_..._VALUES_.28....29"><span>3.1</span> <span>When doing an INSERT INTO ... VALUES (...)</span></a></li><li><a href="http://www.orafaq.com/wiki/ORA-01722#When_doing_a_SELECT.2C_rather_than_an_INSERT_or_UPDATE"><span>3.2</span> <span>When doing a SELECT, rather than an INSERT or UPDATE</span></a></li><li><a href="http://www.orafaq.com/wiki/ORA-01722#Other_Rare_Situations"><span>3.3</span> <span>Other Rare Situations</span></a></li></ul>
</li></ul>
</td></tr></tbody></table>
<div style="float: right; margin-left: 5px;">[<a href="http://www.orafaq.com/wiki/index.php?title=ORA-01722&amp;action=edit&amp;section=1" title="Edit section: What causes this error?">edit</a>]</div><a></a><h2>What causes this error?</h2>
<p>An <b>ORA-01722</b> error occurs when an attempt is made to convert a character string into a <a href="http://www.orafaq.com/wiki/Number" title="Number">number</a>,
and the string cannot be converted into a valid number. Valid numbers
contain the digits '0' thru '9', with possibly one decimal point, a
sign (+ or -) at the beginning or end of the string, or an 'E' or 'e'
(if it is a floating point number in scientific notation). All other
characters are forbidden.
</p><p>There are numerous situations where this conversion may occur.
A numeric column may be the object of an INSERT or an UPDATE statement.
Or, a numeric column may appear as part of a WHERE clause. It is even
possible for this error to appear when there are no numeric columns
appearing explicitly in the statement! </p>
<div style="float: right; margin-left: 5px;">[<a href="http://www.orafaq.com/wiki/index.php?title=ORA-01722&amp;action=edit&amp;section=2" title="Edit section: Examples">edit</a>]</div><a></a><h2>Examples</h2>
<p>Here are some examples:
</p>
<pre>SQL&gt; select to_number('3434,3333.000') from dual;<br />ERROR:<br />ORA-01722: invalid number<br />no rows selected<br /></pre>
<p>The above statement throws the error message, because it has found a
character, in this case, a comma and the default format for TO_NUMBER
does not contain a comma.
</p><p>The same error can occur when you use arithmetic functions on strings:
</p>
<pre>SQL&gt; select 'abc' - 124 from dual;<br />ERROR:<br />ORA-01722: invalid number<br />no rows selected<br /></pre>
<p>The error can occur when you add dates with string values:
</p>
<pre>SQL&gt; select '01-JUN-01' - 'abc' from dual;<br />ERROR:<br />ORA-01722: invalid number<br />no rows selected<br /></pre>
<div style="float: right; margin-left: 5px;">[<a href="http://www.orafaq.com/wiki/index.php?title=ORA-01722&amp;action=edit&amp;section=3" title="Edit section: How to fix it">edit</a>]</div><a></a><h2>How to fix it</h2>
<p>The fix depends upon the exact expression which caused the problem.
The following guide lists the possible SQL expressions which can give
this error, with their most likely cause. When addressing this error,
keep in mind that it can indicate a simple keystroke problem with the
query, or a deeper problem with the query logic, or even the presence
of bad data in the database itself.
</p>
<div style="float: right; margin-left: 5px;">[<a href="http://www.orafaq.com/wiki/index.php?title=ORA-01722&amp;action=edit&amp;section=4" title="Edit section: When doing an INSERT INTO ... VALUES (...)">edit</a>]</div><a></a><h3>When doing an INSERT INTO ... VALUES (...)</h3>
<p>One of the data items you are trying to insert is an invalid number. Locate and correct it.
</p><p>If all of the numbers appear to be valid, then you probably have
your columns out of order, and an item in the VALUES clause is being
inserted into a NUMBER column instead of the expected VARCHAR2 column.
This can happen when a table has columns added or removed.
</p><p>You are doing an INSERT or UPDATE, with a sub query supplying
the values.
Obviously, the preceding considerations apply here as well. What makes
this more complicated is that the offending character string is hidden
as a row in a table. The fix is to identify the row (or rows) which has
the non-numeric string, and either change the data (if it is in error)
or add something to the sub query to avoid selecting it. The problem is
in identifying the exact row.
</p><p>Assuming that the errant datum is an alphabetic character, one can use the following query:
</p>
<pre>        SELECT ...  WHERE UPPER(col)&nbsp;!= LOWER(col)<br /></pre>
<p>where col is the column with the bad data.
</p>
<div style="float: right; margin-left: 5px;">[<a href="http://www.orafaq.com/wiki/index.php?title=ORA-01722&amp;action=edit&amp;section=5" title="Edit section: When doing a SELECT, rather than an INSERT or UPDATE">edit</a>]</div><a></a><h3>When doing a SELECT, rather than an INSERT or UPDATE</h3>
<p>In this case, there is probably an implicit conversion happening
between some predicate in the WHERE clause. Check for a numeric column
being compared to a character column.
</p><p>If you are using the to_number function, make sure the format mask fits all possible character strings in the table.
</p><p>If you know that a column contains both valid numbers and
character strings, make sure that all rows which do not contain valid
numbers are being excluded in the WHERE clause.
</p>
<div style="float: right; margin-left: 5px;">[<a href="http://www.orafaq.com/wiki/index.php?title=ORA-01722&amp;action=edit&amp;section=6" title="Edit section: Other Rare Situations">edit</a>]</div><a></a><h3>Other Rare Situations</h3>
<p>To expand on the previous comment, if you have a column in a table
which contains both valid numbers and character strings, it is just
barely possible to get an ORA-01722 even if no character strings are
being returned by your query. Example: two tables must be joined. In
table A, the column is VARCHAR2, and in table B it is NUMBER. Table A
also has non-numeric data in that column in some rows, and has a type
column to make it obvious which rows are which. It is possible for the
optimizer to choose an access plan in which the join is attempted
before the filtering, which will cause the ORA-01772. The fix is to add
a hint which changes the plan enough to bypass the rows causing the
error.
</p><p>Doing an explicit conversion can sometimes make things worse.
For example, '+17', '-17', &amp; ' 17' all convert successfully
implicitly. The last one will raise the error if the 'S99' mask is used
in the to_number function.
</p><p>A field containing only spaces will raise this error. One fix is to replace the spaces with nulls or zeroes.
</p><p>If you are querying a view rather than a table, any of the above
could apply, and be hidden from sight. The fix is to add a predicate to
the WHERE clause which excludes the troublesome rows.
</p></div>
          <br/>
          <span style="color:red;">
            <a href="http://qingfengxia.javaeye.com/blog/197256#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 22 May 2008 16:19:01 +0800</pubDate>
        <link>http://qingfengxia.javaeye.com/blog/197256</link>
        <guid>http://qingfengxia.javaeye.com/blog/197256</guid>
      </item>
      <item>
        <title>&lt;![CDATA[oracle</title>
        <author>qingfengxia</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://qingfengxia.javaeye.com">qingfengxia</a>&nbsp;
          链接：<a href="http://qingfengxia.javaeye.com/blog/197251" style="color:red;">http://qingfengxia.javaeye.com/blog/197251</a>&nbsp;
          发表时间: 2008年05月22日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div>http://www.orafaq.com/wiki/</div>
          <br/>
          <span style="color:red;">
            <a href="http://qingfengxia.javaeye.com/blog/197251#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 22 May 2008 16:18:42 +0800</pubDate>
        <link>http://qingfengxia.javaeye.com/blog/197251</link>
        <guid>http://qingfengxia.javaeye.com/blog/197251</guid>
      </item>
      <item>
        <title>&lt;![CDATA[oracle</title>
        <author>qingfengxia</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://qingfengxia.javaeye.com">qingfengxia</a>&nbsp;
          链接：<a href="http://qingfengxia.javaeye.com/blog/197314" style="color:red;">http://qingfengxia.javaeye.com/blog/197314</a>&nbsp;
          发表时间: 2008年05月22日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div>http://www.orafaq.com/wiki/</div>
          <br/>
          <span style="color:red;">
            <a href="http://qingfengxia.javaeye.com/blog/197314#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 22 May 2008 16:18:42 +0800</pubDate>
        <link>http://qingfengxia.javaeye.com/blog/197314</link>
        <guid>http://qingfengxia.javaeye.com/blog/197314</guid>
      </item>
      <item>
        <title>&lt;![CDATA[设置Eclipse3.2中,相同内容的背景色]]&gt;</title>
        <author>qingfengxia</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://qingfengxia.javaeye.com">qingfengxia</a>&nbsp;
          链接：<a href="http://qingfengxia.javaeye.com/blog/193856" style="color:red;">http://qingfengxia.javaeye.com/blog/193856</a>&nbsp;
          发表时间: 2008年05月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          
  <h1 style="">
   <b><br />  </b>
  </h1>
  <hr size="1" align="center" style="border: 1px solid rgb(238, 238, 238);" width="94%" />
  <div>
  <div><small>2007-05-31 17:31:55</small></div>
  <div style="width: 94%; padding-left: 20px;">　标签：<span style="color: rgb(170, 170, 170);"><a href="http://blog.51cto.com/tagindex.php?keyword=Eclipse%2C%B1%B3%BE%B0%C9%AB" target="_blank">Eclipse,背景色</a></span>　　　[<a href="http://guojie.blog.51cto.com/#" false;" >推送到博客圈]

<br /><br /></div>
  </div>
  
  
  <table cellspacing="10" border="0" width="650" cellpadding="0" style="width: 650px; table-layout: fixed;"><tbody><tr><td><div><strong>版权声明：</strong>原创作品，允许转载，转载时请务必以超链接形式标明文章 <a href="http://guojie.blog.51cto.com/59049/28702" target="_blank" style="text-decoration: underline;">原始出处</a> 、作者信息和本声明。否则将追究法律责任。<a href="http://guojie.blog.51cto.com/59049/28702">http://guojie.blog.51cto.com/59049/28702</a></div></td></tr>

  <tr><td><div style="">&nbsp; &nbsp;&nbsp; 在Eclipse中，有一个功能：Toggle Mark Occurrences ，非常好用。会把相同内容文字的北京色设置为一样。该功能在工具栏：Show Source of Selected Element Only按钮的左边。<br />&nbsp;&nbsp;&nbsp;&nbsp; <img http://blog.51cto.com/viewpic.php?refimg=" + this.src)' alt="" style="width: 420px; height: 380px;" src="http://guojie.blog.51cto.com/attachment/200705/200705311180604436984.jpg" border="5"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp; 但是，在Eclipse3.2，将默认的颜色改成了灰色。就我个人而言，看上去很不舒服。<br />&nbsp;&nbsp;&nbsp;&nbsp; 找了半天，终于找到了配置的地方。<br />&nbsp;&nbsp;&nbsp;<span style="color: rgb(255, 0, 0); font-weight: bold;">&nbsp; Window-&gt;Preferences-&gt;General-&gt;Editors-&gt;Text Editors-&gt;Annotations&nbsp; Occurrences</span><br /><p>本文出自 “<a href="http://guojie.blog.51cto.com/">程序人生</a>” 博客，请务必保留此出处<a href="http://guojie.blog.51cto.com/59049/28702">http://guojie.blog.51cto.com/59049/28702</a></p></div></td></tr></tbody></table>
          <br/>
          <span style="color:red;">
            <a href="http://qingfengxia.javaeye.com/blog/193856#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 17 May 2008 10:48:22 +0800</pubDate>
        <link>http://qingfengxia.javaeye.com/blog/193856</link>
        <guid>http://qingfengxia.javaeye.com/blog/193856</guid>
      </item>
      <item>
        <title>hibernate多对多的解决(转)</title>
        <author>qingfengxia</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://qingfengxia.javaeye.com">qingfengxia</a>&nbsp;
          链接：<a href="http://qingfengxia.javaeye.com/blog/164556" style="color:red;">http://qingfengxia.javaeye.com/blog/164556</a>&nbsp;
          发表时间: 2008年02月24日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          转<a href="http://www.javaeye.com/topic/154587" target="_blank">http://www.javaeye.com/topic/154587</a><br />Hibernate多对多的例子不少，但仔细一看，大多数都是保存的，删除谈的少，但问题还不少，因此有必须简单测试一下，以下我们来个简单的多对多关系建立<br />老师Teacher 与 课程Course 是一个多对多的关系，Pojo与XMl配置如下。<br />Pojo<br /><pre name="code" class="java">/**
 * Course Entity
 * see table: tbl_course
 */
package com.leo.domain;

import java.util.HashSet;
import java.util.Set;

/**
 * @author superleo
 * 
 */
public class Course {

	private String id;

	private String name;

	private Set teachers = new HashSet();

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Set getTeachers() {
		return teachers;
	}

	public void setTeachers(Set teachers) {
		this.teachers = teachers;
	}

}
</pre><pre name="code" class="java">/**
 * Teacher Entity
 * see table: tbl_teacher
 */
package com.leo.domain;

import java.util.HashSet;
import java.util.Set;

/**
 * @author superleo
 * 
 */
public class Teacher {

	private String id;

	private String name;

	private Set courses = new HashSet();

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Set getCourses() {
		return courses;
	}

	public void setCourses(Set courses) {
		this.courses = courses;
	}

}
</pre>配置文件也非常简单：<br /><pre name="code" class="xml">&lt;?xml version="1.0"?>
&lt;!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
 &lt;hibernate-mapping>  
    &lt;class name="com.leo.domain.Course" table="tbl_course"  
         batch-size="100" dynamic-insert="true" dynamic-update="true">  
         &lt;id name="id" column="id">  
             &lt;generator class="uuid" />  
         &lt;/id>  
         &lt;property name="name" column="name" type="string" />  
   
         &lt;set access="property" lazy="true" inverse="false"  
             cascade="save-update" name="teachers" batch-size="10" fetch="select"  
             table="tbl_teacher_course">  
             &lt;key column="fk_course_id" />  
             &lt;many-to-many class="com.leo.domain.Teacher"  
                 column="fk_teacher_id" />  
         &lt;/set>  
   
     &lt;/class>  
 &lt;/hibernate-mapping>  


</pre><pre name="code" class="xml">&lt;?xml version="1.0"?>
&lt;!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

 &lt;hibernate-mapping>  
     &lt;class name="com.leo.domain.Teacher" table="tbl_teacher"  
         batch-size="100" dynamic-insert="true" dynamic-update="true">  
         &lt;id name="id" column="id">  
             &lt;generator class="uuid" />  
         &lt;/id>  
         &lt;property name="name" column="name" type="string" />  
   
         &lt;set access="property" lazy="true" inverse="true"  
             cascade="save-update" name="courses" batch-size="10" fetch="select"  
             table="tbl_teacher_course">  
             &lt;key column="fk_teacher_id" />  
             &lt;many-to-many class="com.leo.domain.Course"  
                 column="fk_course_id" />  
         &lt;/set>  
   
     &lt;/class>  
&lt;/hibernate-mapping>  	
</pre>先往数据库里插入一些记录：<br /><pre name="code" class="java">public void testSave() {
		Session session = HibernateSessionFactory.getSession();
		session.beginTransaction();

		// create course
		Course c1 = new Course();
		Course c2 = new Course();
		c1.setName("C");
		c2.setName("Java");

		// create teacher
		Teacher t1 = new Teacher();
		Teacher t2 = new Teacher();
		t1.setName("Leo");
		t2.setName("Rose");

		// create relationship
		c1.getTeachers().add(t1);
		c1.getTeachers().add(t2);
		t1.getCourses().add(c1);
		t2.getCourses().add(c1);

		/* 因为主控方级联设置为save-update,如果设置为none,则下面被注释的代码需要开启，否则会报错 */
		//session.save(t1); 
		//session.save(t2);
		session.save(c1);

		session.getTransaction().commit();
		session.close();
	}</pre>下面是测试的一些结果：<br />1. 如果<span style="color: #ff0000">cascade</span>不管主控方设置还是被控方设置成 <span style="color: #ff0000">all, delete</span>等与delete级联删除有关即可，两端以及中间表的记录都会被删除，通常这样的需要是很少的，因此，如果你要这样的情况，<span style="color: #ff0000">只要简单设置成all, delete就可以轻松的将关系以及两端的记录删除的干干净净。</span><br /><span style="color: #000000">2. 只想删除某一端的记录以及中间的表的关联信息。 这种需求通常是很常见的。这个时候cascade的设置是除与delete有关的任何级联约束。以下是删除心得：</span><br /><ul>如果删除的是主控方，只需要简单的删除这条记录，级联关系以及主控方的记录同时删除，但被控方的记录仍然存在。因此只对主控方的多对多删除是最简单，直接的。代码如下：<pre name="code" class="java">/**
	 * 多对多 主控方删除(可以删除中间表记录)
	 */
	public void testDelete() {
		String id = "402881ee175f04be01175f04c05d0001";
		Session session = HibernateSessionFactory.getSession();
		session.beginTransaction();
		Course c1 = (Course) session.get(Course.class, id);
		session.delete(c1);
		session.getTransaction().commit();
		session.close();
	}</pre> 如果你这个时候想直接删除被控方，那么很遗憾的告诉你，你只做到了一半，你只是简单的把被控方的记录删除了，关联关系仍然存在中间表里，系统随时会因为你的关联访问报错，代码如下：<pre name="code" class="java">	/**
	 * 多对多 被控方删除(无法删除中间表记录)
	 */
	public void testDeleteByInverse() {
		String id = "402881ee175a2e7c01175a2e7ead0003";
		Session session = HibernateSessionFactory.getSession();
		session.beginTransaction();
		Teacher t1 = (Teacher) session.get(Teacher.class, id);
		session.delete(t1);
		session.getTransaction().commit();
		session.close();
	}</pre> 如果想既想删除被控方，双想删除关联，请看下面代码：<pre name="code" class="java">	/**
	 * 多对多 被控方删除(可以删除中间表记录)
	 */
	public void testDeleteByInverse2() {
		String id = "402881ee175f04be01175f04c06c0002";
		Session session = HibernateSessionFactory.getSession();
		session.beginTransaction();

		Teacher t1 = (Teacher) session.get(Teacher.class, id);

		Set cs = t1.getCourses();
		for (Course c : cs) {
			c.getTeachers().remove(t1);
		}

		session.delete(t1);
		session.getTransaction().commit();
		session.close();
	}</pre> </ul>完成了。 但如果是Spring+Hiberante下多对多删除，可能会报一个错误，目前的解决办法是把两端的cascade都设置成none. 初步断定可能与事务有关，如果有人遇到了，并知道为什么，希望能留言，先谢谢大家了。<br /><br /> 只删除中间表，可以通过以下代码。<br /><pre name="code" class="java">
  /**
* 多对多 通过主控方删除中间表(其余记录都不变)
*/
public void testDeleteByInverse3() {
String id = "402881ee1782dad9011782dadb310001";
Session session = HibernateSessionFactory.getSession();
session.beginTransaction();

Course c1 = (Course) session.get(Course.class, id);
c1.setTeachers(null);

session.getTransaction().commit();
session.close();
}


/**
* 多对多 通过被控方删除中间表(其余记录都不变)
*/
public void testDeleteByInverse4() {
String id = "402881ee1782dbd4011782dbd64a0002";
Session session = HibernateSessionFactory.getSession();
session.beginTransaction();

Teacher t1 = (Teacher) session.get(Teacher.class, id);
Set&lt;Course> cs = t1.getCourses();
for (Course c : cs) {
c.getTeachers().remove(t1);
}

session.getTransaction().commit();
session.close();
} 
</pre><br />注：三个表的表结构<br /><pre name="code" class="sql">
--1. tbl_course.sql
    create table "SCOTT"."TBL_COURSE"(
        "ID" VARCHAR2(80) not null,
       "NAME" VARCHAR2(20) not null,
        constraint "SYS_C005315" primary key ("ID")
    );
create unique index "SCOTT"."SYS_C005315" on "SCOTT"."TBL_COURSE"("ID");
--2. tbl_teacher.sql

    create table "SCOTT"."TBL_TEACHER"(
        "ID" VARCHAR2(80) not null,
       "NAME" VARCHAR2(20) not null,
        constraint "SYS_C005313" primary key ("ID")
    );
create unique index "SCOTT"."SYS_C005313" on "SCOTT"."TBL_TEACHER"("ID");
--3.tbl_teacher_course.sql
  create table "SCOTT"."TBL_TEACHER_COURSE"(
        "FK_TEACHER_ID" VARCHAR2(80),
       "FK_COURSE_ID" VARCHAR2(90)
    );
</pre>
          <br/>
          <span style="color:red;">
            <a href="http://qingfengxia.javaeye.com/blog/164556#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 24 Feb 2008 11:05:08 +0800</pubDate>
        <link>http://qingfengxia.javaeye.com/blog/164556</link>
        <guid>http://qingfengxia.javaeye.com/blog/164556</guid>
      </item>
      <item>
        <title>简单的FTP客户端 sun.net.ftp.FtpClient</title>
        <author>qingfengxia</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://qingfengxia.javaeye.com">qingfengxia</a>&nbsp;
          链接：<a href="http://qingfengxia.javaeye.com/blog/153233" style="color:red;">http://qingfengxia.javaeye.com/blog/153233</a>&nbsp;
          发表时间: 2008年01月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <span style="font-size: medium"><br /><br />某些数据交换，我们需要通过ftp来完成。<br /><br />sun.net.ftp.FtpClient 可以帮助我们进行一些简单的ftp客户端功能：下载、上传文件。<br /><br />但如遇到创建目录之类的就无能为力了，我们只好利用第三方源码，比如 com.enterprisedt.net.ftp.FTPClient<br /><br />下面写一些sun.net.ftp.FtpClient 的使用方法。<br /><br />1、引入包<br />import java.io.DataInputStream;<br />import java.io.FileOutputStream;<br />import java.io.IOException;<br />import java.io.FileInputStream;<br />import java.util.ArrayList;<br />import java.util.Date;<br />import java.util.List;<br />import sun.net.*;<br />import sun.net.ftp.FtpClient;<br /><br />2、我们建一个叫做FtpUtil的class<br />   /**<br />    * connectServer<br />    * 连接ftp服务器<br />    * @throws java.io.IOException<br />    * @param path 文件夹，空代表根目录<br />    * @param password 密码<br />    * @param user   登陆用户<br />    * @param server 服务器地址<br />    */<br />  public void connectServer(String server, String user, String password,  String path)<br />  throws IOException <br />  {<br />     // server：FTP服务器的IP地址；user:登录FTP服务器的用户名<br />     // password：登录FTP服务器的用户名的口令；path：FTP服务器上的路径<br />     ftpClient = new FtpClient();<br />     ftpClient.openServer(server);<br />     ftpClient.login(user, password);<br />     //path是ftp服务下主目录的子目录<br />     if (path.length() != 0)  ftpClient.cd(path);<br />     //用2进制上传、下载<br />     ftpClient.binary();     <br /> }<br /><br /> /**<br />    * upload<br />    * 上传文件<br />    * @throws java.lang.Exception<br />    * @return -1 文件不存在<br />    *          -2 文件内容为空 <br />    *          &gt;0 成功上传，返回文件的大小<br />    * @param newname 上传后的新文件名<br />    * @param 