zoukankan      html  css  js  c++  java
  • 嵌入jetty到Java代码

    在做Demo实例时,使用的jetty版本号为8.x。

    为了避免麻烦,将全部的包都导入到MyEclipse的lib文件夹下。

    实例1:自己定义handler的服务器

    package com.jetty.test01;
    
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.eclipse.jetty.server.Request;
    import org.eclipse.jetty.server.handler.AbstractHandler;
    
    public class HelloHandler extends AbstractHandler
    {
        public void handle(String target,Request baseRequest,HttpServletRequest request,HttpServletResponse response) 
            throws IOException, ServletException
        {
            response.setContentType("text/html;charset=utf-8");
            response.setStatus(HttpServletResponse.SC_OK);
            baseRequest.setHandled(true);
            response.getWriter().println("<h1>Hello World</h1>");
        }
    }


    package com.jetty.test01;
    
    import org.eclipse.jetty.server.Server;
    
    public class SimplestServer
    {
        public static void main(String[] args) throws Exception
        {
        	Server server = new Server(8081);
            server.setHandler(new HelloHandler());
            server.start();
            server.join();
        }
    }
    

    訪问路径:http://localhost:8080

    实例2:通过xml文件配置服务器

    <?

    xml version="1.0"?> <!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd"> <Configure id="FileServer" class="org.eclipse.jetty.server.Server"> <Call name="addConnector"> <Arg> <New class="org.eclipse.jetty.server.nio.SelectChannelConnector"> <Set name="port">8080</Set> </New> </Arg> </Call> <Set name="handler"> <New class="org.eclipse.jetty.server.handler.HandlerList"> <Set name="handlers"> <Array type="org.eclipse.jetty.server.Handler"> <Item> <New class="org.eclipse.jetty.server.handler.ResourceHandler"> <Set name="directoriesListed">true</Set> <Set name="welcomeFiles"> <Array type="String"> <Item>index.html</Item> </Array> </Set> <Set name="resourceBase">.</Set> </New> </Item> <Item> <New class="org.eclipse.jetty.server.handler.DefaultHandler"> </New> </Item> </Array> </Set> </New> </Set> </Configure>

    package com.jetty.test01;
    
    import org.eclipse.jetty.server.Server;
    import org.eclipse.jetty.util.resource.Resource;
    import org.eclipse.jetty.xml.XmlConfiguration;
    
    public class FileServerXml {
    	public static void main(String[] args) throws Exception{
    		Resource fileserver_xml = Resource.newSystemResource("fileServer.xml");
    		XmlConfiguration configuration = new XmlConfiguration(fileserver_xml.getInputStream());
    		Server server = (Server)configuration.configure();
    		server.start();
    		server.join();
    	}
    }

    訪问路径:http://localhost:8080

    实例3:文件服务器:

    package com.chinahrt.zyn.jetty;
    
    import org.eclipse.jetty.server.Handler;
    import org.eclipse.jetty.server.Server;
    import org.eclipse.jetty.server.handler.DefaultHandler;
    import org.eclipse.jetty.server.handler.HandlerList;
    import org.eclipse.jetty.server.handler.ResourceHandler;
    import org.eclipse.jetty.server.nio.SelectChannelConnector;
    
    public class FileServer {
    	public static void main(String args[]) throws Exception{
    		Server server = new Server();
    		SelectChannelConnector connector = new SelectChannelConnector();
    		connector.setPort(8080);
    		server.addConnector(connector);
    		ResourceHandler resource_handler = new ResourceHandler();
    		resource_handler.setDirectoriesListed(true);
    		resource_handler.setWelcomeFiles(new String[]{"index.html"});
    		resource_handler.setResourceBase(".");
    		HandlerList handlers = new HandlerList();
    		handlers.setHandlers(new Handler[]{resource_handler,new DefaultHandler()});
    		server.setHandler(handlers);
    		server.start();
    		server.join();
    	}
    }
    

    訪问路径:http://localhost:8080

    实例4:创建Servlet

    package com.jetty.test01;
    
    import org.eclipse.jetty.server.Server;
    import org.eclipse.jetty.servlet.ServletContextHandler;
    import org.eclipse.jetty.servlet.ServletHolder;
    
    public class OneServletContext {
    
    	public static void main(String[] args) throws Exception{
    		Server server = new Server(8085);
    		ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
    		context.setContextPath("/");
    		server.setHandler(context);
    		context.addServlet(new ServletHolder(new HelloServlet()), "/*");
    		context.addServlet(new ServletHolder(new HelloServlet("Buongiorno Mondo")), "/it/*");
    		context.addServlet(new ServletHolder(new HelloServlet("Bonjour le monde")), "/fr/*");
    		server.start();
    		server.join();
    	}
    }
    package com.jetty.test01;
    
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class HelloServlet extends HttpServlet {
    	private static final long serialVersionUID = 246698127519451952L;
    	
    	private String greeting="Hello World";
    	
    	public HelloServlet(){}
    	
    	public HelloServlet(String greeting){
    		this.greeting = greeting;
    	}
    	
    	protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException
    	{
    		response.setContentType("text/html");
    		response.setStatus(HttpServletResponse.SC_OK);
    		response.getWriter().println("<h1>"+greeting+"</h1>");
    		response.getWriter().println("session="+request.getSession(true).getId());
    	}	
    }
    

    訪问路径:http://localhost:8080/http://localhost:8080/ithttp://localhost:8080/fr

    实例5:













  • 相关阅读:
    Spring Boot
    Spring Boot – Jetty配置
    如何使ESLint在Visual Studio 2019和2017中工作: 2019 v16和2017> = v15.8
    CentOS 7 安装 Nginx
    HTTPS-使用Certbot自动配置Let’s Encrypt证书
    centos7升级内核到最新版本
    [C#.net]Connection Timeout和Command Timeout
    Redis中切换db
    Redis 模糊查询删除操作
    [Abp vNext 源码分析]
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/5164239.html
Copyright © 2011-2022 走看看