美文网首页
使用jetty来开发嵌入式web服务器

使用jetty来开发嵌入式web服务器

作者: 生亦欢 | 来源:发表于2018-05-03 10:30 被阅读0次

    1.应用场景
    最近公司有个项目是用javaFX来开发win7应用程序的,但是由于业务的需要需要嵌入一个web服务用来传文件和浏览文件。这样快一点又方便。

    1.1 了解jetty
    关于jetty百度一大堆,所以不怎么懂的可以自行百度。
    https://baike.baidu.com/item/jetty/370234?fr=aladdin 链接地址
    1.2 首先需要导入jar包
    jetty-http-9.4.9.v20180320.jar
    jetty-io-9.4.9.v20180320.jar
    jetty-security-9.4.9.v20180320.jar
    jetty-server-9.4.9.v20180320.jar
    jetty-servlet-9.4.9.v20180320.jar
    jetty-util-9.4.9.v20180320.jar

    这里我把最新的jetty相关的包都导入了 但是好像有几个是多余的。如果是基础的jetty服务的话可以去掉其中几个,自己可以试试。删掉jar包看能不能运行。

    1.3 代码分析

    1.第一种运用能创建相关文件服务器 通过HTTP的请求可以访问盘符里面的文件


    文件服务器1.png 文件服务器2.png

    示例代码
    package base.thread;

    import org.eclipse.jetty.server.Server;
    import org.eclipse.jetty.server.handler.ResourceHandler;

    public class WebFileThread extends Thread {

    @Override
    public void run() {
        Server server=new Server(3334);
        ResourceHandler resourceHandler = new ResourceHandler();
        resourceHandler.setResourceBase("/Users/zhaohui/iamgesss/");
        server.setHandler(resourceHandler);
        try {
            server.start();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    

    }

    1.第二种是普通的web服务器
    package base.thread;

    import base.servlet.*;
    import org.eclipse.jetty.server.Server;
    import org.eclipse.jetty.servlet.ServletContextHandler;
    import org.eclipse.jetty.servlet.ServletHolder;

    /**

    • @author zhaohui
      */
      public class WebThread extends Thread {

      @Override
      public void run() {
      try {
      Server server=new Server(3333);
      ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
      context.setContextPath("/");
      context.addServlet(new ServletHolder(new TestServlet()), "/test");
      server.setHandler(context);
      server.start();
      } catch (Exception e) {
      e.printStackTrace();
      }
      }
      }

    这里的TestServlet 是自己的实现。
    "/test"是路径 用127.0.0.1:3333/test 就可以请求这个TestServlet
    package base.servlet;

    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;

    public class TestServlet extends HttpServlet {

    public TestServlet() {}
    
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)  {
        response.setContentType("text/html;charset=utf-8");
        response.setStatus(HttpServletResponse.SC_OK);
        try {
            response.getWriter().println("<html>" +
                    "<head>" +
                    "  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />" +
                    "</head>" +
                    "<body>" +
                    "<h2>File upload demo</h2>\n" +
                    "<form action=\"upload\"  method=\"post\" enctype=\"multipart/form-data\">" +
                    "  <input type=\"file\" name=\"filename\" size=\"45\"><br>" +
                    "  <input type=\"submit\" name=\"submit\" value=\"submit\">" +
                    "</form>" +
                    "</body>" +
                    "</html>");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    

    }

    代码都在这可以拷贝运行试试。 这次项目主要用jetty来实现文件的预览和文件的接收。

    相关文章

      网友评论

          本文标题:使用jetty来开发嵌入式web服务器

          本文链接:https://www.haomeiwen.com/subject/acowlftx.html