这一次, 我写的是关于web服务器在eclipse for JAVAEE 上面搭建和使用HttpUrlConnection来进行简单的数据传输。
1.首先我们下载javaEE,在eclipse的官网就能下载得到。JAVAEE的好处在于,它可以进行简单的服务器的搭建,因为软件里面就有相关的插件。
关于插件的使用,在此我简单的说明一下:当我们把JAVA EE安装完成过后,打开在Windows选项中选择preferences,在选择Server下面的RunTime Environments。这里最主要的是利用JAVA EE来创建一个本地的服务器,因此再在RunTime Environments 里面选择add,来增加一个服务器。其次在随意的选择一个Apache Tomcat的版本,完成过后点击next,然后又出现两个选择栏,第一个是名字不用管它,第二是让你选择一个服务器的插件,此时需要你自己在网络上下载一个插件,最好是跟你的选择的apache Tomcat版本差不多的,这个是Apache Tomcat 的官网:http://tomcat.apache.org/。下载完成过后,解压,得到一个文件夹,然后回到JAVA EE当中,将刚刚解压后的文件夹加进去。最后点击finish就行了。
2.其次,在eclipse中创建一个Dynamic web Project。然后运行一下,你会发现多了一个Servers的文件夹。如果之前就有这个文件夹, 就不会再出现一个,也就是工程栏只可能有Server的文件夹。
3.新建一个Servlet工程,名字可以随便取。等工程创建成功过后,代码显示区会增加一个java文件,里面有很多的方法。我这里简单的重写了这两个方法,红色的部分就是我重写的部分。其他的都没有动。
java代码
1 package com.java.Servlet; 2 3 import java.io.IOException; 4 import java.io.PrintWriter; 5 6 import javax.servlet.ServletException; 7 import javax.servlet.http.HttpServlet; 8 import javax.servlet.http.HttpServletRequest; 9 import javax.servlet.http.HttpServletResponse; 10 11 /** 12 * Servlet implementation class Servlet 13 */ 14 public class Servlet extends HttpServlet { 15 private static final long serialVersionUID = 1L; 16 17 /** 18 * @see HttpServlet#HttpServlet() 19 */ 20 public Servlet() { 21 super(); 22 // TODO Auto-generated constructor stub 23 } 24 25 /** 26 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 27 */ 28 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 29 //调用下面的doPost方法 30 this.doPost(request, response); 31 } 32 33 /** 34 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 35 */ 36 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 37 //从request中分别获得name age属性 38 String name = request.getParameter("name"); 39 String age = request.getParameter("age"); 40 PrintWriter pw = response.getWriter(); 41 //再网页上显示相应的信息 42 pw.println("name = " + name + " age = " + age); 43 //在控制上显示相应的信息 44 System.out.println("name = " + name); 45 System.out.println("age = " + age); 46 } 47 48 }
4.然后在创建一个JSP File。
JSP代码
1 <%@ page language="java" contentType="text/html; charset=ISO-8859-1" 2 pageEncoding="ISO-8859-1"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 7 <title>Insert title here</title> 8 </head> 9 <body> 10 <%--action表示的是我们要给哪一个servlet提交数据 所以这个action 就是先前我们创建servlet的名字--%> 11 <%-- method表示的是提交数据的方式--%> 12 <%--其他就是HTML里面的知识了 --%> 13 <form action="Servlet" method = "get"> 14 name:<input type = "text" name = "name"><br> 15 age:<input type = "text" name = "age"><br> 16 submit:<input type = "submit" value = "submit"><br> 17 </form> 18 </body> 19 </html>
4.然后在运行一下整个工程。我们可以看到出现了相关的页面,而不是之前的404了。我们可以示范的在输入框里面输入相应的值,在点击submitt,会看到在控制台和页面上都相应的显示了相关信息。
上面的我只是简单的说明了一下,怎么在java EE上搭建一个简单的服务器。下面我将简单说明一下,怎么将我们写的相关的APP与刚刚搭建的服务器相连接,进行简单的数据传输。
1.首先得创建一个android工程,这个是必要的,我也不必赘述。
xml代码
1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:orientation="vertical" 6 tools:context="com.example.android_client.MainActivity" > 7 8 <LinearLayout 9 android:orientation="horizontal" 10 android:layout_width="fill_parent" 11 android:layout_height="wrap_content" > 12 13 <TextView 14 android:layout_marginLeft="10dp" 15 android:id="@+id/textview_name" 16 android:layout_width="wrap_content" 17 android:layout_height="wrap_content" 18 android:text="@string/textview_name" /> 19 <EditText 20 android:id="@+id/edittext_name" 21 android:layout_marginLeft="10dp" 22 android:layout_width="fill_parent" 23 android:layout_height="wrap_content" 24 /> 25 </LinearLayout> 26 <LinearLayout 27 android:orientation="horizontal" 28 android:layout_width="fill_parent" 29 android:layout_height="wrap_content" > 30 31 <TextView 32 android:layout_marginLeft="10dp" 33 android:id="@+id/textview_age" 34 android:layout_width="wrap_content" 35 android:layout_height="wrap_content" 36 android:text="@string/textview_age" /> 37 <EditText 38 android:id="@+id/edittext_age" 39 android:layout_marginLeft="10dp" 40 android:layout_width="fill_parent" 41 android:layout_height="wrap_content" 42 /> 43 </LinearLayout> 44 <Button 45 android:id="@+idtton" 46 android:layout_width="fill_parent" 47 android:layout_height="wrap_content" 48 android:text="@stringtton_string" 49 /> 50 </LinearLayout>
2.在工程里面创建一个新的线程类
Java代码
1 package com.example.android_client; 2 3 import java.io.BufferedReader; 4 import java.io.InputStreamReader; 5 import java.net.HttpURLConnection; 6 import java.net.URL; 7 8 import android.util.Log; 9 10 public class HttpThread extends Thread{ 11 String name = null; 12 String age = null; 13 String url = null; 14 public HttpThread(String name, String age, String url) 15 { 16 this.name = name; 17 this.age = age; 18 this.url = url; 19 } 20 public void run() { 21 try { 22 DoGet(); 23 } catch (Exception e) { 24 // TODO Auto-generated catch block 25 e.printStackTrace(); 26 } 27 28 } 29 private void DoGet() throws Exception 30 { 31 Log.i("main", "1"); 32 url = url + "?name=" +name + "&age=" + age; 33 URL url = new URL(this.url); 34 Log.i("main", "2"); 35 HttpURLConnection httpurlconnection = (HttpURLConnection) url.openConnection(); 36 httpurlconnection.setRequestMethod("GET"); 37 httpurlconnection.setReadTimeout(5000); 38 BufferedReader br = new BufferedReader(new InputStreamReader(httpurlconnection.getInputStream())); 39 StringBuffer sb = new StringBuffer(); 40 String string = null; 41 while((string = br.readLine()) != null) 42 { 43 sb.append(string); 44 } 45 Log.i("main", sb.toString()); 46 System.out.println(sb.toString()); 47 } 48 }
3.activity里面的代码
java代码
1 package com.example.android_client; 2 3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.view.View; 6 import android.view.View.OnClickListener; 7 import android.widget.Button; 8 import android.widget.EditText; 9 10 public class MainActivity extends Activity implements OnClickListener{ 11 private Button button = null; 12 private EditText edittext_name = null; 13 private EditText edittext_age = null; 14 protected void onCreate(Bundle savedInstanceState) { 15 super.onCreate(savedInstanceState); 16 setContentView(R.layout.activity_main); 17 button = (Button) findViewById(R.id.button); 18 edittext_name = (EditText) findViewById(R.id.edittext_name); 19 edittext_age = (EditText) findViewById(R.id.edittext_age); 20 button.setOnClickListener(this); 21 } 22 public void onClick(View v) { 23 //这里面的IP地址根据服务器的IP改变而改变 24 String url = "http://222.196.200.172:8080/web/Servlet"; 25 new HttpThread(edittext_name.getText().toString(), edittext_age.getText().toString(), url).start(); 26 } 27 }
这样,我们就简单的实现了,自己app与自己搭建的服务器相连接并且可以进行简单的数据传输。