java Clojure Web应用程序-我从哪里开始?

更新时间:2024-05-09 下载TXT文档 下载Word文档

所以最近我一直在研究Clojure,我喜欢这种语言。我想看看是否可以在其中制作一个小型Web应用程序,以挑战自己。但是,我绝对没有建立任何与Java相关的Web应用程序的经验。实际上,我实际上对Java没有太多的经验。我从哪里开始?我在Apache和LAMP堆栈方面拥有丰富的经验,并且我知道在Apache上大多数情况下我只会使用Fast-CGI,但我不知道Java世界中的等效功能(如果有的话)。

基本上,我只需要有关设置服务器和启动它的帮助。我了解(某种程度上)如何部署一个纯Java应用程序,但是一个纯Clojure应用程序又如何呢?这是如何运作的?我想,来自所有Web应用程序都以脚本语言编写的世界,这对我来说是全新的。

哦,顺便说一句,我不想??使用像Compojure这样的Clojure框架。那将使学习的部分失败。

提前致谢。

我建议您首先学习Servlet-API,它支持Java世界中与HTTP请求和响应有关的所有事情。 HttpServletRequestHttpServletResponse在这里占据了很多基础。码头是一个不错的选择。在http://robert.zubek.net/blog/2008/04/26/clojure-web-server/(使用Jetty 6)上有关于Clojure和Jetty的很好的介绍。

话虽这么说,Compojure的基本模型也很底层:它只是将请求和响应包装在Clojure数据结构中,但是您仍然负责所有路由,生成正确的响应代码。生成ETag等,有时比LAMP堆栈更底层。

  • 嗯,好的,我来看一下Compojures源代码,以了解其工作原理。如果我正在认真地编写一个功能完善的Web应用程序,那么Id可能会使用它,但是我想自己编写此层以向自己介绍Java服务器的工作方式。 +1
  • 对于在Ring和Compojure中使用的HTTP响应和-request到Clojures数据结构之间的映射的总体概述,我建议阅读github.com/mmcgrana/ring/blob/master/SPEC
  • 我会仔细地研究一下Ring,因为它提供了与Servlet等效的Clojure,并且可以帮助您避免不必要的Java知识。我见过的每个Clojure Web框架都位于它之上,并将其用作翻译层。

一个非常简单的入门方法是制作一个在Tomcat或类似服务器上运行的servlet,例如:

(ns servlet
((:gen-class :extends javax.servlet.http.HttpServlet))

(defn -doGet
  [_ request response]
  (.setContentType response"text/html")
  (let w (.getWriter response)]
      (.println w
        (str"<html>"
         "<head>"
         "Hello World!"
         "</head>"
         "<body>"
         "Hello"
          (.getParameter request"Name")
         ""
         "</body>"
         "</html>"))))

(defn -doPost [_ request response]
  (-doGet nil request response))

然后在您的WEB-INF文件夹中创建一个web.xml (短码网-duanma.net)

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">

<display-name>Clojure Servlet</display-name>

<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>servlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>

编译并将其打包成一场大战,它的行为就像常规的Java servlet一样。要在Tomcat上部署,只需将war拖放到webapps文件夹中并启动tomcat。

可在此处找到详细的示例http://github.com/yogthos/clojure-maven-examples

如果您不想使用Compojure或其他,则需要加载Web服务器并调用JAR,或者使用套接字编写Web服务器。从这种意义上讲,您可以按照网络上的许多指南中的任何指南进行设置和编译JAR

这看起来像您所追求的。

  • 啊哈,我一直在寻找编译JAR的链接!我不确定Clojure应该如何在Web服务器上运行。就像我说的那样,我来自脚本语言背景,您只需将文件放在特定目录中就可以了。 +1 :)
  • 这也可能有用:markmail.org/message/mipzbehperyyd67j

如果要使用FastCGI,要注意的一件事是Java与其他脚本语言不同,与ruby或python不同,有一个启动时间来启动JVM。
为每个请求启动JVM是一项繁重的操作。

如果我理解正确,那么您正在寻找用于创建应用程序的本机Java方法。如果是这样,compojure确实在幕后为您创建了一个servlet,那么最终您可以像Java中那样创建一个clojure Web应用程序并将其部署到任何应用程序服务器上。

  • 是的,您正确理解了我的问题。我知道这就是Compojure的功能,但是它是如何做到的呢?我基本上是在问这一切如何工作。我知道我可以只使用Compojure,但是我只是想弄清楚基于Java的Web应用程序是如何工作的。

好吧,您可以直接从clojure中正确使用FastCGI。 FastCGI是一个非常简单的协议,因此您自己可以用clojure编写服务器应该不那么困难(我怀疑是否有一个库可以针对clojure执行此操作,但对于Java来说可能存在一个库)。

以上就是短码网小编为大家整理的《java Clojure Web应用程序-我从哪里开始?》相关内容,希望大家喜欢。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若内容造成侵权/违法违规/事实不符,请将联系本站反馈,一经查实,立即处理!

java Clojure Web应用程序-我从哪里开始?》文档下载仅供参考学习,下载后请在24小时内删除。

转载注明出处:https://www.duanma.net/article/029ca6ba742.html

回到顶部