Android工程与web工程通过tomcat服务器建立网络连接案列

来源:互联网 发布:校园网mac地址被修改 编辑:程序博客网 时间:2024/06/15 23:19

TestApp中Android客户端MainActivity

package com.example.testapp;


import java.net.URLEncoder;

import com.google.gson.Gson;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {
    private Button btnTxt = null;
    private String txtUrl = "http://192.168.23.1:8080/TaxiServlet/TxtDataServlet";


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btnTxt=(Button) findViewById(R.id.btnTxt);
        btnTxt.setOnClickListener(new OnClickListener() {
            
            public void onClick(View v) {
                new Thread(new Runnable() {
                    
                    @SuppressWarnings("deprecation")
                    @Override
                    public void run() {
                        // TODO Auto-generated method stub
                        String retStr = "";  
                        Student student = new Student();  
                        student.setId(1);  
                        student.setName("吕健1");
                        student.setClasse("1班");                
                        Gson gson = new Gson();  
                        String jsonTxt = gson.toJson(student);
                        
                        try {  
                            retStr = NetTool.sendTxt(txtUrl, jsonTxt,"UTF-8");  
                        } catch (Exception e2) {  
                            e2.printStackTrace();  
                        }  
                        
                    }
                }).start();
                
            }
        });
    }

//    Handler handler=new Handler(){
//        public void handleMessage(android.os.Message msg) {};
//    };
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

}

//Android端通过post传递数据TestApp


package com.example.testapp;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class NetTool {
    /**
     * 传送文本,例如Json,xml等
     */  
    public static String sendTxt(String urlPath, String txt, String encoding)  
            throws Exception {

        byte[] sendData = ("json="+txt).getBytes();  
        URL url = new URL(urlPath);  
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();  
        conn.setRequestMethod("POST");  
        conn.setConnectTimeout(5000);  
        // 如果通过post提交数据,必须设置允许对外输出数据  
        conn.setDoOutput(true);  
        conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");  
        conn.setRequestProperty("Charset", encoding);  
        conn.setRequestProperty("Content-Length", String  
                .valueOf(sendData.length));  
        OutputStream outStream = conn.getOutputStream();  
        outStream.write(sendData);  
        outStream.flush();  
        outStream.close();  
        if (conn.getResponseCode() == 200) {  
            // 获得服务器响应的数据  
            BufferedReader in = new BufferedReader(new InputStreamReader(conn  
                    .getInputStream(), encoding));  
            // 数据  
            String retData = null;  
            String responseData = "";  
            while ((retData = in.readLine()) != null) {  
                responseData += retData;  
            }  
            in.close();  
            return responseData;  
        }  
        return "发送文本失败";  
    }  
    
 
}


Servlet服务器端通过json获得数据,并与本地数据库进行连接查询,servlet是在web项目中

因此,需要配置web.xml

package com.test.servlet;

import java.awt.Button;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URLDecoder;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import ceshi.User;

import com.db.D1;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

import net.sf.json.JSON;
import net.sf.json.JSONObject;

public class TxtDataServlet extends HttpServlet  {
    
 
    @SuppressWarnings("deprecation")
    public void doPost(HttpServletRequest request, HttpServletResponse response)  
            throws ServletException, IOException {
        System.out.println("post成功了,杜哥");
        request.setCharacterEncoding("UTF-8");
        Gson gson=new Gson();

        String  jsonStr= request.getParameter("json");
        Student k=gson.fromJson(jsonStr, Student.class);
        
        Connection con = null;
        ResultSet rs = null;
        try {
            Class.forName( "oracle.jdbc.driver.OracleDriver" );// 加载驱动程序  
            con = DriverManager.getConnection( "jdbc:oracle:thin:@127.0.0.1:1521:test", "system", "123456" );
            String sql="select * from student where  id='"+k.getId()+"'and name='"+k.getName()+"'";
              Statement stmt=con.createStatement();//创建SQL命令对象
              stmt.executeQuery(sql);//执行查询命令
              rs=stmt.executeQuery(sql);//返回SQL语句查询结果集(集合)
//              if(rs.next()){
//                  
//              }
              while(rs.next()){
                  System.out.println("连接成功");
                  System.out.println(rs.getString("id")+"\t"+rs.getString("name")+"\t"+rs.getString("classes")
                          +"\t"+rs.getString("age"));
              }
              //关闭连接
              stmt.close();//关闭命令对象连接
              con.close();//关闭数据库连接
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
   
      
    }  


}


web.xml中的配置

<servlet>  
        <servlet-name>SynDataServlet</servlet-name>  
        <servlet-class>com.test.servlet.TxtDataServlet</servlet-class>  
    </servlet>  
    <servlet-mapping>  
        <servlet-name>SynDataServlet</servlet-name>  
        <url-pattern>/TxtDataServlet</url-pattern>  
    </servlet-mapping>





1 0
原创粉丝点击