Я новичок в сервлетах и для сервлета "hello world style" я установил apache tomcat и создал в его каталоге webapps
следующее:
servletdir
|- index.xhtml
|- WEB-INF
|- web.xml
|- classes
|- mypackage
|- ServletClass.class
Инициализировал все, чтобы я мог получить доступ к своемусервлет на локальном хосте:
web.xml
<?xml version="1.0" encoding="utf-8"?>
<web-app>
<servlet>
<servlet-name>myservlet</servlet-name>
<servlet-class>mypackage.ServletClass</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>myservlet</servlet-name>
<url-pattern>/servleturl/*</url-pattern>
</servlet-mapping>
</web-app>
, а index.xhtml содержит форму, которая имеет action="/servleturl" method="get"
Теоретически, когда я запускаю tomcat,Теперь я должен получить доступ к сервлету и файлу index.xhtml через localhost:8080/servletdir/index.xhtml
и отправить туда форму.Достижение индекса не составляет проблемы, но когда я отправляю форму, я получаю ошибку 404 для сервлета, говоря, что он: «Исходный сервер не нашел текущее представление для целевого ресурса или не хочет раскрыть, что он существует»..
Мой класс сервлетов не должен быть проблемой, он расширяет HttpServlet
и переопределяет doGet
для вывода простого html через getWriter().println()
параметра ServletResponse
параметра.Может ли ошибка в классе сервлетов вызвать 404?Моя структура каталогов или web.xml неверны?
Я перепробовал несколько структур каталогов и решений, в том числе:
- структура плоского каталога в WEB-INF и класс не в пакете (нет каталога "classes")
- нет WEB-INF, все в dir сервлета напрямую
- оберните WEB-INF и index.xhtml в каталог с именем "WebContent"
- keepкаталог "classes", но не используйте пакет, поместите файлы классов непосредственно в классы *
Я проследил несколько ресурсов, включая некоторые учебные пособия и множество вопросов, которые не имеют прямого отношения к моей проблеме, но содержат некоторую информацию, но поскольку я новичок в этой технологии, я не могу определить, какой ресурс хорош, а какой нет, поэтому я попробовал почти все, что нашел.
Структура каталогов, описанная вtop находится непосредственно на диске, как эта структура, а не в файле war, но, поскольку я могу получить доступ к некоторым частям, я думаю, что это не проблема.
*: обратите внимание, что я перекомпилируюкаждый раз при изменении структуры каталогов, представляющих пакет, менялись файлы java с соответствующим «пакетом» в верхней строке файла, это не проблема