我的博客:http://blog.csdn.net/wanxuedong
前言:本来是不打算写的,后来发现这部分知识忘的太快了,今天重新弄得时候都快是从头开始了,吓死我,所以我就赶紧写一篇博客来压压惊。
1:Tomcat
简单介绍一下吧,Tomcat是一个可以安装在自己电脑的上的软件,可以帮助我们从我们电脑里面通过局域网获取我们电脑里面的数据,相当于一个小小的服务器,我们平时做的练习基本上都是单机型的,有了这个小型服务器,我们就可以让我们的软件往正式的软件更靠近一步了。
安装我就不说了,网上有教程。
说重点:
1:等到我们安装好了这个软件后,我们进入到路径
bin下,里面有个名字叫start.bat的文件,我们点击打开,这是就会打开类似命令行的窗口,这就可以让我们的服务器运行了,一些的数据传递都建立在这个文件打开之后进行。
正常情况下,打开的界面等一小会应该是这个样的:
如果有的同学打开有异常,那应该都是java环境没配好,这种问题自己弄。
2:打开服务器,其实就可以,我们可以在浏览器,里面输入:http://localhost:8080
不如意外就会出现Tomcat的界面,这表示Tomcat的安装没什么问题。
接下来我们进入文件:
conf里面,找到一个文件叫server.xml的文件,然后以编辑的形式打开,我们找到里面的这一个部分(其实就在最下面):
并且在下面添加这样一句话:
<Context path="/aa" docBase="C:\AA" />
什么意思呢?
意思就是我们设置一个虚拟目录,例如,我们现在在我们的网页里面输入
:http://localhost:8080/aa/mytext.txt
意思就是访问到我们C盘下,一个叫AA的文件夹,再下面的一个叫mytext的文本文档,并且显示在网页上,如果是乱码,那就是编码格式问题,这个问题自己解决,懂了没?
就是弄一个供我们网页上访问的虚拟目录,我们也可以把这个位置发到我们手机上,不过呀改一个地方,那就是localhost这部分得改,这个单词意思是本地的意思,我们电脑访问自己里面的东西自然没事,但是到手机上我们就得改了,这部分我们要改成我们电脑的ip,例如我的电脑ip是:192.168.1.15,那么这个路径要让我们的手机访问的话就得改成http://192.168.1.15:8080/aa/mytext.txt才行,不过还有一个前提,那就是手机和电脑必须连在同一个局域网下。
这样好了以后我们接着往下做。
代码
接下来我给出我的app代码:比较简单,同学们容易看,但是不包括json解析,如果要看json解析,可以看我另外一篇文章:
http://blog.csdn.net/wanxuedong/article/details/54408247
代码如下:
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
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.view.View;
import android.widget.TextView;
import android.widget.Button;
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private URL url;
HttpURLConnection urlConnection;
private InputStream inputstream;
private BufferedReader reader;
private StringBuilder stringbuilder;
private final int get = 100;
private TextView show;
private Button send;
private Handler handler = new Handler()
{
@Override
public void handleMessage(Message msg) {
switch (msg.what)
{
case get:
show.setText(msg.obj.toString());
}
}
};;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initEvent();
}
private void initView() {
show = (TextView)findViewById(R.id.show);
send = (Button)findViewById(R.id.send);
}
private void initData() {
new Thread(new Runnable() {
@Override
public void run() {
try{
url = new URL("http://192.168.1.15:8080/aa/get_data.json");
urlConnection = (HttpURLConnection)url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setReadTimeout(8000);
urlConnection.setConnectTimeout(8000);
urlConnection.setDoOutput(true);
urlConnection.connect();
if (urlConnection.getResponseCode() == 200)
{
stringbuilder = new StringBuilder();
inputstream = urlConnection.getInputStream();
reader = new BufferedReader(new InputStreamReader(inputstream, "gbk"));
String str;
while ((str = reader.readLine()) != null)
{
stringbuilder.append(str);
}
Message message = new Message();
message.what = get;
message.obj = stringbuilder.toString();
handler.sendMessage(message);
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}
private void initEvent() {
send.setOnClickListener(this);
}
@Override
public void onClick(View view) {
initData();
}
}
最后说几句:android对于网络请求的操作我们都要放在线程里面,否则就会出错,而且要记得给添加网络权限,否则不能访问,最后是ip,是无线网的ip(在cmd框中输入ipconfig可以看见这些ip),如果分不清的话,可以发个链接给手机,不断换ip,看看哪个手机可以访问,就用哪个。
代码易懂,我也不解释了,有什么问题欢迎大家前来提问。