Android利用jetty搭建微型服务器

主要的引入包:

implementation 'org.eclipse.jetty:jetty-webapp:7.6.0.RC4'
implementation 'org.eclipse.jetty:jetty-deploy:7.6.0.RC4'
implementation 'org.eclipse.jetty:jetty-server:7.6.0.RC4'
implementation 'org.eclipse.jetty:jetty-jsp-2.1:7.2.2.v20101205'
implementation 'org.mortbay.jetty:jsp-2.1-glassfish:2.1.v20100127'
implementation 'javax.servlet:servlet-api:2.5'
implementation 'org.eclipse.jetty:jetty-client:7.6.0.RC4'

我这里的做法是启动一个服务,在服务里面用一个线程控制jetty的动作,不用引入外部的war包,直接用代码写网页。感觉也没啥好讲的,我这里就挑重点了。

开始:

  Server server = new Server();
  configureConnectors();
  configureHandlers();
  server.start();

停止:

server.stop();
server = null;


配置端口:

private void configureConnectors() {
        if (server != null) {
            SelectChannelConnector selectChannelConnector = new SelectChannelConnector();
            selectChannelConnector.setUseDirectBuffers(false);
            selectChannelConnector.setPort(_port);
            selectChannelConnector.setHost(AppContext.HOST);
            server.addConnector(selectChannelConnector);
            LogUtils.e("Configured " + SelectChannelConnector.class.getName() + " on port " + _port);
        }
    }

配置自定义处理:

 private void configureHandlers() {
        if (server != null) {
            HandlerCollection handlers = new HandlerCollection();
            contexts = new ContextHandlerCollection();
            handlers.setHandlers(new org.eclipse.jetty.server.Handler[]{contexts, new ShareFileHandler()});
            server.setHandler(handlers);
        }
    }
ShareFileHandler这个是自己自定义的
/**
 * 自定义处理方式
 */
public class ShareFileHandler extends org.eclipse.jetty.server.handler.DefaultHandler {

    public ShareFileHandler() {
        super();
    }

    @Override
    public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
        if (response.isCommitted() || baseRequest.isHandled()) {
            return;
        }
        baseRequest.setHandled(true);
        String method = request.getParameter("method");
        response.setContentType("text/html; charset=UTF-8");
        //主页
        if (TextUtils.equals("main", method) || TextUtils.isEmpty(method)) {
            MainPagerModel.showMain(request, response);
        }
        //分享主页
        else if (TextUtils.equals("ShareMain", method)) {
            ShareFileModel.showShareFile(request, response);
        }
        //下载文件
        else if (TextUtils.equals("download", method)) {
            DownLoadFileModel.downLoadFile(request, response);
        }
        //上传文件
        else if (TextUtils.equals("upLoadFile", method)) {
            UpLoadFileModel.upLoadFile(request, response);
        }
        //显示文本
        else if (TextUtils.equals("showText", method)) {
            ShowTextModel.dealTextData(request, response);
        } else {
            BaseModel.defaultMsg(response, "sorry,this page not found or an unknown error!");
        }
    }
}

上面的各种方法,其实最后出去都是从下面这个方法出去的,反正基本学过servlet的基本会知道的,如果没有学过的,建议先去看看servlet

 /**
     * 设置输出
     *
     * @param response
     */
    public static void defaultMsg(HttpServletResponse response, String msg) {
        try {
            String html = "<html>" +
                    "<head>" +
                    "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">" +
                    "<meta name=\"viewport\" content=\"width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no\" />" +
                    "</head>" +
                    "<body>" + msg +
                    "</body>" +
                    "</html>";
            PrintWriter writer = response.getWriter();
            writer.println(html);
            writer.flush();
            response.flushBuffer();
        } catch (Exception e) {
            LogUtils.e(e.toString());
        }
    }

下面根据上面的基础,编写了一个实用的小工具 下载地址 

这个工具可以直接让手机和电脑互传文件,可以摆脱忘记拿U盘的束缚,方便简洁,也可以分享文件给局域网的小伙伴噢,手机毕竟是手机,跟电脑搭建的服务器还是有差别的,目前是1.0版本,可能还有很多的不稳定,喜欢的可以去下载用用

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值