当前位置: 首页 > 面试题库 >

为什么Java Web应用程序使用.do扩展名?它从哪里来的?

鄢飞鸾
2023-03-14
问题内容

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

正如我在Spring MVC和Struts项目中所看到的那样,它甚至似乎并不是特定于框架的。这种“
.do”扩展实践从何而来。为什么这样做而不是不进行扩展?我觉得我想念有关Java世界的备忘录。

我个人不喜欢扩展。


问题答案:

据我所知,该约定已被Struts1传播。用户指南如下所示:

5.4.2配置ActionServlet映射

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

有两种常见的方法来定义将由控制器Servlet处理的URL:前缀匹配和扩展名匹配。下面将描述每种方法的适当映射条目。

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

<servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>/do/*</url-pattern>
</servlet-mapping>

这意味着与/logon前面描述的路径匹配的请求URI 可能看起来像这样:

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

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

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

<servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>

/logon前面描述的路径匹配的请求URI 可能看起来像这样:

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

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

警告 -如果您使用1.1版以后的新模块支持,则应注意仅支持扩展映射。

而且我认为这个约定已经得到遵守(有时即使替换Struts1后也不更改URL,有时只是因为人们对此感到满意)。



 类似资料:
  • 问题内容: Swing应用程序现在真的被使用吗?我找不到使用它们的地方。可以跳过AWT和Swing包吗(尽管我学到了一些基础知识)? 问题答案: 如果您是专门为Web编写的,则可以跳过Swing,否则,您肯定会碰上它。如果没有Swing GUI,我从来没有在非平凡的Java应用程序上工作过。 另外,Swing是更好使用的API之一。如果您使用大多数其他工具,则会发现它们更加难以使用和/或与平台不兼

  • 我正在做一个项目,该项目将有许多JavaFX应用程序,这些应用程序具有相似但又足够不同的功能,因此我创建了一个抽象基类来扩展Application以处理常见的功能并指示它们需要做什么,还创建了一系列具体的类来扩展这些功能。然而,当我试图跑的时候,我得到 应用程序构造函数java.lang.Reflect.InvocationTargetException位于java.base/jdk.intern

  • Node.js以单线程模式运行,但它使用事件驱动的范例来处理并发。 它还有助于创建子进程,以便在基于多核CPU的系统上利用并行处理。 子进程总是有三个流child.stdin , child.stdout和child.stderr ,它们可以与父进程的stdio流共享。 Node提供了child_process模块,该模块具有以下三种创建子进程的主要方法。 exec - child_process

  • 本文向大家介绍使用C++来编写Ruby程序扩展的教程,包括了使用C++来编写Ruby程序扩展的教程的使用技巧和注意事项,需要的朋友参考一下 Ruby 最酷的功能之一就是使用 C/C++ 定义的应用程序编程接口 (API) 扩展它。Ruby 提供了 C 头文件 ruby.h,它随附提供了许多功能,可使用这些功能创建 Ruby 类、模块和更多内容。除了头文件,Ruby 还提供了其他几个高层抽象来扩展基

  • 问题内容: 我需要在android中使用mapview控件,但似乎无法理解如何运行。是否安装了eclipse?我似乎找不到下载链接。 谢谢 问题答案: 是标准Java发行版的一部分。 在Windows 64位计算机上,通常会在以下位置找到jdk 它用于管理您可以使用jar文件签名的密钥和证书。 如果您提供所需做的更多详细信息,我们可能会给您更具体的答案。

  • 我一直在探索构建我的ColdFusion应用程序的不同方法,我正在寻找一些关于提供应用范围UDF的最佳方式的意见。 对于我的每一个应用程序,我通常都会使用一些不属于任何特定对象的额外功能。主要是数据操作。我希望这些功能在我的整个应用程序中都可用,既可以在CFM模板中使用,也可以在应用程序实例化的CFC中使用。 在我看来,有各种各样的方法来实现这一点,但它们都有自己的局限性: > 创建一个基本的Ut