我在Eclipse(helios)+ Glassfish v3中创建了一个简单的“hello world”servlet。我正在使用Glassfish的eclipse插件似乎没有web.xml,而是WEB-INF /文件夹中的sun-web.xml。这是我第一次使用glassfish但是对于没有web.xml感到有些惊讶 - 所以这里有一些问题:
我们必须配置servlet上下文,映射等,尤其是在开发/测试期间,但是我完全没有使用web.xml。
答案 0 :(得分:12)
Eclipse允许您在为Java EE 6创建Dynamic Web Project时不创建web.xml文件,因为Java EE 6规范(通常)和Servlet 3.0规范(特别是)尝试不再强调部署描述符
您可以使用注释来提供web.xml文件中包含的所有数据。 Javadoc for the Servlet 3.0 annotations非常愚蠢。您应该通读Servlet 3.0 spec from the jcp.org site以获得更多解释性文字。
要更改Servlet 3.0 servlet的url-mapping,首先要查看的是servlet的源代码。查找(并更改)urlPatterns元素的值。
如果您尝试创建基于Servlet 3.0的Web应用程序,请尝试避免创建web.xml文件。
sun-web.xml / glassfish-web.xml文件用于“完成”war文件的描述,以便部署到GlassFish容器中。
关于WebServlet等注释的另一个注意事项......它们没有将带注释的类集成到类层次结构中,因此正确使用@WebServlet看起来像
@WebServlet(
name = "MyServlet",
urlPatterns = {"/path_to_servlet"}
)
public class MyServlet extends HttpServlet {}
答案 1 :(得分:10)
如果您发现确实需要web.xml
文件,则可以在Project Explorer视图中按上下文单击部署描述符,并且应该有一个选项“Generate Deployment Descriptor Stub”。这将为web.xml
和display-name
元素创建welcome-file-list
。
答案 2 :(得分:4)
当您创建'新>时,点击“完成”似乎是一个坏习惯。动态Web项目' - 您应该继续单击“下一步”并转到最后一个窗口窗格,您可以在其中选择“生成web.xml部署描述符” - 默认情况下它似乎未选中。
那就是说我在制作网络应用时有点生气。在这里,我认为这是一个特定于玻璃鱼的问题。
答案 3 :(得分:3)
由于Glassfish 3.x是经过完全认证的Java EE 6服务器,因此它支持Servlets 3.0。从Servlets 3.0开始,可以通过注释指定web.xml设置。
例如
@WebServlet(
name = "MyServlet",
urlPatterns = {"/path_to_servlet"}
)
public class MyServlet {}
答案 4 :(得分:0)
要添加到TMN所说的内容,我注意到项目资源管理器在出于某种原因执行SVN更新之前不会显示部署描述符。如果您遇到此问题,请尝试更新您的代码。我已经进行了HEAD修订,但出于某种原因,更新显示了该视图。