【问题标题】:Servlet directory structure realization in Dynamic Web Project in EclipseEclipse中Dynamic Web Project中的Servlet目录结构实现
【发布时间】:2017-11-25 17:19:44
【问题描述】:

Eclipse中一个简单的Dynamic Web Project的项目目录结构maps to the Web application archive (WAR) structure defined by Sun Microsystems,虽然Sun Microsystems定义的servlet结构明显是a bit different

我只想知道,当我在 Dynamic Web 项目中只创建一个 Servlet 类时,如何映射到 Servlet 类文件?我检查了 web.xml 并没有对应的 servletservlet-mapping 孩子,当我运行应用程序时,URL 看起来像

http://localhost:8080/firstServlet/Hello

firstServlet 是我的项目名称,Hello 是 servlet 类。

1.它如何知道必须运行哪个类?我的意思是没有指定为 Hellourl-pattern 那么为什么 URL 是这样的呢?如果没有url-pattern,不应该是http://localhost:8080/firstServlet吗?

2.另外,这个项目结构内部如何设置与我上面提到的标准servlet项目结构?

【问题讨论】:

  • 检查代码中的任何 @WebServlet 注释,您还可以通过这些映射 Servlet 和过滤器

标签: java eclipse servlets


【解决方案1】:

我猜,您正在使用不需要与 web.xml 进行任何映射的注释配置

您的 servlet url 模式如下所示:

@WebServlet(name = "someThing", urlPatterns = {"/Hello"})

Servlet 3.0 的这项新功能使您能够将您的 servlet Hello 映射到您的 Web 应用程序 firstServlet

【讨论】:

  • 是的,我想如果我们删除注释并使用url-pattern=\Helloservletservlet-mapping 子项添加到web.xml,它的工作方式相同。我不明白的是,当我尝试将url-pattern 设置为/welcome 时,它不起作用,here 的情况并非如此。如您所见,类名是DemoServlet,但他使用/welcome;当我使用除 /Hello 之外的任何东西时,它不起作用,我不明白,因为我已经在 web.xml 中将 servlet-class 提到为 Hello
  • Url 模式可以是任何字符串,但 servlet 名称应与您的 servlet 类名称相同。请检查 servlet 名称是否为 Hello 而。模式是/welcome。此外,需要重新部署您的网络应用程序。
  • 非常抱歉!只要类名正确输入,它实际上可以与任意字符串一起使用,我一定没有正确刷新它!谢谢。
  • 此外,多个映射,即通过 web 注释的不同 url 模式和 web.xml 中的 servlet-mappings 用于单个 servlet 文件也可以工作,从而导致单个 servlet 的多个地址。
  • 一个 servlet 可以有多个 url-patterns,您可以在 web.xml 或注释配置中添加多个模式或两者的组合。通常,应该只使用一种配置。
猜你喜欢
  • 1970-01-01
  • 2015-04-28
  • 1970-01-01
  • 1970-01-01
  • 2013-10-09
  • 1970-01-01
  • 2018-08-31
  • 1970-01-01
  • 2016-04-05
相关资源
最近更新 更多