Android网络请求--服务器端从环境搭建到发布过程


1、环境部署 tomcat如何配置环境变量 ,这篇文章最后写了注意事项,有时候这些全都没问题可能还是出错,可以试着重启电脑可能就好了

       注意:JDK和TOMCAT最好装一样位数的版本,并且和操作系统匹配,都装64位或者都装32位的,否则可能出现一些不可预料的问题

2、创建项目 eclipse创建web项目

       注意:项目创建完毕后,项目的 WebContent/WEB-INF/下如果没有web.xml可以从其他项目拷过来或者自己新建一个,WebContent/META-INF下如果没有servlet-api.jar 包,可以到   apache-tomcat-7.0.64\lib目录下拷贝出来,手动Add Build to Path。

      项目目录:

    

3、编写代码,创建Servlet,最简单的实现

<pre name="code" class="html">    package com.servlet.test;  
      
    import java.io.IOException;  
      
    import javax.servlet.ServletException;  
    import javax.servlet.http.HttpServlet;  
    import javax.servlet.http.HttpServletRequest;  
    import javax.servlet.http.HttpServletResponse;  
      
    public class TestPageA extends HttpServlet{  
    	
    	int serCount = 0;
      
        @Override  
        protected void doGet(HttpServletRequest req, HttpServletResponse resp)  
                throws ServletException, IOException {  
            // TODO Auto-generated method stub  
            String data = "Success PageA --> " + (++serCount); 
            resp.setContentType("text/html;charset=GBK");  
            resp.getOutputStream().write(data.getBytes("GBK"));  
            System.out.println("Success PageA --> " + (++serCount));
        }  
          
        @Override  
        protected void doPost(HttpServletRequest req, HttpServletResponse resp)  
                throws ServletException, IOException {  
            // TODO Auto-generated method stub  
        	doGet(req, resp);  
        }  
    }  


 有两个Servlet,TestPageA和TestPageB,内容一样,仅输出内容不同。通过右键-New-Servlet方式创建一个Servlet时,可能自动生成配置和Servlet代码,如果没有生成则手动添加吧。需要为Servlet在WebContent/WEB-INF/web.xml进行配置: 
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
  <servlet>
    <servlet-name>TestPageA</servlet-name>
    <servlet-class>com.servlet.test.TestPageA</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>TestPageA</servlet-name>
    <url-pattern>/testA</url-pattern>
  </servlet-mapping>
  
  <servlet>
  	<servlet-name>TestPageB</servlet-name>
  	<servlet-class>com.servlet.test.TestPageB</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>TestPageB</servlet-name>
  	<url-pattern>/testB</url-pattern>
  </servlet-mapping>
</web-app>

这样最基本的工程完成。

4、发布项目 tomcat部署web项目的3中方法 

 

     web项目发布到Tomcat

     使用war包发布,简单快捷   web项目打war包发布

     

     注意:使用war包发布,如果修改了代码重新发布,要删除tomcat下原war包解压出来的项目

5、测试发布结果

     输入地址:http://localhost:8080/SerTest/testA

     输出:

    

     输入地址:http://localhost:8080/SerTest/testB

     输出:

   

6、创建Android项目测试,以下为主类,莫忘记加网络权限

package com.example.sertest;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
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 servletABtn;
	private Button servletBBtn;
	
	private int indexA = 1;
	private int indexB = 2;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		initViews();
                
	}
	
	private void initViews(){
		servletABtn = (Button)findViewById(R.id.servletA_btn);
		servletABtn.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				new SerThread(indexA).start();
			}
		});
		servletBBtn = (Button)findViewById(R.id.servletB_btn);
		servletBBtn.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				new SerThread(indexB).start();
			}
		});
	}
	
	
	class SerThread extends Thread{
		
		int index;
		
		public SerThread(int index) {
			this.index = index;
		}
		
		public void run() {
			executeGet(index);
		};
	}
	
	private void executeGet(int index){
		String urlDate = "http://192.168.xx.xx:8080/SerTest/testB";
		if(indexA == index){
			urlDate="http://192.168.xx.xx:8080/SerTest/testA";
		}
        try {  
            //封装访问服务器的地址  
            URL url=new URL(urlDate);  
            try {  
                //打开对服务器的连接  
            	HttpURLConnection conn=(HttpURLConnection) url.openConnection();  
                //连接服务器  
                conn.connect();  
                /**读入服务器数据的过程**/  
                //得到输入流  
                InputStream is=conn.getInputStream();  
                //创建包装流  
                BufferedReader br=new BufferedReader(new InputStreamReader(is));  
                //定义String类型用于储存单行数据  
                String line=null;  
                //创建StringBuffer对象用于存储所有数据  
                StringBuffer sb=new StringBuffer();  
                while((line=br.readLine())!=null){  
                    sb.append(line);  
                }  
                //用TextView显示接收的服务器数据  
//                tv.setText(sb.toString());  
                Log.i("tag","resInfo = " + sb.toString()); 
            } catch (IOException e) {  
                e.printStackTrace();  
            }  
        } catch (MalformedURLException e) {  
            e.printStackTrace();  
        } 
	}

	@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);
	}
}

点击连接servletA按钮输出:



Demo地址


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值