English 中文(简体)
如何在不映射web.xml的情况下调用servlet?
原标题:How to invoke a servlet without mapping in web.xml?

How to invoke a simple servlet using the following URL: http://localhost:8080/servlet/MyServlet

我把它放在文件夹中:tomcatwebappsROOTWEB INFclasses

我读到在web.xml中没有必要提到servlet,我也这么做了。尽管如此,我还是无法调用它。

最佳回答

我已经读到在web.xml中没有必要提及servlet

您可能混淆了遗留的Tomcat内置程序InvokerServlet,它出现在Apache Tomcat的旧版本中(在糟糕和过时的教程/书籍中仍有提及)。它确实允许像这样调用servlet,而无需映射任何内容。然而,后来证实它是安全漏洞,易受攻击。它在Tomcat 5.0上被禁用和弃用,在Tomcat 7.0上被删除。在这种情况下,您确实需要将servlet映射到web.xml中(并将其放入包中!)。

另一个混乱的来源可能是新的Servlet 3.0@WebServlet注释。当您已经在使用像Tomcat 7.0这样的Servlet 3.0容器时,您可以使用此注释来映射Servlet,而无需篡改web.xml

package com.example;

@WebServlet("/MyServlet")
public class MyServlet extends HttpServlet {

    // ...

}

然后你就可以随心所欲地访问它了。

See also:

问题回答

你的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>

您可以在web领域中实现这一点。通过启用“按类名服务Servlet”属性,需要按照以下步骤来实现。

  1. Go to WebSphere Admin Console.
  2. Right Click on the WebSphere Server --> Admin Console.
  3. Click Servers --> Server Types --> WebSphere application servers --> server_name(name of your server name) --> Web Container Settings --> Web container.
  4. Set custom property com.ibm.ws.webcontainer.disallowServeServletsByClassname value as false.




相关问题
Spring Properties File

Hi have this j2ee web application developed using spring framework. I have a problem with rendering mnessages in nihongo characters from the properties file. I tried converting the file to ascii using ...

Logging a global ID in multiple components

I have a system which contains multiple applications connected together using JMS and Spring Integration. Messages get sent along a chain of applications. [App A] -> [App B] -> [App C] We set a ...

Java Library Size

If I m given two Java Libraries in Jar format, 1 having no bells and whistles, and the other having lots of them that will mostly go unused.... my question is: How will the larger, mostly unused ...

How to get the Array Class for a given Class in Java?

I have a Class variable that holds a certain type and I need to get a variable that holds the corresponding array class. The best I could come up with is this: Class arrayOfFooClass = java.lang....

SQLite , Derby vs file system

I m working on a Java desktop application that reads and writes from/to different files. I think a better solution would be to replace the file system by a SQLite database. How hard is it to migrate ...

热门标签