Ada*_*ent 112 java servlets web-applications
我一直想知道为什么这么多Java开发人员使用".do"作为其Web控制器(MVC)资源的扩展.示例:http://example.com/register.do
它似乎甚至不是特定于框架,因为我在Spring MVC和Struts项目中看到过它.这个".do"扩展实践来自何处.为什么这样做而不是没有延期?我觉得我错过了关于这个的Java世界备忘录.
我个人不喜欢延伸.
Pas*_*ent 73
据我所知,这个约定已经由Struts1传播.用户指南如下:
5.4.2配置ActionServlet映射
注意: 本节中的材料并非特定于Struts.servlet映射的配置在Java Servlet规范中定义.本节介绍配置应用程序的最常用方法.
定义将由控制器servlet处理的URL有两种常用方法 - 前缀匹配和扩展匹配.下面将描述每种方法的适当映射条目.
前缀匹配意味着您希望将具有特定值的所有URL(在上下文路径部分之后)传递给此servlet.这样的条目可能如下所示:
Run Code Online (Sandbox Code Playgroud)<servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>/do/*</url-pattern> </servlet-mapping>这意味着与
/logon前面描述的路径匹配的请求URI 可能如下所示:Run Code Online (Sandbox Code Playgroud)http://www.mycompany.com/myapplication/do/logon
/myapplication部署应用程序的上下文路径在哪里.另一方面,扩展映射基于URI以句点结束,后跟定义的字符集的事实,将请求URI与动作servlet匹配.例如,JSP处理servlet被映射到
*.jsp模式,以便调用它来处理所请求的每个JSP页面.要使用*.do扩展(这意味着"做某事"),映射条目将如下所示:Run Code Online (Sandbox Code Playgroud)<servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>和匹配
/logon前面描述的路径的请求URI 可能如下所示:Run Code Online (Sandbox Code Playgroud)http://www.mycompany.com/myapplication/logon.do警告 - 如果
<servlet-mapping>为控制器servlet 定义多个元素,则框架将无法正常运行.警告 - 如果从1.1版开始使用新模块支持,则应注意仅支持扩展映射.
而且我认为这个约定已被保留(有时即使在替换Struts1之后也不会更改URL,有时候只是因为人们对它感到满意).
通常的做法是将struts servlet映射到web.xml中的*.do,以将URL传递给struts servlet.例如:
<!-- Standard Action Servlet Mapping -->
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
除了惯例之外没有其他理由.如果你不使用扩展,你需要做一些魔法来处理图像和其他静态内容,而不会将它们发送到你的sevlet.通常,这是在前端Web服务器的负载均衡器上完成的.
| 归档时间: |
|
| 查看次数: |
84314 次 |
| 最近记录: |