【发布时间】:2012-11-15 11:23:11
【问题描述】:
gwan/csp/strangesubfolder/inc.c可以通过http://domainName.com/strangesubfolder/?inc访问
我觉得这个servlet 映射很奇怪,但这符合我的需要。我在 gwan 用户手册中找不到映射描述。
如果我错了,请纠正我并确认这是否是预期的行为。
【问题讨论】:
标签: servlets uri restful-url g-wan
gwan/csp/strangesubfolder/inc.c可以通过http://domainName.com/strangesubfolder/?inc访问
我觉得这个servlet 映射很奇怪,但这符合我的需要。我在 gwan 用户手册中找不到映射描述。
如果我错了,请纠正我并确认这是否是预期的行为。
【问题讨论】:
标签: servlets uri restful-url g-wan
是的,这是一项标准功能。
“?”告诉 G-WAN 它是一个 servlet。如果没有'?它将在 WWW 文件夹中查找文件。
更新:
现在我明白你的困惑了。
自 3.3.27 版本以来,这已被更改,因此用户可以轻松地制作安静的 URL
阅读 2012 年 3 月 27 日的更新。
现在您需要放置“?”在实际的 servlet 名称之前。通过这样做,G-WAN 可以有效地将 '/' 重写为 '&',因此您无需编写任何代码就可以使用此类静态 URL。
//Old way
http://domain/?user/profile&user1
http://domain/?blog/archive&2012&march
//New way (more restful no '&')
http://domain/user/?profile/user1
http://domain/blog/?archive/2012/march
【讨论】:
是的,正如 Richard 正确(并且及时,感谢 Richard!)解释的那样,这是预期的行为。
目录/gwan/.../csp/script.c 用于存储必须运行的servlet,而/gwan/.../www/script.c 用于存储旨在用作HTTP 资源的文件。
对应的网址是GET /?script.c和GET /script.c。
/csp 或 /www 文件夹中使用的任何子目录都会相应地反映在 HTTP 请求中:GET /folder/?script.c 用于动态内容,GET /folder/script.c 用于静态内容。
选择将'?' 查询字符(可以被其他字符替换)从旧的GET /csp?/folder/script.c 形式移动到新的GET /folder/?script.c 形式是出于以下需要:
servlet 名称和 folder 名称(请求可能缺少已定义的“默认”编程语言的 servlet 扩展,如果未定义,则为 C)sub-directories
query arguments
folders 和 query arguments
RESTFUL 在上述所有情况下的请求成为可能。我们花了一些时间才找到合适的功能组合,并尽量减少冗长,但经验表明这很有效。
下面是一个既有子文件夹又有查询参数的 RESTFUL 查询示例:
GET /folder/?script/arg1/value1/arg2/value2/arg3/value3
默认情况下,这是一个 C 脚本,除非另一种语言(可用于编写脚本的 15 种语言中)已被定义为“默认”语言。
请注意,下载存档中提供的 50 多个脚本示例说明了此方案,developers 页面上也提供了该方案。
【讨论】: