Atitit.嵌入式web 服务器 java android最佳实践

1. Android4.4.21

2. 自己的webserver1

3. CyberHTTP for Java  cybergarage6

1. Android4.4.2 

First使用jetty9,三说jdk编译级别非常高的...

i-jetty 就是jetty6的apk版本..马用..

使用jetty6 ,三,jpg都ok....大的文件就jetty.io.EofException..找到资料没法儿解除...放弃..jetty6 的bug应该..

子好自己实现web  server兰...

AtiPlat_vodcp/bin/classes

/AtiPlat_vodcp/src/com/attilax/web/HttpServer.java

差不多也ok兰.就是性能稍微不行...

CyberHTTP for Java  cybergarage

CyberHTTP 这个很不错...走这个兰啊..

作者::  ★(attilax)>>>   绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 汉字名:艾龙,  EMAIL:[email protected]

转载请注明来源: http://www.cnblogs.com/attilax/

2. 自己的webserver

package com.attilax.web;

import java.io.File;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.net.InetAddress;

import java.net.ServerSocket;

import java.net.Socket;

import javax.servlet.ServletOutputStream;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import jcifs.smb.SmbFile;

import org.mortbay.jetty.Handler;

import org.mortbay.jetty.handler.AbstractHandler;

import com.attilax.util.StreamUtil;

/**

* @author thomaslwq

* @version 创建时间:Sep 5, 2012 9:59:16 PM 类说明

*/

