Сопоставление URL-адресов Web XML сервлета Java

Я некоторое время боролся с этим веб-xml-файлом для Tomcat.

<context-param>
    <param-name>name</param-name>
    <param-value>Bob</param-value>
</context-param>

<servlet>
    <servlet-name>test</servlet-name>
    <servlet-class>TestServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>test</servlet-name>
    <url-pattern>/servlet/*</url-pattern>
</servlet-mapping>

Я знаю, что этот файл читается, потому что когда я тестирую с помощью

public class TestServlet extends HttpServlet{
public void doGet(HttpServletRequest req, HttpServletResponse res){
    res.setContentType("text/html");

    String name = getServletContext().getInitParameter("name");

    PrintWriter out = null;
    try{
        out = res.getWriter();
    }catch(Exception e){}

    out.println("<html><head></head><body><img src=\"/twitter.png\"><p>Hi my name is " + name + "</p></body></html>");
}

}

Я могу прочитать имя, которое я поместил в параметр контекста. Мой вопрос к вам, ребята, как мне создать сопоставление URL-адресов, чтобы мне не приходилось проходить через /servlet/ для доступа к моим сервлетам в URL-адресе? Когда я пытаюсь создать URL-шаблон, например

/test/*, я не могу получить доступ к сервлету, даже если я скажу веб-сайт/тест/TestServlet. Я получаю ошибку 404 Not Found в браузере


person boxbag    schedule 29.04.2012    source источник


Ответы (1)


Поместите класс сервлета в пакет и не полагайтесь на InvokerServlet. Он отключен, начиная с Tomcat 5.5, и удален в Tomcat 7.0.

Пожалуйста, не читайте учебники/книги 10-15-летней давности. Технологии меняются каждый год.

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

person BalusC    schedule 29.04.2012
comment
Привет, BalusC, спасибо за быстрый ответ. У меня есть еще один вопрос после того, как я получил сервлет 3.0. Когда я попробовал @WebServlet(/MyServlet), как мне получить доступ к моему сервлету? Я иду на веб-сайт/сервлет/MyServlet или я могу получить к нему доступ с помощью веб-сайта/MyServlet? - person boxbag; 29.04.2012