写了个简单android的C/S应用,总结一下,方便自己下次使用也希望能够帮到学android的朋友们。
1. 软硬件准备
1.1 服务器端
使用Ubuntu 10.10(64位), jdk 1.6 和tomcat7。
1.2 Android客户端
使用Android4.1.2真机,开发使用了从android官网上下载的sdk和eclipse(win7的64位版本)。
2. 服务器开发
2.1 tomcat 配置运行
tomcat 运行很简单,直接附上shell命令。
tar -zxvfapache-tomcat-7.0.34.tar.gz
cdapache-tomcat-7.0.34/bin/
./startup.sh
2.2 servlet 代码及编译
由于我的目的只是写个小例子,所以就只是修改了下tomcat的样例代码。
代码路径:apache-tomcat-7.0.34/webapps/examples/WEB-INF/classes/HelloWorldExample.java
代码正文:
/*
*Licensed to the Apache Software Foundation (ASF) under one or more
*contributor license agreements. See theNOTICE file distributed with
* thiswork for additional information regarding copyright ownership.
* The ASFlicenses this file to You under the Apache License, Version 2.0
* (the"License"); you may not use this file except in compliance with
* theLicense. You may obtain a copy of theLicense at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unlessrequired by applicable law or agreed to in writing, software
*distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUTWARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See theLicense for the specific language governing permissions and
*limitations under the License.
*/
importjava.io.IOException;
importjava.io.PrintWriter;
importjava.util.ResourceBundle;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importjava.io.File;
importjava.io.FileOutputStream;
importjava.io.PrintStream;
/**
* The simplest possible servlet.
*
* @author James Duncan Davidson
*/
publicclass HelloWorldExample extends HttpServlet {
private static final long serialVersionUID= 1L;
@Override
public void doGet(HttpServletRequestrequest,
HttpServletResponseresponse)
throws IOException, ServletException
{
//打印从客户端传来的参数值
System.out.println("Testresults----->"+request.getParameter("test"));
ResourceBundle rb =
ResourceBundle.getBundle("LocalStrings",request.getLocale());
response.setContentType("text/html");
PrintWriter out = response.getWriter();
//回写
out.println("<html>");
out.println("<head>");
String title =rb.getString("helloworld.title");
out.println("<title>" +title + "</title>");
out.println("</head>");
out.println("<bodybgcolor=\"white\">");
// note that all links are created tobe relative. this
// ensures that we can move the webapplication that this
// servlet belongs to to a differentplace in the url
// tree and not have any harmful sideeffects.
// XXX
// making these absolute till we workout the
// addition of a PathInfo issue
out.println("<ahref=/"/helloworld.html/">"/index.html);
out.println("<imgsrc=/"/images/code.gif height=24 " +
"width=24 align=rightborder=0 alt=\"view code\"></a>");
out.println("<ahref=/"/index.html/">"/index.html);
out.println("<imgsrc=/"/images/return.gif height=24 " +
"width=24 align=rightborder=0 alt=\"return\"></a>");
out.println("<h1>" +title + "</h1>");
out.println("</body>");
out.println("</html>");
}
}
然后就是编译,这里有两点需要注意。
1. javac 之前需要设置classpath。
命令:export CLASSPATH= apache-tomcat-dir/lib/servlet-api.jar(apache-tomcat-dir请换成相应的tomcat目录)
2. 要让改动生效要重起一下tomcat服务器。
命令:./shutdown.sh && ./startup.sh
3. Android客户端开发
3.1 应用代码
我使用了google IDE中的HelloWorld参考代码稍加改动,附源码如下(MainActivity.java)。
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
public classMainActivity extends Activity {
private static final String TAG ="TestAppMain";
//异步方式打开网络连接
privateclassHttpThreadextendsThread{
@Override
public void run() {
// TODO Auto-generated method stub
HttpURLConnectionurlConnection = null;
try{
URL url = new
Lavaca是一个全功能的HTML5应用框架,专注于快速、简便的构建Web应用。Lavaca是一个完整的构建系统,内建了配置以适应于不同的环境。
随着构建系统打包HTML、CSS和JavaScript,还有一个JavaScript文档生成根据,一个单元测试框架和数个通用的JavaScript库。还绑定了一个JavaScript MVC框架,帮助组织JavaScript代码。
JavaScript MVC框架还带有一个JavaScript模板引擎以及其它库。
Lavaca还提供了一个CSS reset、转换框架,一套CSS3帮助器,一套PhoneGap帮助器。Lavaca能确保所有这些不同的组件能正确地在一起工作。
Lavaca仍然是一个轻量级应用框架,内建了可扩展性。它也是一个模块化的应用框架,意味着你可以移除不使用的模块,保持应用核心的轻量级。
Demo: https://github.com/mutualmobile/lavaca/tree/master/samples
License: MIT License
此贴虽短,但是这个问题困扰了一位C语言程序员一天。
看代码:
#include <stdlib.h> #include <stdio.h> main() { int a; a*=1; printf("%d",a); }
在vs2008上的运行结果:
在VC++6.0上的运行结果:
没有报错。
总结如下:
在vs2008下,变量未赋初值,直接编译,不报错。运行时报错。
在VC++6.0下,变量未赋初值,直接编译,不报错。运行时不报错。
看来,使用高版本的IDE还是可以提高编程效率的。