servlets - 如何根据 Racket Web servlet 中的路径显示不同的内容?

标签 servlets web scheme racket

我正在尝试按照简单网络应用程序的 Racket 指南上的教程进行操作,但无法获得一个基本的基本内容。

如何让 servlet 根据请求 URL 提供不同的内容?尽管经过我的努力,即使是巨大的博客示例也是一个大文件,并且在我背后使用巨大的 get 查询字符串处理所有内容。如何根据 URL 做任何事情? Clojure 的 Noir 框架将这个基本功能放在首页(defpage)的前面,但是如何使用 Racket 做到这一点?

最佳答案

URL 是 request 的一部分servlet 作为参数接收的结构。您可以通过调用 request-uri 获取 URL , 然后你可以看它做任何你想做的事情。该请求还包括 HTTP 方法、 header 等。

但这是相当低级的。更好的解决方案是使用 dispatch-rules 定义从 URL 模式到处理函数的映射。这是文档中的一个示例:

(define-values (blog-dispatch blog-url)
  (dispatch-rules
   [("") list-posts]
   [("posts" (string-arg)) review-post]
   [("archive" (integer-arg) (integer-arg)) review-archive]
   [else list-posts]))

制作您的主 servlet 处理程序 blog-dispatch .网址 http://yoursite.com/将通过调用 (list-posts req) 处理, 其中 req是请求结构。网址 http://yoursite.com/posts/a-funny-story将通过调用 (review-post req "a-funny-story") 处理.等等。

关于servlets - 如何根据 Racket Web servlet 中的路径显示不同的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18025366/

相关文章:

javascript - 使用按钮使用javascript更改整个网站的字体大小

java - Web应用程序和桌面之间的通信,有什么更好的方法?

scheme - SICP视频讲座2

macros - 学习 Scheme 宏的资源 : define-syntax and syntax-rules

jsp - Vaadin 和 Java EE 使用 Servlet 和 JSP 集成

java - ServletContext 是每个 Web 应用程序一个还是每个 JVM 一个?

javascript - 使用 jQuery 折叠层次结构中的嵌套列表

scheme - printf %6.2f 是方案还是 Racket ?

java - 在将所有请求重定向到 servlet 中的正确请求之前,有什么方法可以将所有请求路由到一个方法吗?

java - 为什么要将业务逻辑移出 JSP?