`
changhongbao
  • 浏览: 123790 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Jetty实战(3)之嵌入式简单文件服务器

阅读更多

对于嵌入式运行Jetty,可以通过简单的一些代码实现一个简单的文件服务器的功能,如下:

package com.google.code.garbagecan.jettystudy.sample3;  
  
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;  
  
public class FileServer {  
    public static void main(String[] args) throws Exception {  
        Server server = new Server(8080);  
  
        ResourceHandler resourceHandler = new ResourceHandler();  
        resourceHandler.setDirectoriesListed(true);  
        resourceHandler.setResourceBase("E:/share");  
        resourceHandler.setStylesheet("");  
          
        HandlerList handlers = new HandlerList();  
        handlers.setHandlers(new Handler[] { resourceHandler, new DefaultHandler() });  
        server.setHandler(handlers);  
  
        server.start();  
        server.join();  
    }  
}  

 这里使用了Jetty自带的ResourceHandler类来处理所有的请求,这个类指定了资源路径,并且允许列出目录和文件,这里需要注意的是“resourceHandler.setStylesheet("");”,如果没有这一行代码的话,在请求资源的时候后台总是会不停的抛出NullPointerException。

 

运行FileServer类,访问http://localhost:8080/就可以看到“E:/share”下的所有文件和目录了。

 

上面是通过编码的方式实现了简单的文件服务器,其实Jetty也可以通过配置文件的方式实现文件服务器的功能,如下:

创建一个配置文件com/google/code/garbagecan/jettystudy/sample3/fileserver.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="resourceBase">E:/share</Set>  
                            <Set name="stylesheet">.</Set>  
                        </New>  
                    </Item>  
                    <Item>  
                        <New class="org.eclipse.jetty.server.handler.DefaultHandler">  
                        </New>  
                    </Item>  
                </Array>  
            </Set>  
        </New>  
    </Set>  
</Configure>  

 创建一个java类FileServerWithXml

package com.google.code.garbagecan.jettystudy.sample3;  
  
import org.eclipse.jetty.server.Server;  
import org.eclipse.jetty.util.resource.Resource;  
import org.eclipse.jetty.xml.XmlConfiguration;  
  
public class FileServerWithXml {  
    public static void main(String[] args) throws Exception {  
        Resource resource = Resource.newClassPathResource("/com/google/code/garbagecan/jettystudy/sample3/fileserver.xml");  
        XmlConfiguration configuration = new XmlConfiguration(resource.getInputStream());  
        Server server = (Server) configuration.configure();  
        server.start();  
        server.join();  
    }  
}  

 运行FileServerWithXml类,访问http://localhost:8080/也可以看到“E:/share”下的所有文件和目录了。
 

分享到:
评论

相关推荐

    实战 Jetty--让你快速速学会jetty

    以下是一个简单的示例代码片段,展示了如何创建一个监听8080端口的Server对象,设置一个默认Handler,并使用XML配置文件(如`jetty.xml`)初始化和启动服务器: ```java public class JettyServer { public static...

    jetty嵌入项目实战

    本实战项目旨在帮助初学者快速掌握Jetty的嵌入式使用方法,通过实例化和配置Jetty服务器,实现Web应用的快速启动和运行。 1. **Jetty简介** - Jetty是一个开源的HTTP服务器和Servlet容器,它遵循Java Servlet和JSR...

    Jetty 学习资料汇总

    1. **部署应用**:讲解如何将WAR文件或自定义配置部署到Jetty服务器。 2. **性能调优**:提供性能监控和调优的策略,包括JMX工具的使用。 3. **热部署与自动重启**:了解如何实现代码变更后应用的热部署和自动重启...

    apache-jetty

    使用Jetty部署Web应用程序非常简单,可以通过XML配置文件或代码动态配置。Jetty支持WAR包直接部署,也可以通过嵌入式方式在应用中启动。 5. **安全性** Jetty提供了安全模块,支持基本认证、摘要认证、SSL/TLS...

    Android i-jetty开源项目.rar

    Android i-jetty开源项目是专为Android平台设计的一个轻量级HTTP服务器实现,其核心是嵌入式Jetty服务器。Jetty是一款广泛使用的Java Web服务器和Servlet容器,而Android i-jetty则是将Jetty的特性引入到Android应用...

    Spring Boot实战派(源码)

    3. **嵌入式Web服务器** - Spring Boot支持内嵌Tomcat、Jetty等Web服务器,无需额外部署,简化了开发流程。 4. **健康检查与Actuator** - Actuator提供了一组端点,用于监控和管理应用的健康状况、指标、日志等,...

    spring-boot实战PDF 完整版和随书源码.7z

    2. 嵌入式服务器:Spring Boot支持内嵌Tomcat、Jetty等Web服务器,无需额外部署,简化了开发和测试流程。 3. 零配置:Spring Boot推崇“约定优于配置”的原则,很多配置都有默认值,极大地减少了繁杂的配置工作。 ...

    《SpringBoot实战》PDF

    2. **嵌入式Web服务器**:Spring Boot支持内嵌Tomcat、Jetty或Undertow等Web服务器,无需额外部署,简化了开发流程。 3. **健康检查与Actuator**:提供Actuator模块,用于监控和管理应用的运行状态,包括健康检查、...

    SpringBoot实战(第4版) 中文版

    3. **嵌入式Web服务器**:Spring Boot支持内嵌Tomcat或Jetty,允许开发者无需额外部署,直接运行主类启动应用,大大提高了开发效率。 4. **健康检查与Actuator**:Actuator是Spring Boot提供的监控和管理工具,用于...

    SpringBoot 整合 Netty 实战

    SpringBoot通过默认配置、嵌入式Servlet容器(如Tomcat或Jetty)以及自动配置特性,使得开发者能够快速地构建独立运行的、生产级别的Java应用程序。 Netty则是一个高性能、异步事件驱动的网络应用框架,用于快速...

    轻量级J2EE企业应用实战

    Tomcat是Apache软件基金会的一个项目,而Jetty则是一个更轻量级的选择,通常被用于嵌入式场景。 本书还涵盖了J2EE应用的架构模式,包括贫血模型(Thin Model),这是一种将业务逻辑层(BL)和数据访问层(DAL)分离...

    springboot实战,javaee巅覆者

    3. **嵌入式Web服务器**:SpringBoot可以内嵌Tomcat或Jetty等Web服务器,无需额外部署步骤,大大简化了开发和测试流程。 4. **命令行接口(CLI)**:SpringBoot提供了一个强大的命令行工具,可以快速创建和运行...

    SpringBoot实战

    2. **嵌入式Web服务器**:Spring Boot支持内嵌Tomcat、Jetty或Undertow,无需额外部署,即可直接运行jar包启动服务。 3. **自动配置(Auto Configuration)**:Spring Boot根据项目类路径下的jar包和配置文件,自动...

    SpringBoot实战-清晰

    - **嵌入式Web服务器**:Spring Boot支持内嵌Tomcat、Jetty或Undertow,无需单独部署WAR文件,简化了开发流程。 - **自动配置**:Spring Boot会根据类路径中的存在项自动配置Bean,极大地减少了配置文件的数量和...

    基于SpringBoot的福聚苑社区团购项目实战(源码+说明+演示视频).zip

    SpringBoot的核心特性包括自动配置、嵌入式Web服务器、起步依赖和命令行工具等。 二、SpringBoot的优势 1. 快速启动:通过“起步依赖”(Starter POMs)可以快速添加所需的依赖,避免了传统Spring项目中复杂的配置...

    servlet3.0与mybatis整合的示例

    3. 嵌入式容器:Servlet3.0允许在没有web服务器的情况下运行应用,例如使用Jetty或Tomcat的嵌入式版本,简化了开发和测试流程。 4. pluggable deployment:不再强制依赖web.xml,可以使用自定义的部署描述符或者...

    SpringBoot实战(第4版)清晰版

    而嵌入式Web服务器如Tomcat或Jetty,让应用可以直接运行而不需额外部署到外部服务器。 其次,书中会涵盖Spring Boot的启动器(Starters)和配置。启动器是Spring Boot快速上手的关键,它们是预配置的Maven或Gradle...

    springboot 实战项目教程.txt

    ### Spring Boot实战项目教程知识点概览 #### 一、Spring Boot简介 - **定义**:Spring Boot是由Pivotal团队提供的全新框架,其设计目标是简化新Spring应用的初始搭建以及开发过程。 - **特点**: - **独立运行**...

    手写spring资料.zip

    3. Jetty官方文档:学习Jetty服务器的配置和使用。 总的来说,手写Spring是一个深度学习和理解Spring框架的好方法。通过实际操作,我们可以更好地掌握Spring的内在机制,提升我们的开发技能。在实践中遇到问题时,...

Global site tag (gtag.js) - Google Analytics