我喜欢知道每当用户请求一个jsp页面时,我们会编写hello.jsp或任何html文件,我们编写hello.html或任何图像hello.jpeg。 我的问题是servlet没有任何扩展名?它是否被直接调用名称?Servlet没有任何扩展吗?
回答
对于Servlet,您必须明确告诉Servlet容器哪些URL(特定的URL或通配符)映射到哪个servlet。例如:
<servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>com.example.HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
上面的例子将在URL /hello
映射到servlet com.example.HelloWorld
。
你也可以做一些通配符映射。例如:
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
这将映射 “.html
” 到HelloWorld servlet的结束请求。但是你不限于任何特定的扩展。你可以使用任何你想要的:
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>*.foo</url-pattern>
</servlet-mapping>
所有这些配置都发生在你的web应用的web.xml
文件。
+1。也许还要提到,除了扩展名之外,您还可以注册路径前缀。 – Thilo 2010-02-01 02:40:07
不,你完全掌握在你自己的手中。它的名字不一定叫它叫做url-pattern
。您可以将其命名为任何您想要的内容,例如/pages/*
将在您拨打http://example.com/pages/foo.jsp
或http://example.com/pages/foo
(它将路径信息返回request.getPathInfo()
,以便确定要执行的操作和/或将该请求转发到哪里)返回时运行servlet。或者*.page
,只要您拨打http://example.com/foo.page
(它反过来使URI返回request.getRequestURI()
)就会运行servlet。
要预处理请求(当请求页面查看时),通常使用doGet()
方法。要后处理请求(POST表单提交后),通常使用doPost()
方法。
实际上,您可以根据需要创建尽可能多的servlet,例如, RegisterServlet
在/register
上收听,其中支持register.jsp
作为观点,LoginServlet
收听/login
并且支持login.jsp
作为观点,等等。您可以通过将它们放置在/WEB-INF
中来隐藏JSP,以免用户通过该servlet调用它们。
在MVC世界里,通常会有意味着只有一个的servlet监听某个url-pattern
,这就是所谓的前端控制器的。例如,在Sun JSF中,有一个FacesServlet
,只要调用默认*.jsf
或/faces/*
匹配的URL即可运行。例如,在Apache Struts中,有ActionServlet
默认侦听*.do
。它们根据URL,请求参数和/或映射来确定要采取的操作和/或要显示哪个视图(JSP文件)。但是,您可以自由更改这些默认值url-pattern
。您甚至可以在服务商的web.xml
中更改JspServlet
的默认url-pattern
,该默认值在*.jsp
上侦听。然而,建议坚持一个明智的和标准化的url-pattern
。
知道任何其他“未确定”的URL模式被“默认”servlet覆盖可能很有趣。检查servlet容器的web.xml
,你会看到一个servlet在/
上监听,因此实际上服务于的一切。它还管理directoy列表的显示。例如在Tomcat中,它被称为DefaultServlet
并描述了here。
- 1. 没有扩展
- 2. PHP查找扩展没有扩展名
- 3. 没有扩展名
- 4. Spree 0.40.x(Rails 3)有任何CMS扩展吗?
- 5. Servlet没有显示任何输出
- 6. 可扩展的Servlet托管
- 7. Android Studio是否有任何SqlLite扩展?
- 8. 我想得到输出2^64没有任何扩展在C + +
- 9. WEBRTC - 屏幕共享没有任何扩展
- 10. input type =“file” - 接受没有任何扩展名的文件
- 11. PHP扩展没有发现
- 12. PHP链接没有扩展
- 13. IIS文件没有扩展
- 14. Chrome扩展:没有弹出
- 15. 没有扩展MapActivity的MapView
- 16. ffmpeg扩展没有安装
- 17. CUDA的任何Lisp扩展?
- 18. 如何在没有一个扩展
- 19. WPF-如何让任何时候只扩展一个扩展器
- 20. 从BaseAdapter扩展的GetView没有运行Runnable任务
- 21. 没有任何编码,Eclipse是否具有Visual Studio的扩展性功能?
- 22. 有没有办法'扩展'#define指令?
- 23. Backbone.Model有没有方法“扩展”
- 24. 有没有mongo shell扩展的windows?
- 25. Magento扩展 - 有用或没有
- 26. 有没有IE webstore上传扩展
- 27. php_memcache扩展没有显示在wamp扩展中
- 28. Django的扩展用户模型中没有扩展属性
- 29. iOS10今天扩展没有处于扩展状态
- 30. 了解Tomcat中的Servlet路径扩展
您已经在2天内询问了7个与Java相关的问题,并且都没有被接受。如何清理积压? – skaffman 2010-02-01 02:45:07