因为学Android已经有一段时间了,但是在学校,服务器方面是个短板啊,没有专门的服务器拿给我们学生练手,所以只有自己找办法了。当然,Tomcat就是不二的选择了。

在网上看了看资料,还是觉得自己记录下来比较好。

因为我是学Android的,所以jdk什么的已配置好了。如果不知道,请看《java的环境变量配置

首先我们先要下载Tomcat:http://tomcat.apache.org/(请自行选择版本),我用的是Tomcat 7.0.55。

我下载下来是一个压缩包,选择好路径后,进行解压。(此步骤即安装)

解压后的文件有这些:

然后,我们双击bin文件夹,找到一个bat文件(windows系统下哈),如图:

双击该文件。(即启动Tomcat服务)

如果启动不成功,一般的情况是控制台出来一下立即消失,说明Tomcat没有找到Java的运行时环境。需要配置jdk的环境变量。

如果启动成功,会出现以下启动成功信息:

启动成功以后,我们打开浏览器,在地址栏输入http://localhost:8080/,即可参见如下界面(输入:http://127.0.0.1:8080也可以):

此时,我们的Tomcat算是完整的成功启动了。

如果你要看服务状态,可点击ServiceStatus按钮:

此时,会弹出对话框让你输入账号和密码,我们先点击取消,此时会跳转到另一个页面:

将该英文翻译出来,即可知道,是让我们在cof/tomcat-users.xml中添加虚线框中的那两句代码。红线处的用户名和密码就是登陆时需要的。

登陆后的界面如下:(基本配置都能看见)

下面,我们通过一个简单的例子来使用一下:

在……apache-tomcat-7.0.55\webapps\ROOT\mytest目录下放上一张名为tomcat.png的图片。

(注意:tomcat解压后的webapps文件夹下的ROOT文件夹是tomcat的默认部署目录,mytest是我在ROOT文件夹下新建的一个文件夹)

下面,我们做一个Android的图片查看器:

先是布局main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" > <TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="图片路径" /> <EditText android:id="@+id/et_path"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="请输入图片路径"/> <Button android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="look"
android:text="查看"/> <ImageView android:id="@+id/iv"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:src="@drawable/ic_launcher"
android:scaleType="centerInside"/> </LinearLayout>

然后是MainActivity:

package cn.itcast.imagelooker;

import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL; import org.apache.http.conn.ConnectTimeoutException; import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast; public class MainActivity extends Activity { private EditText et_path;
private ImageView iv; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main); et_path = (EditText) findViewById(R.id.et_path);
iv = (ImageView) findViewById(R.id.iv);
} public void look(View v) {
String path = et_path.getText().toString();
if (path.equals("")) {
Toast.makeText(this, "图片的路径为空", 1).show();
} else {
try {
// 另一种方式
// URL url = new URL(path);
// Bitmap bitmap = null;
// bitmap = BitmapFactory.decodeStream(url.openStream());
// iv.setImageBitmap(bitmap); // 构建路径
URL url = new URL(path);
// //打开连接
HttpURLConnection conn = (HttpURLConnection)
url.openConnection();
//请求方式
conn.setRequestMethod("GET");
//超时时间
conn.setConnectTimeout(5000);
Bitmap bitmap = null;
bitmap = BitmapFactory.decodeStream(url.openStream());
if(conn.getResponseCode() == 200){
InputStream is = conn.getInputStream(); // 把流转化为图片
Bitmap bitmap1 = BitmapFactory.decodeStream(is);
if(bitmap1 == null){
Toast.makeText(this, "获取的图片流为空", 1).show();
}else{
iv.setImageBitmap(bitmap1);
}
}else{
Toast.makeText(this, "输入的路径不存在", 1).show();
} }catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
if (e instanceof MalformedURLException) {
Toast.makeText(this, "输入的路径格式错误", 1).show();
} else if (e instanceof ConnectTimeoutException) {
Toast.makeText(this, "连接超时错误", 1).show();
} else if (e instanceof IOException) {
Toast.makeText(this, "获取数据错误", 1).show();
} else {
Toast.makeText(this, "未知错误", 1).show();
}
}
} }}

另外,千外不要忘记权限:

<uses-permission android:name="android.permission.INTERNET"/>

运行程序。如图:

(在输入框中正确输入IP地址后,点击按钮可查看名为tomcat.png的图片)

注意:为什么输入是的地址是100.70.132.251?

100.70.132.251这个地址是通过ipconfig获取得到的计算机地址。Genymotion与android模拟器(simulator)不同,自带Android模拟器使用的地址应该是10.0.2.2。10.0.2.2 是模拟器设置的特定ip,是你的电脑的别名alias记住,因此在模拟器上用10.0.2.2访问你的电脑本机。记住不能使用localhost:8080和127.0.0.1这两个路径,因为android模拟器(simulator)把它自己作为了localhost,也就是说,代码中使用localhost或者127.0.0.1来访问,都是访问模拟器自己!

