您的位置:首页 > 理论基础 > 计算机网络

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

2015-09-17 13:24 661 查看
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地址
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息