- 浏览: 1098417 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
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 3265Java 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 12483import java.io.BufferedInputS ... -
使用struts2中的codebehind插件
2010-01-11 13:10 0codebehind plugin是一个可以简化struts2 ... -
使用JUnit4
2010-01-04 14:23 3012一、介绍 JUnit4 基本 ... -
Eclipse JPA Plugin
2010-01-04 14:21 8866一、Hibernate Tools Hibernate ...
相关推荐
最后,`httpserver-test`这个文件可能是测试用例或示例代码,包含了一些使用Jetty实现HTTP服务器的实例,你可以通过查看这个文件来进一步学习和理解Jetty的使用方法。记住,实践是最好的老师,动手编写和运行代码将...
- 传统上,嵌入式Web Server是直接运行在嵌入式设备内部的,目的是为了发送简单的网页和处理CGI等基本网络请求。 - 随着Web技术的发展,传统的嵌入式Web Server已不能满足更多高级功能的需求,比如表单更新、实时...
本文从嵌入式系统和Web Server的基本原理出发,通过对HTTP请求的分析和SOCKET技术的应用,实现了在Arm开发板上可以运行的Web Server应用实例系统。 嵌入式系统 嵌入式系统是指专门为特定应用设计的计算机系统,...
Boa的源码简单、易于理解,适合在内存和处理能力受限的硬件上运行,比如微控制器或者嵌入式Linux系统。它支持基本的HTTP协议,包括静态网页服务和CGI(Common Gateway Interface)应用程序,使开发者可以创建动态...
嵌入式Web服务器是一个能够在嵌入式设备(如STM32微控制器)上运行的HTTP服务器,它接收来自客户端(通常是Web浏览器)的HTTP请求,并返回相应的HTTP响应,如HTML页面、图片或其他资源。这种服务器的核心是网络协议...
通常,当用户通过Web浏览器发送HTTP请求时,嵌入式WebServer会接收这个请求,解析其内容,然后执行相应的处理,如访问数据库、控制硬件设备或生成动态响应。处理完成后,WebServer将结果封装成HTTP响应返回给客户端...
Ethernet_httpserver - 副本 - 副本这个压缩包中的源代码到STM32F4xx开发板,我们可以运行这个嵌入式Web服务器,并通过计算机或路由器访问其IP地址,观察登录注册功能是否正常工作。 总之,STM32F407与LAN8720A...
嵌入式操作系统如VxWorks、μC/OS、Linux等,它们被设计来运行在特定硬件上,具有较小的内存占用和高效稳定的性能。嵌入式Web服务器能响应HTTP请求,并将监控的实时数据转换为Web页面。 嵌入式Web+Server远程监控...
这些操作系统能够高效地运行在微控制器上,同时提供必要的网络堆栈支持。 网络堆栈是构建Web服务器的关键组件。TCP/IP协议族负责设备间的通信,包括HTTP协议,它是Web服务器与客户端交互的基础。我们可以使用开源的...
2. **多平台支持**: `mongoose`不仅能在常见的Linux、Windows等操作系统上运行,还支持各种嵌入式操作系统,如FreeRTOS、uCLinux等。 3. **易于集成**: `mongoose`以库的形式提供,可以通过简单的API接口将其嵌入到...
【基于Linux的嵌入式安全Web Server的实现】 嵌入式Web服务器是一种在有限资源的设备上运行的轻量级Web服务器,它允许设备通过Internet进行远程管理和监控。本文主要探讨了如何在Linux操作系统上实现一个针对嵌入式...
2. **EMIT技术**:通过高性能处理器(如桌面计算机或嵌入式处理器)作为网关,运行TCP/IP协议和效劳程序。嵌入式设备通过轻量级总线与网关连接,使用简单协议如emNet进行通信。 3. **MCU直接实现**:选择具有足够...
本项目聚焦于轻量级的C++实现的HTTP服务器(httpserver)和HTTP客户端(httpclient),利用mongoose库作为基础,为开发者提供了一种简单且高效的方法来添加HTTP功能,而无需依赖如libcurl这样的大型库。 HTTP(超...
标题中的“http server http server”和描述中的“http server phphttp server phphttp server php”都指向了HTTP服务器和PHP在Web服务中的应用。HTTP服务器是互联网上用于处理客户端HTTP请求的应用程序,而PHP是一...
标题中的"http.rar_embedded webserver_http webserver_webserver http_嵌入式win" 提示我们,这个压缩包可能包含了一个用于在嵌入式系统中运行的HTTP Web服务器的相关资源,尤其是针对Windows系统的嵌入式环境。...
标题提到的“著名的Linux嵌入式系统的WebServer源代码”通常指的是一个轻量级且高效的服务软件,它能够处理HTTP请求,支持ASP(Active Server Pages)脚本,这使得开发者可以编写动态网页应用。 ASP是一种微软开发...
在`HttpServerRun.h`和`httpserver2.vcxproj`中,我们可能看到HTTP服务器的实现。HTTP服务器的主要任务是接收来自客户端的HTTP请求,解析这些请求,并返回相应的HTTP响应。在mongoose中,通过创建一个服务器实例,...
- **Web Server构架**:Web Server运行在嵌入式设备上,响应来自互联网的浏览器请求,返回编码数据或数据流。这种架构允许远程设备通过HTTP协议进行数据交换。 **3. 主要配置** - **Web Server选择**:常见的...
### 基于Hi3510处理器和Linux的嵌入式WebServer的研究和实现 #### 一、引言 随着互联网技术的迅速发展及其在各行各业的广泛应用,越来越多的信息化产品需要具备接入互联网的能力,并可通过Web页面进行远程访问与...