如何使用以下URL调用简单的servlet: http://localhost:8080/servlet/MyServlet
我把它放在文件夹中:tomcat\webapps\ROOT\WEB-INF\classes
我读过没有必要在web.xml中提到servlet。我做了同样的事。不过,我无法援引它。
答案 0 :(得分:23)
我读过没有必要在web.xml中提及servlet。
您可能会对早期版本的Apache Tomcat中存在的旧版Tomcat内置InvokerServlet
感到困惑(在穷人和过时的教程/书籍中仍然提到)。它确实允许调用这样的servlet而不需要映射任何东西。然而,后来证实它是security hole and vulrenable to attacks。它已在Tomcat 5.0上禁用和弃用,并在Tomcat 7.0上删除。在这种情况下,您确实需要在web.xml
中映射您的servlet(并将其放入包中!)。
另一个混乱的来源可能是新的Servlet 3.0 @WebServlet
注释。如果您已经在使用像Tomcat 7.0这样的Servlet 3.0容器,那么您可以使用此批注来映射servlet,而无需使用web.xml
。
package com.example;
@WebServlet("/MyServlet")
public class MyServlet extends HttpServlet {
// ...
}
然后您就可以按照自己的方式访问它了。
答案 1 :(得分:2)
你的web.xml文件必须像这样
<web-app>
<servlet>
<servlet-class>mypackage.myservlet</servlet-class>
<!-- the full name of your class -->
<servlet-name>name</servlet-name>
<!-- name has be the same in servlet and servlet-mapping -->
</servlet>
<servlet-mapping>
<servlet-name>name</servlet-name>
<url-pattern>/servlet/MyServlet</url-pattern>
</servlet-mapping>
答案 2 :(得分:0)
您可以在Web范围内实现此功能。通过按类名称启用Serve Servlet属性,需要按照以下步骤执行此操作。 1.转到WebSphere Admin Console。 2.右键单击WebSphere Server - &gt;管理控制台。 3.单击服务器 - &gt;服务器类型 - &gt; WebSphere应用程序服务器 - &gt; server_name(服务器名称的名称) - &gt; Web容器设置 - &gt; Web容器。 4.将自定义属性com.ibm.ws.webcontainer.disallowServeServletsByClassname值设置为false。