0
我的文件夹结构看起来像这样路径html页面
src
main
clojure
.../core.clj
webapp
WEB-INF
index.html
在我core.clj
我有码头
(ns com.lapots.platform.web.core
(:use ring.adapter.jetty)
(:use com.lapots.platform.web.router.core)
(:require [ring.middleware.reload :refer [wrap-reload]])
(:import [org.eclipse.jetty.server.handler StatisticsHandler])
(:gen-class))
(def a-minute 60000)
(defn conf
[server]
(let [stats-handler (StatisticsHandler.)
default-handler (.getHandler server)]
(.setHandler stats-handler default-handler)
(.setHandler server stats-handler)
(.setStopTimeout server a-minute)
(.setStopAtShutdown server true)))
(def app
(-> routes
wrap-reload))
(defn -main [& args]
(run-jetty app {:port 3000 :configurator conf :join? false}))
router/core.clj
一个main
函数的代码
(ns com.lapots.platform.web.router.core
(:require [compojure.core :refer [defroutes GET ANY]]
[liberator.core :refer [defresource resource]]
[ring.util.response :as resp]))
(defresource rest-handler
:handle-ok "rest response"
:etag "fixed-etag"
:available-media-types ["text/html"])
(defn wrapped-file-response [request]
(println "Attempt to read index.html")
(resp/resource-response "index.html" {:root "resources"}))
(defroutes routes
(GET "/" request rest-handler)
(GET "/home" request wrapped-file-response))
我开始jetty
作为典型的服务器gradle
任务
task startServer(dependsOn: classes, type: JavaExec) {
main = 'com.lapots.platform.web.core'
classpath = sourceSets.main.runtimeClasspath
}
但它无法解决index.html
文件。 (/
返回正确的rest response
消息)。
如何指定路径为html
页面为routes
?
是的,我使用的是默认值。哇它的作品。但基于web的应用程序的最佳实践不依赖于clojurescript? – lapots
约定是将HTTP服务器提供的资源放在类路径的子目录中,通常命名为'public'(也就是'$ {rootDir}/src/main/resources/public')。不应该通过HTTP可用。 –