public class HttpServer {

/**

* @param args

*/

// WEB_ROOT是服务器的根目录

public static final String WEB_ROOT = System.getProperty("user.dir")

+ File.separator + "webroot";

// 关闭的命令

private static final String SHUTDOWN_COMMAND = "/SHUTDOWN";

private int port;

private Handler handler;

public HttpServer(int port) {

this.port = port;

}

public static void main(String[] args) {

// TODO Auto-generated method stub

Handler handler = new AbstractHandler() { // 创建一个句柄

public void handle(String target, HttpServletRequest request,

HttpServletResponse response, int dispatch)

throws IOException {

// target zosh url

// response.setContentType("text/html");

// response.setContentType("text/html");

response.setStatus(HttpServletResponse.SC_OK);

// response.setHeader("Connection", "Keep-Alive");

//  response.setHeader("Keep-Alive", "timeout=2000");

//response.setHeader("Content-Type", "image/jpeg");

response.setHeader("Content-Type", "video/mp4");

response.setHeader("Accept-Ranges", "bytes");

response.setHeader("Server", "AtiWebServer");

ServletOutputStream outputStream = response.getOutputStream();

System.out.println("----handle");

// if("1".equals("1"))

// t(outputStream);

String smb = request.getParameter("smb");

if (smb == null)

return;

SmbFile file = new SmbFile(smb);

System.out.println(" ---jetty6FilesServer handle start ");

System.out.println("--smb file is exist:" + file.exists());

// file length

long contentLen = file.length();

try {

response.setContentLength(Integer.parseInt(String

.valueOf(contentLen)));

} catch (Exception e) {

e.printStackTrace();

response.setContentLength(Integer.MAX_VALUE);

}

InputStream contentIn = file.getInputStream();

((Response) response).wirteNflushHead();

// ( ( AtiServletOutputStream )outputStream).wirteNflushHead();

new StreamUtil().convertStream(contentIn, outputStream);

System.out.println(" ---jetty6FilesServer handle finish ");

// response.getWriter().println("<h1>Hello world</h1>");

// ((Request) request).setHandled(true);

}

private void t(ServletOutputStream outputStream) throws IOException {

{

// 找不到文件

String errorMessage = "HTTP/1.1 200 OK\r\n"

+ "Content-Type: text/html\r\n"

+ "Content-Length: 4\r\n" + "\r\n" + "okkk";

byte[] bytes = errorMessage.getBytes();

outputStream.write(bytes);

outputStream.flush();

// return;

}

}

};

HttpServer server = new HttpServer(7788);

server.setHandler(handler);

System.out.println("start..");

server.start();

}

private void setHandler(Handler handler) {

this.handler = handler;

}

public void start() {

ServerSocket serverSocket = null;

// int port = 7788;

try {

serverSocket = new ServerSocket(port, 100);

while (true) {

Socket socket = serverSocket.accept();

sinlgeHandle(socket);

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

private void sinlgeHandle(final Socket socket) {

Runnable r = new Runnable() {

public void run() {

try {

// Socket socket = null;

InputStream input = null;

OutputStream output = null;

input = socket.getInputStream();

output = socket.getOutputStream();

// 封装request请求

Request request = new Request(input);

request.parse();

// 封装response对象

Response response = new Response(output);

response.setRequest(request);

// response.sendStaticResource();

response.exeHandler(handler);

socket.close();

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

return;

}

}

};

new Thread(r).start();

}

}

3. CyberHTTP for Java  cybergarage

package demo.playfile.service;

import org.cybergarage.http.HTTPServer;

import demo.playfile.util.FileServer;

public class AtiHttpServer {

public static void main(String[] args) {

HTTPServer srv=new HTTPServer();

srv.open("127.0.0.1", 7788);

srv.addRequestListener(new FileServer());

System.out.println("---http start");

srv.start();

System.out.println("---http finish over");

}

}

时间: 2024-07-29 12:43:44

Atitit.嵌入式web 服务器 java android最佳实践的相关文章

atitit. web 在线文件管理器最佳实践(1)--- elFinder 的使用流程解决之道 。打开浏览服务器文件夹java .net php

atitit. web 在线文件管理器最佳实践(1)--- elFinder 的使用流程解决之道 .打开浏览服务器文件夹java .net php 1. 环境:::项目java web,需要打开浏览服务器文件夹挑选文件,在返回... 1 2. 在线文件管理器要实现的基本的功能::指定开始目录,指定getfile回调 1 3. 组件选型:: elFinder (3M) ,,php web ftp 1 4. elFinder 的概念 1 5. elFinder  1.x 的使用过程 2 6. elF

Atitit. 解压缩zip文件 的实现最佳实践 java c# .net php

Atitit. 解压缩zip文件 的实现最佳实践 java c# .net php 1. Jdk zip 跟apache ant zip 1 2. Apache Ant包进行ZIP文件压缩,upzip 大概流程.. 1 3. 读文件名称ok,但是cant读取到input说NPE.. 2 4. Ant1.8.2.jar 2 5. #---详细code 2 6. 参考 4 1.  Jdk zip 跟apache ant zip 下面实现的功能是zip文件中的图像文件解压到当前目录下,用jdk自带的处

Atitit.500 503 404错误处理最佳实践oak

Atitit.500 503 404错误处理最佳实践oak 1. 错误处理的流程(捕获>>日志>>db>>email alert) 1 2. 错误的捕获:struts级别,filter,jsp 级别,,app level 1 2.1. Struts 的错误捕获 1 2.2. jsp 的异常捕获 2 2.3. app level异常捕获 2 3. 错误日志 3 1. 错误处理的流程(捕获>>日志>>db>>email alert) 2.

最重要的 Java EE 最佳实践

参考:IBM WebSphere 开发者技术期刊: 最重要的 Java EE 最佳实践 IBM WebSphere 开发者技术期刊: 最重要的 Java EE 最佳实践 2004 年 IBM? WebSphere? 开发者技术期刊中曾发表过一篇名称类似的文章,本文是其更新版本.这个修正版中考虑了一些不断变化的技术趋势,更重要的是推荐了一些作者认为应当广泛遵循.但尚未广泛遵循的实践. 2 评论: Keys Botzum, 高级技术人员 , EMC Kyle Brown, 杰出工程师, EMC Ru

嵌入式web服务器

现在在嵌入式设备中所使用的web服务器主要有:boa.thttpd.mini_httpd.shttpd.lighttpd.goaheand.appweb和apache等. Boa 1.介绍 Boa诞生于1991年,作者Paul Philips.是开源的,应用很广泛,特别适合于嵌入式设备,网上流行程度很广.它的官方网站说boa是最受人喜爱的嵌入式web服务器.功能较为强大,支持认证,cgi等.Boa 是一个单任务的HTTP SERVER,它不像传统的web服务器那样为每个访问连接开启一个进程,也不

提高 Web 站点性能的最佳实践

本文内容 提高 Web 站点性能的最佳实践 最大限度减少 HTTP 请求 使用内容分发网络(CDN) 添加 Expires 或 Cache – Control 头 Gzip 组件 CSS 放在页面顶部 JavaScript 放在页面底部 避免 CSS 表达式 使用外部 JavaScript 和 CSS 减少 DNS 查询 精简 JavaScript 和 CSS 避免重定向 删除重复的脚本 配置 ETags 使得 Ajax 可缓存 尽早强制地发送缓冲给客户端 用 GET 发送 Ajax 请求 延迟

Android最佳实践之高效的应用导航

设计(一)- 规划Screens和他们之间的关系 原文地址:http://developer.android.com/training/design-navigation/screen-planning.html#beyond-simplistic-design 设计和开发Android应用程序的第一个步骤是确定用户能够查看和处理应用.一旦你知道用户与之交互的应用程序之间交互什么数据,下一步就是设计交互,允许用户导航到app的不同部分,进入和退出应用程序中的界面. 这篇文章开始向你展示如何规划高

转 Web程序优化的最佳实践:Cookie、图片及移动应用篇

[编者按]来自Yahoo!的Exceptional Performance团队为我们带来了改善Web性能的最佳实践方案.为此,他们为此进行了 一系列的实验.开发了各种工具.写了大量的文章和博客并在各种会议上参与探讨.最佳实践的核心就是提高网站性能.通过各种努力,xcetional Performance团队总结出了一系列可以提高网站速度的方法.可以分为 7 大类 34 条.包括内容.服务器.cookie.CSS.JavaScript.图片.移动应用等七部分. 延伸阅读: Web程序优化的最佳实践

atitit.表格的绑定client side 最佳实践

atitit.表格的绑定client side 最佳实践 1. 框架选型 1 2. #---原理和流程 1 1. 方法1 1 2. Dwr 例子 1 3. 方法2 2 4. Jq例如 2 1. 框架选型 Easyui 好..走十难调整??? 嘎自的表格只好js jvc 兰,,,angular Dwr也能了... 2. #---原理和流程 1. 方法1 获得所有的行,第一的头行except,第二模板line,..排除,,,在的所有的数据行删除. 遍历表格模板tr获得tds的所有的id(yash