下面推荐一篇Tomcat安装配置的博文,比我讲得更加详细。

http://www.cnblogs.com/Johness/archive/2012/07/20/2600937.html

Android中Tomcat的简单配置和使用的更多相关文章

  1. Linux中vim的简单配置

    本文主要分享Linux中vim的简单配置 ★配置文件的位置     在目录/etc.下面,有个名为vimrc的文件,这就是系统中公共的vim配置文件,对所有用户都开放.而在每个用户的主目录下,都可以自 ...

  2. [原创]Android中LocationManager的简单使用,获取当前位置

    Android中LocationManager的提供了一系列方法来地理位置相关的问题,包括查询上一个已知位置:注册/注销来自某个 LocationProvider的周期性的位置更新:以及注册/注销接近 ...

  3. android中的回调简单认识

    首先说一下最抽象的形式--2个类,A类和B类.A类含有1个接口.1个接口变量.(可能含有)1个为接口变量赋值的方法以及1个会使用接口变量的"地方";B类实现A中的接口,(可能)含有 ...

  4. Android中ProgressDialog的简单示例

    网上一般对进度条的示例都是如何显示,没有在任务结束如何关闭的文章,参考其他文章经过试验之后把整套进度条显示的简单示例如下: 建立android工程等工作都略去,Google一下就可以了. 下面来介绍主 ...

  5. iOS 和Android中的正则表达式简单使用

    ios 中需要使用NSRegularExpression类,NSTextCheckingResult类. 下面给出最基本的实现代码 NSRegularExpression *regex = [NSRe ...

  6. Android中SharePreferences的简单实现

    Android中提供SharePreferences这种轻量级的数据存储模式,这种模式能够存储少量数据,并能为自身和其他应用提供数据接口.相对于其他数据存储方式,SharePreferences更加轻 ...

  7. Android中实现一个简单的逐帧动画(附代码下载)

    场景 Android中的逐帧动画,就是由连续的一张张照片组成的动画. 效果 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 ...

  8. 在 Android 中如何优雅地配置私密信息

    在实际的项目开发中,经常会用到一些第三方的 SDK ,而使用这些 SDK 基本上都是需要配置 APPKEY 或 APPSECRET 等信息.此外 APP 打包时需要 KEYSTORE , STOREP ...

  9. Android中SharedPerforences的简单使用示例 --Android基础

    SharedPreferences是Android平台上一个轻量级的存储类,用来保存应用的一些常用配置,比如Activity状态,Activity暂停时,将此activity的状态保存到SharedP ...

随机推荐

  1. Use ALTER DATABASE to Move Databases

    Use ALTER DATABASE to Move Databases Follow Our Daily Tips •facebook.com/TechNetTips• twitter.com/Te ...

  2. Lodop Web打印插件使用

    <object id="LODOP_OB" classid="clsid:2105C259-1E0C-4534-8141-A753534CB4CA" st ...

  3. iOS开发核心语言Objective C —— 所有知识点总结

    C和OC对比 OC中主要开发在什么平台上的应用程序?答:可以使用OC开发Mac OS X平台和iOS平台的应用程序 OC中新增关键字大部分是以什么开头?答:OC中新增关键字大部分是以@开头 OC中新增 ...

  4. 转载MSDN 在ASP.NET 中执行 URL 重写

    转载文章原网址 http://msdn.microsoft.com/zh-cn/library/ms972974.aspx 摘要:介绍如何使用 Microsoft ASP.NET 执行动态 URL 重 ...

  5. android最快的模拟器

    https://www.genymotion.com/ genymotion Genymotion是一套完整的工具,它提供了Android虚拟环境.它简直就是开发者.测试人员.推销者甚至是游戏玩家的福 ...

  6. 【C++深入浅出】设计模式学习之简单工厂

    看大话设计模式中大牛对小菜的精辟点评,也写了一个计算器程序,并跟着点评一路改良,还是不过瘾,应用了类模板和异常捕捉机制重写了程序. 本文不能算干货,恰当的比方是饭前甜点,吃一口有点味.有点意思,总归太 ...

  7. 剑指OFFER之栈的压入、弹出序列(九度OJ1366)

    题目描述: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈 ...

  8. 多线程操作Coredata(转)

    第一步:搭建 Core Data 多线程环境这个问题首先要解决的是搭建 Core Data 多线程环境.Core Data 对并发模式的支持非常完备,NSManagedObjectContext 的指 ...

  9. 淘宝IP地址查询

    官方网址:http://ip.taobao.com/index.php 相关文章: http://www.cnblogs.com/zetee/p/3482085.html http://www.cnb ...

  10. 使用 jsPlumb 绘制拓扑图 —— 异步载入与绘制的实现

    本文实现的方法能够边异步载入数据边绘制拓扑图. 有若干点须要说明一下: 1.  一次性获取全部数据并绘制拓扑图. 请參见文章: <使用 JsPlumb 绘制拓扑图的通用方法> ; 本文实现 ...