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

来源:互联网 发布:linux 查看java path 编辑:程序博客网 时间:2024/06/05 11:46


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;@Overrideprotected 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() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubnew SerThread(indexA).start();}});servletBBtn = (Button)findViewById(R.id.servletB_btn);servletBBtn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubnew 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();          } }@Overridepublic 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;}@Overridepublic 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地址


0 0
原创粉丝点击