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

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

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 forJavacybergarage

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

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

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

2.自己的webserver

packagecom.attilax.web;

importjava.io.File;

importjava.io.IOException;

importjava.io.InputStream;

importjava.io.OutputStream;

importjava.net.InetAddress;

importjava.net.ServerSocket;

importjava.net.Socket;

importjavax.servlet.ServletOutputStream;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

importjcifs.smb.SmbFile;

importorg.mortbay.jetty.Handler;

importorg.mortbay.jetty.handler.AbstractHandler;

importcom.attilax.util.StreamUtil;

/**

*@authorthomaslwq

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

*/

publicclassHttpServer {

/**

*@paramargs

*/

// WEB_ROOT是服务器的根目录

publicstaticfinalStringWEB_ROOT= System.getProperty("user.dir")

+ File.separator+"webroot";

// 关闭的命令

privatestaticfinalStringSHUTDOWN_COMMAND="/SHUTDOWN";

privateintport;

privateHandlerhandler;

publicHttpServer(intport) {

this.port=port;

}

publicstaticvoidmain(String[]args) {

//TODOAuto-generated method stub

Handlerhandler=newAbstractHandler() {// 创建一个句柄

publicvoidhandle(Stringtarget, HttpServletRequestrequest,

HttpServletResponseresponse,intdispatch)

throwsIOException {

// targetzoshurl

// 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");

ServletOutputStreamoutputStream=response.getOutputStream();

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

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

// t(outputStream);

Stringsmb=request.getParameter("smb");

if(smb==null)

return;

SmbFilefile=newSmbFile(smb);

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

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

// file length

longcontentLen=file.length();

try{

response.setContentLength(Integer.parseInt(String

.valueOf(contentLen)));

}catch(Exceptione) {

e.printStackTrace();

response.setContentLength(Integer.MAX_VALUE);

}

InputStreamcontentIn=file.getInputStream();

((Response)response).wirteNflushHead();

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

newStreamUtil().convertStream(contentIn,outputStream);

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

// response.getWriter().println("

Hello world

");

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

}

privatevoidt(ServletOutputStreamoutputStream)throwsIOException{

{

// 找不到文件

StringerrorMessage="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;

}

}

};

HttpServerserver=newHttpServer(7788);

server.setHandler(handler);

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

server.start();

}

privatevoidsetHandler(Handlerhandler) {

this.handler=handler;

}

publicvoidstart() {

ServerSocketserverSocket=null;

//intport = 7788;

try{

serverSocket=newServerSocket(port, 100);

while(true) {

Socketsocket=serverSocket.accept();

sinlgeHandle(socket);

}

}catch(Exceptione) {

//TODOAuto-generated catch block

e.printStackTrace();

}

}

privatevoidsinlgeHandle(finalSocketsocket) {

Runnabler=newRunnable() {

publicvoidrun() {

try{

// Socket socket = null;

InputStreaminput=null;

OutputStreamoutput=null;

input=socket.getInputStream();

output=socket.getOutputStream();

// 封装request请求

Requestrequest=newRequest(input);

request.parse();

// 封装response对象

Responseresponse=newResponse(output);

response.setRequest(request);

// response.sendStaticResource();

response.exeHandler(handler);

socket.close();

}catch(Exceptione) {

//TODOAuto-generated catch block

e.printStackTrace();

return;

}

}

};

newThread(r).start();

}

}

3.CyberHTTP forJavacybergarage

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");

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
httpkit是精巧的java嵌入式http服务器,超快的启动速度(实测仅需80毫秒),是tomcat、jetty的完美替代方案。 使用方法//起一个server实例 int port = 7777; HttpServer server = HttpServer.bind(port); //设置上下文路径 server.setContextPath("root"); //设置controller类的扫描包 server.packageSearchAndInit("com.lnwazg.main.ctrl"); //设置自动磁盘扫描 server.autoSearchThenAddWatchResourceDirRoute(); //监听在这个端口处 server.listen(); 然后访问文件列表: http://127.0.0.1:7777/root/list 访问具体的控制器 http://127.0.0.1:7777/root/base/index Controller类的写法package com.lnwazg.main.ctrl; import java.io.File; import java.util.ArrayList; import java.util.List; import com.lnwazg.httpkit.anno.BasePath; import com.lnwazg.httpkit.controller.Controller; /**  * 示例controller<br>  * 注解指定这个类的path  * @author nan.li  * @version 2016年11月30日  */ @BasePath("/base") public class FirstController extends Controller {     void index()     {         Person person = new Person();         person.age = "18";         person.name = "hudson";         List<Person> list = new ArrayList<>();         for (int i = 0; i < 5; i )         {             list.add(person);         }         person = new Person();         person.name = getParam("fff");         list.add(person);                  //输出abc         ok("abc");                  //输出一个json对象         //okJson(list);                  //        okJson(GsonHelper.gson.toJson(list));         //        okJson(list);         //        okJson(new FrontObj().success().setData(list));         //        okJson(success(list));         //        okJson(fail(list));         //        okJson(fail(list,10002,"转换错误"));         //        okJson(fail(10002, "转换错误"));         //        okJson(fail(10003));     }          void index2()     {         //输出一个文件         okFile(new File("c:\\1.jpg"));     }          public static class Person     {         String name;                  String age;     } } 标签:httpkit
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值