Как вызвать сервлет без сопоставления в web.xml? - PullRequest
10 голосов
/ 17 февраля 2011

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

Я поместил его в папку: tomcat\webapps\ROOT\WEB-INF\classes

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

Ответы [ 3 ]

23 голосов
/ 17 февраля 2011

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

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

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

package com.example;

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

    // ...

}

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

Смотри также:

2 голосов
/ 17 февраля 2011

Ваш файл 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>

0 голосов
/ 18 ноября 2016

Вы можете достичь этого в веб-сфере. Чтобы включить свойство Servlet Servelet по имени класса, выполните следующие действия, чтобы сделать это.1. Перейдите в консоль администратора WebSphere.2.Право Нажмите на WebSphere Server -> Консоль администратора.3.Нажмите Серверы -> Типы серверов -> Серверы приложений WebSphere -> имя_сервера (имя вашего сервера) -> Настройки веб-контейнера -> Веб-контейнер.4. Задайте для пользовательского свойства com.ibm.ws.webcontainer.disallowServeServletsByClassname значение false.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...