Servlets 如何在Racket web servlet中基于路径显示不同的内容?

Servlets 如何在Racket web servlet中基于路径显示不同的内容?,servlets,web,scheme,racket,Servlets,Web,Scheme,Racket,我试着按照《简单网络应用程序球拍指南》上的教程进行操作,但却找不到一个基本的东西 如何让servlet根据请求URL提供不同的内容?尽管我进行了搜索,但即使是大型博客示例也是一个大文件,所有内容都是在我背后用巨大的get查询字符串处理的。如何基于URL执行任何操作?Clojure的Noir框架将此基本功能放在主页的最前面(defpage),但如何使用Racket实现这一点?URL是servlet作为参数接收的结构的一部分。您可以通过调用请求uri来获取URL,然后您可以查看它以执行任何您想要的操

我试着按照《简单网络应用程序球拍指南》上的教程进行操作,但却找不到一个基本的东西

如何让servlet根据请求URL提供不同的内容?尽管我进行了搜索,但即使是大型博客示例也是一个大文件,所有内容都是在我背后用巨大的get查询字符串处理的。如何基于URL执行任何操作?Clojure的Noir框架将此基本功能放在主页的最前面(
defpage
),但如何使用Racket实现这一点?

URL是servlet作为参数接收的结构的一部分。您可以通过调用
请求uri
来获取URL,然后您可以查看它以执行任何您想要的操作。请求还包括HTTP方法、头等等

但这是相当低级的。更好的解决方案是定义从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处理程序
博客调度
。URL
http://yoursite.com/
将通过调用
(list posts req)
进行处理,其中
req
是请求结构。URL
http://yoursite.com/posts/a-funny-story
将通过调用
(查看post-req“a-fully-story”)
进行处理。等等