В web.xml
вы настроили MainServlet
для соответствия шаблону /
.Возможно, вам следует использовать /*
шаблон URL-адреса:
<servlet-mapping>
<servlet-name>MainServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
См. Этот вопрос / ответ для дальнейшего чтения: Разница между / и / * в шаблоне URL-адреса отображения сервлета
Обратите также внимание, что вы не получаете доступ к своему приложению через http://localhost:8080/
, если вы развернули его для произвольного имени приложения: если контекстный путь равен /myWebApp
, вам придется вызывать http://localhost:8080/myWebApp/
или http://localhost:8080/myWebApp/hello-world
соответственно.
В случае Apache Tomcat вы можете назвать контекстный путь ROOT
, если хотите получить к нему доступ через http://localhost:8080/
или http://localhost:8080/hello-world
.
Редактировать:
Кажется, обе спецификации сопоставления конфликтуют.Удалите определения Serlvet из web.xml:
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
</web-app>
В вашем git-репо вы указали @WebServlet(urlPatterns="/servlet")
, в pom.xml
вы называете artifacId
"1", что дает contextpath "/ 1".
Теперь вызов http://localhost:8080/1/
переходит к index.jsp
.Вызов http://localhost:8080/1/servlet
перенаправляется в test.jsp
вашим методом, но приводит к ошибке 404, так как test.jsp не существует.