当前位置:  开发笔记 > 编程语言 > 正文

为什么Java webapps使用.do扩展名?它从哪里来的?

如何解决《为什么Javawebapps使用.do扩展名?它从哪里来的?》经验,为你挑选了2个好方法。

我一直想知道为什么这么多Java开发人员使用".do"作为其Web控制器(MVC)资源的扩展.示例:http://example.com/register.do

它似乎甚至不是特定于框架,因为我在Spring MVC和Struts项目中看到过它.这个".do"扩展实践来自何处.为什么这样做而不是没有延期?我觉得我错过了关于这个的Java世界备忘录.

我个人不喜欢延伸.



1> Pascal Thive..:

据我所知,这个约定已经由Struts1传播.用户指南如下:

5.4.2配置ActionServlet映射

注意: 本节中的材料并非特定于Struts.servlet映射的配置在Java Servlet规范中定义.本节介绍配置应用程序的最常用方法.

定义将由控制器servlet处理的URL有两种常用方法 - 前缀匹配和扩展匹配.下面将描述每种方法的适当映射条目.

前缀匹配意味着您希望将具有特定值的所有URL(在上下文路径部分之后)传递给此servlet.这样的条目可能如下所示:


    action
    /do/*

这意味着与/logon前面描述的路径匹配的请求URI 可能如下所示:

http://www.mycompany.com/myapplication/do/logon

/myapplication部署应用程序的上下文路径在哪里.

另一方面,扩展映射基于URI以句点结束,后跟定义的字符集的事实,将请求URI与动作servlet匹配.例如,JSP处理servlet被映射到*.jsp模式,以便调用它来处理所请求的每个JSP页面.要使用*.do 扩展(这意味着"做某事"),映射条目将如下所示:


    action
    *.do

和匹配/logon前面描述的路径的请求URI 可能如下所示:

http://www.mycompany.com/myapplication/logon.do

警告 - 如果为控制器servlet 定义多个元素,则框架将无法正常运行.

警告 - 如果从1.1版开始使用新模块支持,则应注意仅支持扩展映射.

而且我认为这个约定已被保留(有时即使在替换Struts1之后也不会更改URL,有时候只是因为人们对它感到满意).


在2001年,我们幸运地拥有Struts 1!
@Adam当时(〜2001年),我对Struts1很满意.今天,使用它会让我哭泣.
有了Struts 2,我们都会很开心!

2> leonm..:

通常的做法是将struts servlet映射到web.xml中的*.do,以将URL传递给struts servlet.例如:



    action
    *.do

除了惯例之外没有其他理由.如果你不使用扩展,你需要做一些魔法来处理图像和其他静态内容,而不会将它们发送到你的sevlet.通常,这是在前端Web服务器的负载均衡器上完成的.


我不知道它是神奇的.它只是拥有一个主调度servlet,并且可能会进行一些URL重写以避免使用/ myservlet /前缀.请参阅Tuckey URL重写.
推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有