`
rikugun
  • 浏览: 345636 次
  • 性别: Icon_minigender_1
  • 来自: 南宁
社区版块
存档分类
最新评论

简单的JAVA HTTP server 如何解析附件

    博客分类:
  • JAVA
阅读更多
想做一个简单的图片上传服务器,发现JDK6中有个HttpServer 可以支持简单的Server比用Socket简单多了,目前只是想获取Request中的附件.但是获取了全部的Request保存在文本中.但是如何解析请求中的附件确无从下手

/**
 *
 * @author rikugun
 */
public class Main {

    public static void main(String[] args) {
        try {
            HttpServer hs = HttpServer.create(new InetSocketAddress(8888), 0);//设置HttpServer的端口为8888
            hs.createContext("/pic", new PicHandler());//用PicHandler类内处理到/pic的请求
            hs.setExecutor(null); // creates a default executor
            hs.start();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}


PicHandler.java
/**
 *
 * @author rikugun
 */
public class PicHandler implements HttpHandler {

    public void handle(HttpExchange t) throws IOException {
        
        String response = "";
        String mt = t.getRequestMethod();
        if (t.getRequestMethod().equals("GET")) {
            response = "<h3>请使用POST提交图片!</h3>";
        } else {
            InputStream is = t.getRequestBody();
            doUpload(is);
            response = "<h3>上传成功!</h3>";
        }
        t.sendResponseHeaders(200, response.length());
        OutputStream os = t.getResponseBody();
        os.write(response.getBytes());
        os.close();
    }

    private void doUpload(InputStream is) {
        FileOutputStream fos = null;
        try {
            fos = new FileOutputStream(new File("out.txt"));
        } catch (FileNotFoundException ex) {
            Logger.getLogger(PicHandler.class.getName()).log(Level.SEVERE, null, ex);
        }
        byte b[] = new byte[8192];
        int isEnd = 0;
        while (true) {
            try {
                isEnd = is.read(b);
                if (isEnd == -1) {
                    //文件末尾
                    break;
                }
                System.out.println(b.toString());
                fos.write(b);
            } catch (IOException ex) {
                ex.printStackTrace();
                break;
            }
        }
 try {
            fos.close();
            is.close();
        } catch (IOException ex) {
            Logger.getLogger(PicHandler.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}

分享到:
评论

相关推荐

    JAVA上百实例源码以及开源项目源代码

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    JAVA上百实例源码以及开源项目

    第一步:运行ServerData.java 启动服务器,然后服务器处于等待状态 第二步:运行LoginData.java 启动(客户端)登陆界面 输入用户名 ip为本机localhost 第三步:在登陆后的界面文本框输入文本,然后发送 可以同时启动...

    JAVA视频监视系统

    2 在MyEclipse下运行附件所带的Java源文件,web工程名称最好叫做bs。 3 启动server.mxml,会看到如下界面: 7 上述的客户端界面中,“实时”-----观看服务器端传送过来的画面。 “选择日期”---选择特定日期的异常...

    积分管理系统java源码-MiniHttpServer:用于Java(android)的迷你http服务器

    Server for Java (Android) 一:开发环境 Mac OS 10、Java 1.8、IDEA(Gradle工程) 二:介绍 一款基于Java Nio实现的Http解析框架,支持常见的请求解析和逻辑;采用单线程解析多线程业务处理方案,内置线程池方便...

    java jdk实列宝典 光盘源代码

    聊天室服务器端,Chatserver.java;聊天室客户端,ChatClient.java; Ftp客户端,Mainframe.java; 14数据库 连接各种数据库DBconnector.java; 获得数据库和表的元数据Getmetadata.java; 查询和更新数据库...

    Java网络编程(第三版)中文版.part09.rar

    java.rmi.server包 642 第十九章 JavaMail API 648 何为JavaMail API? 649 发送电子邮件 651 接收邮件 661 口令认证 666 地址 670 URLName类 674 Message类 677 Part接口 689 多部分消息和附件 699 MIME...

    淘宝返利网站源码java-first:第一的

    淘宝返利网站源码java first HTML 与 CSS HTML 5 与 XHTML JavaScript 与浏览器脚本 Web Server 和 Web Services(服务器应用程序,Web Server 通常是C/C++/Java写的)、服务器脚本 PHP ,服务器脚本,Web Framework...

    Java网络编程(第三版)中文版.part11.rar

    java.rmi.server包 642 第十九章 JavaMail API 648 何为JavaMail API? 649 发送电子邮件 651 接收邮件 661 口令认证 666 地址 670 URLName类 674 Message类 677 Part接口 689 多部分消息和附件 699 MIME...

    Java网络编程(第三版)中文版.part06.rar

    java.rmi.server包 642 第十九章 JavaMail API 648 何为JavaMail API? 649 发送电子邮件 651 接收邮件 661 口令认证 666 地址 670 URLName类 674 Message类 677 Part接口 689 多部分消息和附件 699 MIME...

    Java网络编程(第三版)中文版.part07.rar

    java.rmi.server包 642 第十九章 JavaMail API 648 何为JavaMail API? 649 发送电子邮件 651 接收邮件 661 口令认证 666 地址 670 URLName类 674 Message类 677 Part接口 689 多部分消息和附件 699 MIME...

    Java网络编程(第三版)中文版.part01.rar

    java.rmi.server包 642 第十九章 JavaMail API 648 何为JavaMail API? 649 发送电子邮件 651 接收邮件 661 口令认证 666 地址 670 URLName类 674 Message类 677 Part接口 689 多部分消息和附件 699 MIME...

    Java网络编程(第三版)中文版.part03.rar

    java.rmi.server包 642 第十九章 JavaMail API 648 何为JavaMail API? 649 发送电子邮件 651 接收邮件 661 口令认证 666 地址 670 URLName类 674 Message类 677 Part接口 689 多部分消息和附件 699 MIME...

    Java网络编程(第三版)中文版.part02.rar

    java.rmi.server包 642 第十九章 JavaMail API 648 何为JavaMail API? 649 发送电子邮件 651 接收邮件 661 口令认证 666 地址 670 URLName类 674 Message类 677 Part接口 689 多部分消息和附件 699 MIME...

    Java网络编程(第三版)中文版.part04.rar

    java.rmi.server包 642 第十九章 JavaMail API 648 何为JavaMail API? 649 发送电子邮件 651 接收邮件 661 口令认证 666 地址 670 URLName类 674 Message类 677 Part接口 689 多部分消息和附件 699 MIME...

    Java网络编程(第三版)中文版.part10.rar

    java.rmi.server包 642 第十九章 JavaMail API 648 何为JavaMail API? 649 发送电子邮件 651 接收邮件 661 口令认证 666 地址 670 URLName类 674 Message类 677 Part接口 689 多部分消息和附件 699 MIME...

    Java网络编程(第三版)中文版.part13.rar

    java.rmi.server包 642 第十九章 JavaMail API 648 何为JavaMail API? 649 发送电子邮件 651 接收邮件 661 口令认证 666 地址 670 URLName类 674 Message类 677 Part接口 689 多部分消息和附件 699 MIME...

    Java网络编程(第三版)中文版.part05.rar

    java.rmi.server包 642 第十九章 JavaMail API 648 何为JavaMail API? 649 发送电子邮件 651 接收邮件 661 口令认证 666 地址 670 URLName类 674 Message类 677 Part接口 689 多部分消息和附件 699 MIME...

Global site tag (gtag.js) - Google Analytics