Как вызвать сервлет без отображения в web.в XML?

Как вызвать простой сервлет, используя следующий URL-адрес: http://localhost:8080/servlet/MyServlet

Я поместил его в папку: tomcatwebappsROOTWEB-INFclasses

Я читал, что нет необходимости упоминать сервлет в интернете.XML. Я сделал то же самое. И все же я не могу его вызвать.

3 ответов


Я читал, что нет необходимости упоминать сервлет в интернете.XML.

вы, вероятно, путаете с наследием Tomcat-builtin InvokerServlet который присутствовал в более старых версиях Apache Tomcat (и все еще упоминается в бедных и устаревших учебниках/книгах). Это действительно позволило вызывать такие сервлеты без необходимости отображать что-либо. Однако позже было подтверждено, что это был дыра в безопасности и vulrenable в атаки. Он был отключен и устарел на Tomcat 5.0 и удален на Tomcat 7.0. В таком случае вам действительно нужно отобразить свой сервлет в web.xml (и положите его в пакет!).

еще одним источником путаницы может быть новый сервлет 3.0 @WebServlet Примечание. Когда вы уже используете контейнер сервлета 3.0, такой как Tomcat 7.0, вы можете использовать эту аннотацию для отображения сервлета без необходимости возиться с web.xml.

package com.example;

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

    // ...

}

тогда вы будете возможность доступа к нему так, как вы хотите.

Читайте также:


веб.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>


вы можете достичь этого в интернете sphere.By включение сервлета Serve по свойству имени класса, для этого необходимо выполнить следующий шаг. 1.Перейти к WebSphere консоли администратора. 2.Щелкните правой кнопкой мыши WebSphere Server --> консоль администратора. 3.Выберите серверы --> типы серверов --> серверы приложений WebSphere --> имя_сервера (имя вашего сервера) --> параметры веб-контейнера --> веб-контейнер. 4. Задайте настраиваемое свойство com.ibm.ws.webcontainer.значение disallowServeServletsByClassname равно false.