解决方案 »

  1.   

    地址是http://10.0.2.2:8080/MyBlog/regist?name=dddd&psw=aaa
    不是http://10.0.2.2:8080/MyBlog/regist/?name=dddd&psw=aaa
    你多写了一个/
      

  2.   

    http://10.0.2.2:8080/MyBlog/regist/?name=dddd&psw=aaa
    把'/'去了
      

  3.   

    把mTextView.setText去掉,需要通过handler或者别的方式把数据传回给UI线程。
    子线程里不能访问UI,UI线程里也不能访问网络。
      

  4.   

    package com.qiao.tiebatime;import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.util.HashMap;
    import java.util.Map;import org.apache.http.HttpStatus;import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    import android.widget.TextView;//以Get方式上传参数
    public class WebServiceActivity extends Activity {
    private final String DEBUG_TAG = "Activity03";
    private TextView mTextView;
    Map<String, String> map = new HashMap<String, String>(); /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mTextView = (TextView) this.findViewById(R.id.textView2); // -- // 登陆
    Button bt1 = (Button) findViewById(R.id.button1);
    bt1.setOnClickListener(new Button.OnClickListener() { @Override
    public void onClick(View arg0) {
    // TODO Auto-generated method stub
    denglu();
    } }); // 注册
    Button bt2 = (Button) findViewById(R.id.button2);
    bt2.setOnClickListener(new Button.OnClickListener() { @Override
    public void onClick(View arg0) {
    // TODO Auto-generated method stub
    zhuce();
    } });
    // --
    } // 登陆方法,采用Get方式上传参数
    private void denglu() {
    // http地址"?par=abcd"是我们上传的参数
    String httpUrl = "http://10.0.2.2:8080/MyBlog/login?name=ddd&psw=aaa";
    // 获得的数据
    String resultData = "";
    try {
    // 1、构造一个URL对象
    URL url = new URL(httpUrl);
    // 2、使用HttpURLConnection打开连接
    HttpURLConnection urlConn = (HttpURLConnection) url
    .openConnection();
    // 得到读取的内容(流)
    InputStreamReader in = new InputStreamReader(
    urlConn.getInputStream());
    // 为输出创建BufferedReader
    BufferedReader buffer = new BufferedReader(in);
    String inputLine = null;
    // 使用循环来读取获得的数据
    while (((inputLine = buffer.readLine()) != null)) {
    // 我们在每一行后面加上一个"\n"来换行
    resultData += inputLine + "\n";
    }
    // 关闭InputStreamReader
    in.close();
    // 关闭http连接
    urlConn.disconnect();
    // 设置显示取得的内容
    mTextView.setText(resultData);
    } catch (IOException e) {
    Log.e(DEBUG_TAG, "IOException");
    }
    } private void zhuce() {
    // http地址"?par=abcd"是我们上传的参数
    String httpUrl = "http://10.0.2.2:8080/MyBlog/regist?name=dddd&psw=aaa";
    Log.e("1", "连接地址");
    // 获得的数据
    String resultData = "";
    try {
    // 1、构造一个URL对象
    URL url = new URL(httpUrl);
    // 2、使用HttpURLConnection打开连接
    HttpURLConnection urlConn = (HttpURLConnection) url
    .openConnection();
    // 得到读取的内容(流)
    InputStreamReader in = new InputStreamReader(
    urlConn.getInputStream());
    // 为输出创建BufferedReader
    BufferedReader buffer = new BufferedReader(in);
    String inputLine = null;
    // 使用循环来读取获得的数据
    while (((inputLine = buffer.readLine()) != null)) {
    // 我们在每一行后面加上一个"\n"来换行
    resultData += inputLine + "\n";
    }
    // 关闭InputStreamReader
    in.close();
    // 关闭http连接
    urlConn.disconnect();
    // 设置显示取得的内容
    mTextView.setText(resultData);
    Log.e("2", "显示取得的内容");
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    }
      

  5.   

     setContentView(R.layout.activity_main);下面加上这段代码试试if (android.os.Build.VERSION.SDK_INT > 9) {
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);
    }
    不过这样写不好, 最好还是放在自己定义一个thread里面
      

  6.   

    改好了。网络访问和UI访问必须放在不同的线程里,这个是一定要遵守的。
    如果还不行,那可能就是服务器的原因,可以把报错的异常贴上来看看。package com.example.hellotest;import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.util.HashMap;
    import java.util.Map;import android.app.Activity;
    import android.os.AsyncTask;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    import android.widget.TextView;public class WebServiceActivity extends Activity {
        private final String DEBUG_TAG = "Activity03";
        private TextView mTextView;
        Map<String, String> map = new HashMap<String, String>();
     
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            mTextView = (TextView) this.findViewById(R.id.textView2);
     
            // --
     
            // 登陆
            Button bt1 = (Button) findViewById(R.id.button1);
            bt1.setOnClickListener(new Button.OnClickListener() {
                @Override
                public void onClick(View arg0) {
                 new AsyncTask<Void, Void, String>() {
                 @Override
                 public String doInBackground(Void... params) {
                 return denglu();
                 }
                 @Override
                 public void onPostExecute(String result) {
                 mTextView.setText(result);
                 }
                 }.execute();
                } 
            });
     
            // 注册
            Button bt2 = (Button) findViewById(R.id.button2);
            bt2.setOnClickListener(new Button.OnClickListener() { 
                @Override
                public void onClick(View arg0) {
                 new AsyncTask<Void, Void, String>() {
                 @Override
                 public String doInBackground(Void... params) {
                 return zhuce();
                 }
                 @Override
                 public void onPostExecute(String result) {
                 mTextView.setText(result);
                 }
                 }.execute();
                }
     
            });
            // --
        }
     
        // 登陆方法,采用Get方式上传参数
        private String denglu() {
            // http地址"?par=abcd"是我们上传的参数
            String httpUrl = "http://10.0.2.2:8080/MyBlog/login?name=ddd&psw=aaa";
            // 获得的数据
            String resultData = "";
            try {
                // 1、构造一个URL对象
                URL url = new URL(httpUrl);
                // 2、使用HttpURLConnection打开连接
                HttpURLConnection urlConn = (HttpURLConnection) url
                        .openConnection();
                // 得到读取的内容(流)
                InputStreamReader in = new InputStreamReader(
                        urlConn.getInputStream());
                // 为输出创建BufferedReader
                BufferedReader buffer = new BufferedReader(in);
                String inputLine = null;
                // 使用循环来读取获得的数据
                while (((inputLine = buffer.readLine()) != null)) {
                    // 我们在每一行后面加上一个"\n"来换行
                    resultData += inputLine + "\n";
                }
                // 关闭InputStreamReader
                in.close();
                // 关闭http连接
                urlConn.disconnect();
                // 设置显示取得的内容
                return resultData;
            } catch (IOException e) {
                Log.e(DEBUG_TAG, "IOException");
                return null;
            }
        }
     
        private String zhuce() {
            // http地址"?par=abcd"是我们上传的参数
            String httpUrl = "http://10.0.2.2:8080/MyBlog/regist?name=dddd&psw=aaa";
            Log.e("1", "连接地址");
            // 获得的数据
            String resultData = "";
            try {
                // 1、构造一个URL对象
                URL url = new URL(httpUrl);
                // 2、使用HttpURLConnection打开连接
                HttpURLConnection urlConn = (HttpURLConnection) url
                        .openConnection();
                // 得到读取的内容(流)
                InputStreamReader in = new InputStreamReader(
                        urlConn.getInputStream());
                // 为输出创建BufferedReader
                BufferedReader buffer = new BufferedReader(in);
                String inputLine = null;
                // 使用循环来读取获得的数据
                while (((inputLine = buffer.readLine()) != null)) {
                    // 我们在每一行后面加上一个"\n"来换行
                    resultData += inputLine + "\n";
                }
                // 关闭InputStreamReader
                in.close();
                // 关闭http连接
                urlConn.disconnect();
                Log.e("2", "显示取得的内容");
                // 设置显示取得的内容
                return resultData;
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
        }
    }
      

  7.   

    package com.qiao.tiebatime;import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.util.HashMap;
    import java.util.Map;import org.apache.http.HttpStatus;import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    import android.widget.TextView;//以Get方式上传参数
    public class WebServiceActivity extends Activity {
    private final String DEBUG_TAG = "Activity03";
    private TextView mTextView;
    Map<String, String> map = new HashMap<String, String>(); /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mTextView = (TextView) this.findViewById(R.id.textView2); // -- // 登陆
    Button bt1 = (Button) findViewById(R.id.button1);
    bt1.setOnClickListener(new Button.OnClickListener() { @Override
    public void onClick(View arg0) {
    // TODO Auto-generated method stub
    denglu();
    } }); // 注册
    Button bt2 = (Button) findViewById(R.id.button2);
    bt2.setOnClickListener(new Button.OnClickListener() { @Override
    public void onClick(View arg0) {
    // TODO Auto-generated method stub
    zhuce();
    } });
    // --
    } // 登陆方法,采用Get方式上传参数
    private void denglu() {
    // http地址"?par=abcd"是我们上传的参数
    String httpUrl = "http://10.0.2.2:8080/MyBlog/login?name=ddd&psw=aaa";
    // 获得的数据
    String resultData = "";
    try {
    // 1、构造一个URL对象
    URL url = new URL(httpUrl);
    // 2、使用HttpURLConnection打开连接
    HttpURLConnection urlConn = (HttpURLConnection) url
    .openConnection();
    // 得到读取的内容(流)
    InputStreamReader in = new InputStreamReader(
    urlConn.getInputStream());
    // 为输出创建BufferedReader
    BufferedReader buffer = new BufferedReader(in);
    String inputLine = null;
    // 使用循环来读取获得的数据
    while (((inputLine = buffer.readLine()) != null)) {
    // 我们在每一行后面加上一个"\n"来换行
    resultData += inputLine + "\n";
    }
    // 关闭InputStreamReader
    in.close();
    // 关闭http连接
    urlConn.disconnect();
    // 设置显示取得的内容
    mTextView.setText(resultData);
    } catch (IOException e) {
    Log.e(DEBUG_TAG, "IOException");
    }
    } private void zhuce() {
    // http地址"?par=abcd"是我们上传的参数
    String httpUrl = "http://10.0.2.2:8080/MyBlog/regist?name=dddd&psw=aaa";
    Log.e("1", "连接地址");
    // 获得的数据
    String resultData = "";
    try {
    // 1、构造一个URL对象
    URL url = new URL(httpUrl);
    // 2、使用HttpURLConnection打开连接
    HttpURLConnection urlConn = (HttpURLConnection) url
    .openConnection();
    // 得到读取的内容(流)
    InputStreamReader in = new InputStreamReader(
    urlConn.getInputStream());
    // 为输出创建BufferedReader
    BufferedReader buffer = new BufferedReader(in);
    String inputLine = null;
    // 使用循环来读取获得的数据
    while (((inputLine = buffer.readLine()) != null)) {
    // 我们在每一行后面加上一个"\n"来换行
    resultData += inputLine + "\n";
    }
    // 关闭InputStreamReader
    in.close();
    // 关闭http连接
    urlConn.disconnect();
    // 设置显示取得的内容
    mTextView.setText(resultData);
    Log.e("2", "显示取得的内容");
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    }
    最好把登录和注册的方法放到线程中去访问:
    new Thread(new Runnable(){
       重写run(){
      zhuc();
     }
    }).start();
      

  8.   

    同样服务器用老师写的客户端可以正常注册,刚才运行了下,服务器报错了
    2014-10-28 17:11:16 org.apache.catalina.core.StandardWrapperValve invoke
    严重: Servlet.service() for servlet UpdateUserInfo threw exception
    java.lang.NullPointerException
    at com.mct.servlet.UpdateUserInfo.doGet(UpdateUserInfo.java:59)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    at java.lang.Thread.run(Thread.java:619)
      

  9.   

    package com.qiao.tiebatime;import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.util.HashMap;
    import java.util.Map;import org.apache.http.HttpStatus;import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    import android.widget.TextView;//以Get方式上传参数
    public class WebServiceActivity extends Activity {
    private final String DEBUG_TAG = "Activity03";
    private TextView mTextView;
    Map<String, String> map = new HashMap<String, String>(); /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mTextView = (TextView) this.findViewById(R.id.textView2); // -- // 登陆
    Button bt1 = (Button) findViewById(R.id.button1);
    bt1.setOnClickListener(new Button.OnClickListener() { @Override
    public void onClick(View arg0) {
    // TODO Auto-generated method stub
    denglu();
    } }); // 注册
    Button bt2 = (Button) findViewById(R.id.button2);
    bt2.setOnClickListener(new Button.OnClickListener() { @Override
    public void onClick(View arg0) {
    // TODO Auto-generated method stub
    zhuce();
    } });
    // --
    } // 登陆方法,采用Get方式上传参数
    private void denglu() {
    // http地址"?par=abcd"是我们上传的参数
    String httpUrl = "http://10.0.2.2:8080/MyBlog/login?name=ddd&psw=aaa";
    // 获得的数据
    String resultData = "";
    try {
    // 1、构造一个URL对象
    URL url = new URL(httpUrl);
    // 2、使用HttpURLConnection打开连接
    HttpURLConnection urlConn = (HttpURLConnection) url
    .openConnection();
    // 得到读取的内容(流)
    InputStreamReader in = new InputStreamReader(
    urlConn.getInputStream());
    // 为输出创建BufferedReader
    BufferedReader buffer = new BufferedReader(in);
    String inputLine = null;
    // 使用循环来读取获得的数据
    while (((inputLine = buffer.readLine()) != null)) {
    // 我们在每一行后面加上一个"\n"来换行
    resultData += inputLine + "\n";
    }
    // 关闭InputStreamReader
    in.close();
    // 关闭http连接
    urlConn.disconnect();
    // 设置显示取得的内容
    mTextView.setText(resultData);
    } catch (IOException e) {
    Log.e(DEBUG_TAG, "IOException");
    }
    } private void zhuce() {
    // http地址"?par=abcd"是我们上传的参数
    String httpUrl = "http://10.0.2.2:8080/MyBlog/regist?name=dddd&psw=aaa";
    Log.e("1", "连接地址");
    // 获得的数据
    String resultData = "";
    try {
    // 1、构造一个URL对象
    URL url = new URL(httpUrl);
    // 2、使用HttpURLConnection打开连接
    HttpURLConnection urlConn = (HttpURLConnection) url
    .openConnection();
    // 得到读取的内容(流)
    InputStreamReader in = new InputStreamReader(
    urlConn.getInputStream());
    // 为输出创建BufferedReader
    BufferedReader buffer = new BufferedReader(in);
    String inputLine = null;
    // 使用循环来读取获得的数据
    while (((inputLine = buffer.readLine()) != null)) {
    // 我们在每一行后面加上一个"\n"来换行
    resultData += inputLine + "\n";
    }
    // 关闭InputStreamReader
    in.close();
    // 关闭http连接
    urlConn.disconnect();
    // 设置显示取得的内容
    mTextView.setText(resultData);
    Log.e("2", "显示取得的内容");
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    }
    最好把登录和注册的方法放到线程中去访问:
    new Thread(new Runnable(){
       重写run(){
      zhuc();
     }
    }).start();
    无果啊
    // 注册
    Button bt2 = (Button) findViewById(R.id.button2);
    bt2.setOnClickListener(new Button.OnClickListener() { @Override
    public void onClick(View arg0) {
    // TODO Auto-generated method stub
    // zhuce();
    new Thread(new Runnable() {

    @Override
    public void run() {
    // TODO Auto-generated method stub
    zhuce();
    }
    }).start();
    } });
      

  10.   

    同样服务器用老师写的客户端可以正常注册,刚才运行了下,服务器报错了
    2014-10-28 17:11:16 org.apache.catalina.core.StandardWrapperValve invoke
    严重: Servlet.service() for servlet UpdateUserInfo threw exception
    java.lang.NullPointerException
    at com.mct.servlet.UpdateUserInfo.doGet(UpdateUserInfo.java:59)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    at java.lang.Thread.run(Thread.java:619)
    晕,早上异常哈.
    com.mct.servlet.UpdateUserInfo.doGet(UpdateUserInfo.java:59)
    查看这个方法,不是你这些代码的问题嘛.
      

  11.   

    同样服务器用老师写的客户端可以正常注册,刚才运行了下,服务器报错了
    2014-10-28 17:11:16 org.apache.catalina.core.StandardWrapperValve invoke
    严重: Servlet.service() for servlet UpdateUserInfo threw exception
    java.lang.NullPointerException
    at com.mct.servlet.UpdateUserInfo.doGet(UpdateUserInfo.java:59)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    at java.lang.Thread.run(Thread.java:619)
    晕,早上异常哈.
    com.mct.servlet.UpdateUserInfo.doGet(UpdateUserInfo.java:59)
    查看这个方法,不是你这些代码的问题嘛.package com.mct.servlet;import java.io.File;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Map;
    import java.util.Map.Entry;import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.FileItem;
    import org.apache.commons.fileupload.disk.DiskFileItemFactory;
    import org.apache.commons.fileupload.servlet.ServletFileUpload;import com.mct.utils.DbUtil;
    import com.mct.utils.UploadUtil;
    import com.mct.utils.UserDbUtil;public class UpdateUserInfo extends HttpServlet {
    public static final String PHOTO_PATH = "D:/blog/photo/";
    // 注册
    private static final int TYPE_REGIST = 1;
    // 更新
    private static final int TYPE_UPDATE = 2; private int type; /**
     * 
     */
    private static final long serialVersionUID = 1L; @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
    throws ServletException, IOException {
    // TODO Auto-generated method stub
    resp.setContentType("text/html;charset=UTF-8");
    PrintWriter pw = resp.getWriter(); String typeStr = req.getServletPath();
    if (null != typeStr) {
    typeStr = typeStr.substring(1);
    if (typeStr.equals("regist")) {
    type = TYPE_REGIST;
    } else {
    type = TYPE_UPDATE;
    }
    }
    String contentType = req.getContentType();
    Map<String, String> map = new HashMap<String, String>();
    // 从文件上传中携带参数
    if (type != 0
    && (contentType.contains("multipart/form-data") || contentType
    .contains("multipart/mixed"))) {
    final long MAX_SIZE = 3 * 1024 * 1024;// 设置上传文件最大为 3M
    // 实例化一个硬盘文件工厂,用来配置上传组件ServletFileUpload
    DiskFileItemFactory dfif = new DiskFileItemFactory();
    dfif.setSizeThreshold(4096);// 设置上传文件时用于临时存放文件的内存大小,这里是4K.多于的部分将临时存在硬盘
    String tempPath = PHOTO_PATH + "temp\\";
    // 判断临时文件夹是否存在,不存在则创建临时文件夹
    UploadUtil.isDirsExist(tempPath);
    dfif.setRepository(new File(tempPath));
    // 设置存放临时文件的目录,web根目录下的ImagesUploadTemp目录
    // 用以上工厂实例化上传组件
    ServletFileUpload sfu = new ServletFileUpload(dfif);
    sfu.setSizeMax(MAX_SIZE);// 设置最大上传尺寸
      

  12.   

    同样服务器用老师写的客户端可以正常注册,刚才运行了下,服务器报错了
    2014-10-28 17:11:16 org.apache.catalina.core.StandardWrapperValve invoke
    严重: Servlet.service() for servlet UpdateUserInfo threw exception
    java.lang.NullPointerException
    at com.mct.servlet.UpdateUserInfo.doGet(UpdateUserInfo.java:59)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    at java.lang.Thread.run(Thread.java:619)
    晕,早上异常哈.
    com.mct.servlet.UpdateUserInfo.doGet(UpdateUserInfo.java:59)
    查看这个方法,不是你这些代码的问题嘛.package com.mct.servlet;import java.io.File;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Map;
    import java.util.Map.Entry;import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.FileItem;
    import org.apache.commons.fileupload.disk.DiskFileItemFactory;
    import org.apache.commons.fileupload.servlet.ServletFileUpload;import com.mct.utils.DbUtil;
    import com.mct.utils.UploadUtil;
    import com.mct.utils.UserDbUtil;public class UpdateUserInfo extends HttpServlet {
    public static final String PHOTO_PATH = "D:/blog/photo/";
    // 注册
    private static final int TYPE_REGIST = 1;
    // 更新
    private static final int TYPE_UPDATE = 2; private int type; /**
     * 
     */
    private static final long serialVersionUID = 1L; @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
    throws ServletException, IOException {
    // TODO Auto-generated method stub
    resp.setContentType("text/html;charset=UTF-8");
    PrintWriter pw = resp.getWriter(); String typeStr = req.getServletPath();
    if (null != typeStr) {
    typeStr = typeStr.substring(1);
    if (typeStr.equals("regist")) {
    type = TYPE_REGIST;
    } else {
    type = TYPE_UPDATE;
    }
    }
    String contentType = req.getContentType();
    Map<String, String> map = new HashMap<String, String>();
    // 从文件上传中携带参数
    if (type != 0
    && (contentType.contains("multipart/form-data") || contentType
    .contains("multipart/mixed"))) {
    final long MAX_SIZE = 3 * 1024 * 1024;// 设置上传文件最大为 3M
    // 实例化一个硬盘文件工厂,用来配置上传组件ServletFileUpload
    DiskFileItemFactory dfif = new DiskFileItemFactory();
    dfif.setSizeThreshold(4096);// 设置上传文件时用于临时存放文件的内存大小,这里是4K.多于的部分将临时存在硬盘
    String tempPath = PHOTO_PATH + "temp\\";
    // 判断临时文件夹是否存在,不存在则创建临时文件夹
    UploadUtil.isDirsExist(tempPath);
    dfif.setRepository(new File(tempPath));
    // 设置存放临时文件的目录,web根目录下的ImagesUploadTemp目录
    // 用以上工厂实例化上传组件
    ServletFileUpload sfu = new ServletFileUpload(dfif);
    sfu.setSizeMax(MAX_SIZE);// 设置最大上传尺寸 try {
    // 从request得到 所有 上传域的列表
    List<FileItem> fileList = sfu.parseRequest(req);
    // 得到所有上传的文件
    Iterator<FileItem> fileItr = fileList.iterator();
    // 循环处理所有文件
    while (fileItr.hasNext()) {
    FileItem fileItem = null;
    // 得到当前文件
    fileItem = (FileItem) fileItr.next();
    // 忽略简单form字段而不是上传域的文件域(<input type="text" />等)
    if (fileItem == null) {
    continue;
    }
    if (fileItem.isFormField()) {
    String fieldName = fileItem.getFieldName();
    String value = DbUtil.utfString(fileItem.getString());
    map.put(fieldName, value);
    continue;
    }
    String saveName;
      

  13.   

    同样服务器用老师写的客户端可以正常注册,刚才运行了下,服务器报错了
    2014-10-28 17:11:16 org.apache.catalina.core.StandardWrapperValve invoke
    严重: Servlet.service() for servlet UpdateUserInfo threw exception
    java.lang.NullPointerException
    at com.mct.servlet.UpdateUserInfo.doGet(UpdateUserInfo.java:59)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    at java.lang.Thread.run(Thread.java:619)
    晕,早上异常哈.
    com.mct.servlet.UpdateUserInfo.doGet(UpdateUserInfo.java:59)
    查看这个方法,不是你这些代码的问题嘛.package com.mct.servlet;import java.io.File;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Map;
    import java.util.Map.Entry;import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.FileItem;
    import org.apache.commons.fileupload.disk.DiskFileItemFactory;
    import org.apache.commons.fileupload.servlet.ServletFileUpload;import com.mct.utils.DbUtil;
    import com.mct.utils.UploadUtil;
    import com.mct.utils.UserDbUtil;public class UpdateUserInfo extends HttpServlet {
    public static final String PHOTO_PATH = "D:/blog/photo/";
    // 注册
    private static final int TYPE_REGIST = 1;
    // 更新
    private static final int TYPE_UPDATE = 2; private int type; /**
     * 
     */
    private static final long serialVersionUID = 1L; @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
    throws ServletException, IOException {
    // TODO Auto-generated method stub
    resp.setContentType("text/html;charset=UTF-8");
    PrintWriter pw = resp.getWriter(); String typeStr = req.getServletPath();
    if (null != typeStr) {
    typeStr = typeStr.substring(1);
    if (typeStr.equals("regist")) {
    type = TYPE_REGIST;
    } else {
    type = TYPE_UPDATE;
    }
    }
    String contentType = req.getContentType();
    Map<String, String> map = new HashMap<String, String>();
    // 从文件上传中携带参数
    if (type != 0
    && (contentType.contains("multipart/form-data") || contentType
    .contains("multipart/mixed"))) {
    final long MAX_SIZE = 3 * 1024 * 1024;// 设置上传文件最大为 3M
    // 实例化一个硬盘文件工厂,用来配置上传组件ServletFileUpload
    DiskFileItemFactory dfif = new DiskFileItemFactory();
    dfif.setSizeThreshold(4096);// 设置上传文件时用于临时存放文件的内存大小,这里是4K.多于的部分将临时存在硬盘
    String tempPath = PHOTO_PATH + "temp\\";
    // 判断临时文件夹是否存在,不存在则创建临时文件夹
    UploadUtil.isDirsExist(tempPath);
    dfif.setRepository(new File(tempPath));
    // 设置存放临时文件的目录,web根目录下的ImagesUploadTemp目录
    // 用以上工厂实例化上传组件
    ServletFileUpload sfu = new ServletFileUpload(dfif);
    sfu.setSizeMax(MAX_SIZE);// 设置最大上传尺寸 try {
    // 从request得到 所有 上传域的列表
    List<FileItem> fileList = sfu.parseRequest(req);
    // 得到所有上传的文件
    Iterator<FileItem> fileItr = fileList.iterator();
    // 循环处理所有文件
    while (fileItr.hasNext()) {
    FileItem fileItem = null;
    // 得到当前文件
    fileItem = (FileItem) fileItr.next();
    // 忽略简单form字段而不是上传域的文件域(<input type="text" />等)
    if (fileItem == null) {
    continue;
    }
    if (fileItem.isFormField()) {
    String fieldName = fileItem.getFieldName();
    String value = DbUtil.utfString(fileItem.getString());
    map.put(fieldName, value);
    continue;
    }
    String saveName;亲,你总贴代码也不是个办法呀,你得debug一下啊
      

  14.   

    debug一下,一步一步的走,要有一个数据流的概念,从A到B要经过哪些,看数据是否有传递,传的方式或者接收的是否有异常。
      

  15.   

    谢谢,已改用post请求,成功了!
      

  16.   

    用post请求,并在子线程执行,搞定了