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可用。 –