- 浏览: 1089217 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
skyesx:
这是2PC实现,更常用的是一个柔性事务的实现,可以参考http ...
Spring分布式事务实现 -
ddbird:
这第一句就不严谨“分布式事务是指操作多个数据库之间的事务”,显 ...
Spring分布式事务实现 -
呵呵6666:
基于互联网支付系统的微服务架构分布式事务解决方案http:// ...
Spring分布式事务实现 -
小黄牛:
写得不错,交流群:472213887
Spring分布式事务实现 -
jiaoqf321456:
这明明是用的apache的压缩,给ant.jar有半毛钱关系吗 ...
使用ant.jar进行文件zip压缩
一、嵌入式运行Jetty并提供上传文件功能
1、定义处理请求的Handler
2、嵌入式运行Jetty
3、用HttpClient上传文件进行测试
二、JDK6自带的HttpServer
1.Server端
2.client端测试
1、定义处理请求的Handler
public class DispatchRequestHandler extends AbstractHandler { public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { request.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=utf-8"); response.setHeader("Cache-Control", "no-cache"); response.setStatus(HttpServletResponse.SC_OK); baseRequest.setHandled(true); if(target.contains("/upload")){//process file upload processUploadFileRequest(request, response); }else{//other request response.getWriter().println("<h1>Hello World</h1>"); response.getWriter().println("<li>Request url: " + target + "</li>"); response.getWriter().println("<li>Server port: " + request.getServerPort() + "</li>"); } } private void processUploadFileRequest(HttpServletRequest request, HttpServletResponse response){ try{ String uploadPath = "D:/upload"; File uploadFolder = new File(uploadPath); if(!uploadFolder.exists()){ uploadFolder.mkdirs(); } boolean isMultipart = ServletFileUpload.isMultipartContent(request); if(!isMultipart){ throw new Exception("not file upload request!"); } DiskFileItemFactory factory = new DiskFileItemFactory(); //factory.setSizeThreshold(4094); //factory.setRepository(new File("D:/temp/buffer")); ServletFileUpload upload = new ServletFileUpload(factory); upload.setSizeMax(10*1024*1024); FileItemIterator iter = upload.getItemIterator(request); while (iter.hasNext()) { FileItemStream item = iter.next(); String name = item.getFieldName(); InputStream stream = item.openStream(); if (item.isFormField()) { System.out.println("Form field " + name + " with value " + Streams.asString(stream) + " detected."); } else { System.out.println("File field " + name + " with file name " + item.getName() + " detected."); File savedFile = new File(uploadPath, item.getName()); FileOutputStream fos = new FileOutputStream(savedFile); byte[] buff = new byte[1024]; int len = 0; while((len = stream.read(buff)) > 0){ fos.write(buff, 0, len); } fos.close(); } } /* List<FileItem> items = upload.parseRequest(request); Iterator<FileItem> it = items.iterator(); while(it.hasNext()){ FileItem item = (FileItem)it.next(); if(item.isFormField()){ System.out.print(item.getFieldName()+"="+item.getString()); }else{ String fileName = item.getName(); //item.getInputStream(); System.out.println(fileName); if(fileName != null){ File savedFile = new File(uploadPath, fileName); item.write(savedFile); } } } */ response.getWriter().println("1");//success }catch(Exception e){ e.printStackTrace(); try{ response.getWriter().println("0");//fail }catch(Exception ex){} } } }
2、嵌入式运行Jetty
public class MainEntrance { public static void main(String[] args){ Server server = new Server();//jetty server SelectChannelConnector connector_1 = new SelectChannelConnector(); connector_1.setPort(8088); SelectChannelConnector connector_2 = new SelectChannelConnector(); connector_2.setPort(8089); server.setConnectors(new Connector[]{connector_1,connector_2}); server.setHandler(new DispatchRequestHandler()); try { server.start(); } catch (Exception e) { e.printStackTrace(); } } }
3、用HttpClient上传文件进行测试
public class TestUpload { public static void main(String[] args) { String targetURL = "http://127.0.0.1:8088/upload"; File uploadFile = new File("D:/test/IMG_5352.JPG"); HttpClient httpClient = new DefaultHttpClient();//apache httpClient HttpPost httpPost = new HttpPost(targetURL); try { FileBody fileBody = new FileBody(uploadFile); StringBody comment = new StringBody("测试上传文件",Charset.forName("UTF-8")); MultipartEntity multipartEntity = new MultipartEntity(); multipartEntity.addPart("upload", fileBody); multipartEntity.addPart("comment", comment); httpPost.setEntity(multipartEntity); HttpResponse response = httpClient.execute(httpPost); int statusCode = response.getStatusLine().getStatusCode(); if(statusCode == HttpStatus.SC_OK){ HttpEntity resEntity = response.getEntity(); System.out.println(EntityUtils.toString(resEntity)); } } catch (Exception e) { e.printStackTrace(); } finally { try { httpClient.getConnectionManager().shutdown(); } catch (Exception ignore) { } } } }
二、JDK6自带的HttpServer
1.Server端
public class JDK6HTTPServer { public static void run(){ try{ HttpServerProvider provider = HttpServerProvider.provider(); HttpServer httpServer = provider.createHttpServer(new InetSocketAddress(80),100);//concurrent request 100 httpServer.createContext("/", new JDK6HTTPServer().new JDK6HTTPServerHandler()); httpServer.setExecutor(null);//creates a default executor httpServer.start(); System.out.println("JDK6HTTPServer started..."); }catch(Exception e){ } } public class JDK6HTTPServerHandler implements HttpHandler{ public void handle(HttpExchange httpExchange) throws IOException { //System.out.println(httpExchange.getRequestURI()); InputStream inputStrean = httpExchange.getRequestBody(); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStrean)); String temp = null; while((temp = reader.readLine()) != null){ System.out.println("client request:"+temp); } StringBuffer buff = new StringBuffer(); buff.append("<h1>Hello World</h1>"); httpExchange.sendResponseHeaders(200, buff.toString().getBytes().length); OutputStream outputStream = httpExchange.getResponseBody(); outputStream.write(buff.toString().getBytes()); outputStream.close(); } } public static void main(String[] args){ run(); } }
2.client端测试
public class TestJDK6HTTPServer { public static void requestServer(){ try{ URL url = new URL("http://127.0.0.1"); HttpURLConnection urlConn = (HttpURLConnection) url.openConnection(); urlConn.setDoOutput(true); urlConn.setDoInput(true); urlConn.setRequestMethod("POST"); String msg = "测试内容"; OutputStream out = urlConn.getOutputStream(); out.write(msg.getBytes()); out.flush(); if(urlConn.getContentLength() != -1 && urlConn.getResponseCode() == 200) { InputStream in = urlConn.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(in)); String temp = ""; while ((temp = reader.readLine()) != null) { System.err.println("server response:" + temp); } reader.close(); in.close(); urlConn.disconnect(); } }catch(Exception e){ e.printStackTrace(); } } public static void main(String[] args){ ExecutorService exec = Executors.newCachedThreadPool(); for (int i = 0; i < 20; i++) { Runnable run = new Runnable() { public void run() { requestServer(); } }; exec.execute(run); } exec.shutdown(); } }
- lib.rar (2 MB)
- 下载次数: 1
发表评论
-
使用zxing.jar生成二维码
2015-10-15 13:52 01、ZxingCodeUtils /** * 使用Zx ... -
Java生成条形码与二维码
2015-09-29 11:02 0一、一维条形码 /** * 利用jbarcode.ja ... -
将html特殊码( &#x)转换成字符
2015-06-09 11:54 0public static void main(St ... -
unicode码的分布情况
2014-06-25 16:33 0******************************* ... -
Java多线程编程
2013-10-16 13:45 0一、线程安全的延迟初始化 1、基于volatile的双重检查锁 ... -
Java常用方法整理
2013-06-13 16:00 01、判断是否为中文字符 /** * 判断是否为中文 ... -
使用servicemix实现FTP连接池
2013-06-13 13:17 0一、配置文件 <?xml version=" ... -
Windows命令与BAT脚本示例整理
2013-05-30 16:50 0一、将后缀后为".txt-"的文件全部重命 ... -
使用Quartz执行定时任务
2012-05-24 11:00 0一、在application中运用 (1)定义任务 pac ... -
Java内存泄漏分析与解决方案
2012-03-18 13:49 0作为Internet最流行的编程语言之一,Java现正非常 ... -
java访问FtpSever
2011-10-09 15:18 0使用apache common-net包来实现。 ... -
JNI(Java Native Interface)的使用
2015-06-30 13:12 3212Java JNI是Java Native Interf ... -
有关Hibernate Tools的使用
2010-12-24 15:20 0<一>、生成实体(Entiry)时,自定义反向生成 ... -
使用iText-2.1.7生成PDF
2010-11-25 21:30 0public class PDFUtil { /* ... -
使用iText-2.1.7生成word
2010-11-25 21:17 0public class RTFUtil { pu ... -
FusionCharts参数说明
2010-04-08 12:51 0功能特性 animation ... -
使用ant.jar进行文件zip压缩
2010-02-02 11:40 12410import java.io.BufferedInputS ... -
使用struts2中的codebehind插件
2010-01-11 13:10 0codebehind plugin是一个可以简化struts2 ... -
使用JUnit4
2010-01-04 14:23 2934一、介绍 JUnit4 基本 ... -
Eclipse JPA Plugin
2010-01-04 14:21 8828一、Hibernate Tools Hibernate ...
相关推荐
一个用国产的嵌入式操作系统RT-Thread开发的Http Server程序,可以在多种MCU上运行,采用Keil编译,对想要学习嵌入式操作系统及硬件底层编程的朋友来说是个很不错的例程。
HTTP 服务器的实现 实现了基本的 GET 和 POST 方法 支持 x86 Windows Linux ARM MIPS 和其他 POSIX 平台 支持嵌入式和独立运行两种模式 Is an embeddable cross platform implementation of the HTTP server for ...
由于第一个要求,避免了运行时多态性,但也支持基于运行时的多态性。 执照 该库根据 Boost 软件许可 1.0 版的条款获得许可。 您可以在此库中找到许可证的副本。 建造 依赖关系 用于构建的 CMake 增强库 文献资料 ...
自2004年以来在市场上,它被大量的开源和商业产品所使用-它甚至可以在国际空间站上运行! Mongoose使嵌入式网络编程变得快速,强大和容易。 在此处下载Mongoose源代码寻找完整的IoT固件解决方案? 查看Mongoose OS-...
pb_civet_server PB Civet Server,基于civetweb 1.10的嵌入式内存http / https服务器PB Civet服务器版本1.0 PureBasic 5.62,仅Win32构建,当前安德鲁·弗格森(空闲)2018 有关功能的civetweb项目的详细信息,请...
public class JettySample { public static void main(String[] args) throws Exception { // 创建Jetty HttpServer对象 HttpServer server = new HttpServer(); // 在端口8080上给HttpServer对象绑上一个listener...
带有rsh-over-http仿真的微型HTTP服务器。 编译后的二进制文件小于4k,可以处理并行请求,并且速度非常快。 它旨在在无头嵌入式设备上运行,以方便配置和状态报告。
STM32F103实现LWIP网络通信。 项目支持STM32F10X系列单片机调测和移植。 项目代码可直接编译、运行。
)用法HttpServer server = new HttpServer();//~ Add any request handlers// static file handler (from jar's resources) :server.addRequestHandler(new HttpStaticJarFileHandler());// static file handler ...
此代码的目的是展示如何将网站资产和内容开发从 windows(Visual Studio 和 powershell)转移到 os 独立平台。 ##Tools 为了构建这个项目,你... 如果您需要嵌入式 http-server,您可以运行npm install -g http-server
运行平台 windows linux 包含编译和使用方法 ...由于shttpd可以嵌入其他软件,因此可以非常容易的开发嵌入式系统的web server,官方网站上称shttpd如果使用uclibc/dielibc(libc的简化子集)则开销将非常非常低。
AI 操作由嵌入式模块处理,可以使用任何语言、任何堆栈轻松创建这些模块,只要该堆栈在主机上运行即可。Python、.NET、节点——任何适合你的。 CodeProject.AI 服务器作为 Windows 服务或在 Docker 下运行。任何...
* 数据库为 MySQL 5.0 及以上 / Oracle 9i 及以上 / SQL Server 2000 及以上 / Hsqldb 1.8.0及以上 / 任意支持 SQL 的数据库(需要定制) 以上软件除 Hsqldb 以外,其余软件均需用户自己安装好并能正常运行。...
GoAhead是一个开源(商业许可)、简单、轻巧、功能强大、可以在多个平台运行的嵌入式Web Server。GoAhead Web Server是为嵌入式实时操作系统(RTOS)量身定制的Web服务器。它的目标也许不在于WEB服务器市场,而是面向...
同时,Center Server 中包含一个嵌入式的 WebServer,用于服务器状态的查看、控制,也可以作为普通的 WebServer 提供 HTTP 服务。 Login Server、Base Server 和 Center Server 由一种叫做 Bridge 的机制连接在一起。...
语言:C,外壳程序平台:Linux说明:HTTP重定向服务器仅执行重定向的HTTP服务器。 与linux中的inetd框架一起使用。 目标是要在运行linux的嵌入式系统中使用非常小的Web服务器。
为使数控系统具备网络访问功能,通过移植嵌入式TCP/IP协议栈—uIP,并且编写网络控制芯片驱动程序接口以及能实现HTTP协议的通用应用程序,使数控系统具备Web服务器的功能。用户可以使用PC接入Internet,通过标准...
OpenCPU服务器既可以作为交互式R会话中的单用户开发服务器运行,也可以基于Apache2的多用户Linux堆栈运行。 整个系统是完全开源的,并已获得许可。 OpenCPU网站上有详细的文档和示例应用程序。 文献资料 官方 ...
上线 Docs / Tutorials / Info : : 快速,可移植的Go命令行实用程序,可通过HTTP提供文件目录。... 在嵌入式系统或Kubernetes集群上运行,以共享文件并在网络上托管静态网站(完整二进制文件小于5MB)。安装MacOS(带