使用JFinal.start方式启动Jetty,如何定义虚拟目录

习惯把上传的文件及图片都保存到虚拟目录,方便war的更新部署

对jetty不太了解,从网上找了一些相关文章,要到jetty的webapps目录下创建虚拟目录配置文件,可这种嵌入式的jetty哪来的webapps目录?

也尝试通过maven添加jetty的plugin实现,可并没有效果:

<plugin>
    <groupId>org.eclipse.jetty</groupId>
    <artifactId>jetty-maven-plugin</artifactId>
    <version>${jetty.version}</version>
    <configuration>
        <contextHandlers>
            <contextHandler implementation="org.eclipse.jetty.webapp.WebAppContext">
                <contextPath>/uploadfiles</contextPath>
                <resourceBase>D:/MySpace/uploadfiles</resourceBase>
            </contextHandler>
        </contextHandlers>
    </configuration>
</plugin>

还请对jetty熟悉的大神指教!

评论区

JFinal

2017-05-21 10:55

这个需求的支持不需要 jetty 来参与,为项目配置上合适的 baseUploadPath即可:
me.setBaseUploadPath("/var/upload")

如上所示,可以将上传路径配置在项目以外的地方,这样可以随意去更新 war 包,而不影响

netwild

2017-05-21 11:08

@JFinal 我现在就是这样配置的,上传是没问题的,但之后需要利用虚拟目录来访问啊

netwild

2017-05-21 11:14

@JFinal 另外,对setBaseUploadPath和setBaseDownloadPath的区别一直没搞清楚,难道下载路径不应该和上传路径一样吗?
如果这个setBaseDownloadPath是设置虚拟目录的url倒是非常有用,这样在JFinal.start时自动配置jetty,就太爽了

caoxusheng

2017-05-21 13:04

@netwild 那可以单独装个nginx了。

netwild

2017-05-21 13:20

@caoxusheng 生产环境没问题,调试时呢

JFinal

2017-05-21 16:28

@netwild 你可以将 baseUploadPath 与 baseDownloadPath 设置为相同的目录,然后上传完成后,直接用 renderFiel(...) 就可以下载了

baseUploadPath 是 getFile(...)文件上传保存文件的基础路径,而 baseDownloadPath 是 renderFile(...) 文件下载时文件所在的基础路径

getFile(...) 与 renderFile(...) 这两个方法在调用的时候,还可以带上一个路径值,这个路径值是相对于 baseXxxxPath 的路径

总之,baseXxxPath 就是一个基础路径,上传与下载都是在这个基础路径之下去玩

JFinal

2017-05-21 16:29

补充一下,如果 baseXxxPath 不设置的话,上传基础路径为项目根下面的 upload 之下,下载则在项目根的 download 之下

JFinal

2017-05-21 16:31

@JFinal 你可以在配置文件中引入 baseUploadPath 与 baseDownloadPath,在开发时,将这两个配置指向项目根下面的某处,而在生产环境下改下配置,不要指向项目的根下面

netwild

2017-05-21 17:13

@JFinal 感谢詹总对baseUploadPath 与 baseDownloadPath的解释,现在明白了!
但对于Jetty创建虚拟目录还没搞定

netwild

2017-05-21 23:14

@JFinal 参考JFinal的JettyServer重写了启动类,实现了自动创建虚拟目录:http://www.jfinal.com/share/283

热门反馈

扫码入社