一个关于android与server端servlet交互的demo,比项目中的例子要简单很多。

入门的朋友可以参考下。

核心代码:

/** *  * 项目名称 JSONDemo * 包   名 servlet * 文   件  名 CustomerServlet.java * 开   发  人 Administrator * 描述信息 客户端验证用户登陆Servlet * 发布日期 2012-4-6下午03:28:47 * 修改日期  * 修   改  人         * 版本信息 V1.0 * */public class CustomerServlet extends HttpServlet {private static final long serialVersionUID = 314719472293387358L;@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {//登陆成功标志String LOGIN_FLAG="";//获得客户端提交用户名密码String username = req.getParameter("username");String password = req.getParameter("password");//调用UserDAO中isLogin方法判断数据中用户名密码是否正确boolean flag=UserDAO.isLogin(username, password);try {DataOutputStream output=new DataOutputStream(resp.getOutputStream());if (flag) {LOGIN_FLAG="success";output.writeUTF("服务器端数据:"+LOGIN_FLAG);    System.out.println(LOGIN_FLAG);output.writeInt(1);  output.close(); }else{ //登录失败  LOGIN_FLAG="failure";System.out.println(LOGIN_FLAG);output.writeUTF("服务器端数据:"+LOGIN_FLAG);output.close(); }} catch (Exception e) {e.printStackTrace();}}}

ClientDemo 核心代码:

public class MainActivity extends Activity {//private static final int REQUEST_CODE = 2;   HttpPost httpRequest=new HttpPost(UriAPI.HTTPCustomer);   EditText et_name; EditText et_pwd; TextView show_login;Button btn_login;Button btn_cancle;ProgressDialog progressDialog;    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        //初始化登陆界面        btn_login=(Button) findViewById(R.id.btn_login);        btn_cancle=(Button) findViewById(R.id.btn_cancle);        et_name=(EditText) findViewById(R.id.et_name);        et_pwd = (EditText) findViewById(R.id.et_pwd);        show_login=(TextView) findViewById(R.id.show_login);           progressDialog = new ProgressDialog(this);        btn_login.setOnClickListener(new OnClickListener() {@SuppressWarnings("unchecked")@Overridepublic void onClick(View v) {//通过AsyncTask类提交数据 异步显示new AT().execute(et_name.getText().toString(),et_pwd.getText().toString());}});            }    public class UriAPI {          /** 定义一个Uri **/      public static final String HTTPCustomer ="http://10.0.1.9:8026/JSONDemo/servlet/CustomerServlet";    }    @SuppressWarnings("rawtypes")class AT extends AsyncTask{          String result="";    @Override    protected void onPreExecute() {    //加载progressDialog    progressDialog.show();    }    @Overrideprotected Object doInBackground(Object... params_obj) {CharSequence username="";CharSequence password="";username=et_name.getText();password =et_pwd.getText();if(!username.equals("")&&!password.equals("")){//请求数据HttpPost httpRequest  = new HttpPost(UriAPI.HTTPCustomer);//创建参数   List params=new ArrayList();  params.add(new BasicNameValuePair("username", username.toString())); params.add(new BasicNameValuePair("password", password.toString())); //params.add(new BasicNameValuePair("flag","0")); try { //对提交数据进行编码httpRequest.setEntity(new UrlEncodedFormEntity(params,HTTP.UTF_8));HttpResponse httpResponse=new DefaultHttpClient().execute(httpRequest);//获取响应服务器的数据if (httpResponse.getStatusLine().getStatusCode()==200) {//利用字节数组流和包装的绑定数据byte[] data =new byte[2048];//先把从服务端来的数据转化成字节数组data =EntityUtils. toByteArray((HttpEntity)httpResponse.getEntity());  //再创建字节数组输入流对象   ByteArrayInputStream bais = new ByteArrayInputStream(data);   //绑定字节流和数据包装流   DataInputStream dis = new DataInputStream(bais);    //将字节数组中的数据还原成原来的各种数据类型,代码如下:  result=new String(dis.readUTF());   Log.i("服务器返回信息:", result);}} catch(ClientProtocolException e){                      e.printStackTrace();                  }catch(UnsupportedEncodingException e){                      e.printStackTrace();                  } catch (IOException e) {                      e.printStackTrace();                  }  }return result;}          @Override    protected void onPostExecute(Object result) {          //获得服务器返回信息成功后      show_login.setText(result.toString());      //取消进度条      progressDialog.cancel();      }        } }

界面截图

1.未登录

android与server端servlet交互_第1张图片

2.登陆中

android与server端servlet交互_第2张图片

3.登陆成功

android与server端servlet交互_第3张图片

4.登陆失败

android与server端servlet交互_第4张图片


更多相关文章

  1. 360buy android 首页打开网络监控数据分析
  2. Android 学生管理系统 之 SQLite数据库操作
  3. Android客户端和服务器端数据交互的第四种方法
  4. Android多媒体数据库详解
  5. Android SQLite 数据库的使用
  6. android异步任务加载数据界面实现
  7. Android(四)数据存储之四 (转)

随机推荐

  1. android 打电话、发短信源码分析
  2. Android自动补全(一)
  3. eclipse导入已有的android工程出错
  4. Android(安卓)使用Android(安卓)Studio +
  5. android DIY 2
  6. 【Android】Android(安卓)java动态库、静
  7. Android(安卓)SDK下载太慢
  8. 【Android】显示Emoji表情字符
  9. 使用android:layout_weight解决布局时把
  10. [Android] HttpURLConnection or Apache