Добавьте это к вашему application.properties
:
server.servlet.contextPath=/
Я взял ваш пример кода и, предположив, что вы аннотировали MainController
просто как @Controller
, собрал развертывание.Я изменил несколько вещей вокруг, но я верю, что именно это и произошло.Я не смог найти никаких ссылок, объясняющих, почему это может потребоваться Tomcat, но я намерен продолжать поиск.Я обновлю вас, если что-нибудь найду.
Редактировать:
Я заметил некоторые дублирующие записи в Spring 2.0.2, связанные с этой проблемой: https://github.com/spring-projects/spring-boot/issues/13470
Проблемаисправлено в 2.0.4, поэтому я обновился.
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
Кроме того, я удалил запись server.servlet.contextPath=/
и tada Я все еще могу добраться до настроенного jsp Hello World.Если для вас возможно обновление, возможно, вы могли бы попробовать это, прежде чем добавить что-то в application.properties
, что можно было бы считать дублированной функциональностью.По крайней мере, я могу пообещать вам лучший опыт регистрации.
Редактировать # 2:
Пока что нет курящего пистолета, но это (из 2.0.4) может быть связано:
Обеспечивает согласованный способ обнаружения основного пути DispatcherServlet
Сервлеты диспетчера с пользовательским именем сервлета не найдены конечной точкой сопоставлений
Ничто не выглядело вероятным на поверхности сканирования 2.0.3.Сейчас я собираюсь дать ему отдохнуть и дать вам шанс попробовать кое-что.Удачи!
Редактировать # 3:
Извините, что продолжаю предлагать вам переключать среду, но я заметил одно различие между тем, что я тестировал, и тем, с чем вы работаете.вы, кажется, используете Tomcat-9.0.0.M20, где, когда я тестировал с 9.0.12 .
Хотите ли вы обновить или нет, несколько вещей, чтобы отметить и / илиdo:
1) Обновите ваш вопрос тем, что у вас есть сейчас, если он отличается от предыдущего.Включите server.servlet.contextPath=/
в свой application.properties
, чтобы кто-нибудь еще, увидев, мог видеть, что вы сделали.
2) Исключение, которое вы имеете для spring-boot-starter-tomcat
в spring-boot-starter-web
, похоже, ничего не делает- вы можете проверить, сравнив результат выполнения mvn dependency:tree
до и после удаления.
3) Я не уверен, что ваша зависимость spring-web
также необходима, так как она вводится по умолчанию в spring-boot-starter
.
4) Теперь к вашему выводу.Появляется Spring Boot (обратите внимание на баннер), и ваши классы находят и применяют.
catalina.out.DEBUG
также в вашем DS.log начиная с 08: 35: 38.162
2018-10-12 09:30:17.322 DEBUG 55745 --- [ main] o.s.c.a.ClassPathBeanDefinitionScanner : Identified candidate component class: file [/data/apps/tomcat/apache-tomcat-9.0.0.M20/webapps/DataViewer/WEB-INF/classes/com/clarivate/dataviewer/controller/MainController.class]
2018-10-12 09:30:17.328 DEBUG 55745 --- [ main] o.s.c.a.ClassPathBeanDefinitionScanner : Identified candidate component class: file [/data/apps/tomcat/apache-tomcat-9.0.0.M20/webapps/DataViewer/WEB-INF/classes/com/clarivate/dataviewer/database/ReadFromDb.class]
2018-10-12 09:30:17.356 DEBUG 55745 --- [ main] o.s.c.a.ClassPathBeanDefinitionScanner : Identified candidate component class: file [/data/apps/tomcat/apache-tomcat-9.0.0.M20/webapps/DataViewer/WEB-INF/classes/com/clarivate/dataviewer/service/FileFuncs.class]
2018-10-12 09:30:17.357 DEBUG 55745 --- [ main] o.s.c.a.ClassPathBeanDefinitionScanner : Identified candidate component class: file [/data/apps/tomcat/apache-tomcat-9.0.0.M20/webapps/DataViewer/WEB-INF/classes/com/clarivate/dataviewer/service/StringFuncs.class]
...
2018-10-12 09:30:19.417 INFO 55745 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/tspsPatentSearch],methods=[POST]}" onto public java.lang.String com.clarivate.dataviewer.controller.MainController.tspsPatentSearch(com.clarivate.dataviewer.model.TspsPatent,org.springframework.ui.Model,org.springframework.validation.BindingResult)
2018-10-12 09:30:19.417 INFO 55745 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/tspsPatentSearch],methods=[GET]}" onto public java.lang.String com.clarivate.dataviewer.controller.MainController.tspsPatentSearch(org.springframework.ui.Model)
...
2018-10-12 09:30:19.769 INFO 55745 --- [ main] com.clarivate.dataviewer.DvMain : Started DvMain in 3.125 seconds (JVM running for 5.845)
И я действительно отмечаю сопоставление с /error
, которое возвращается для вашего запроса в 09: 32: 11.
Я нахожу это странным:
2018-10-12 09:32:11.758 DEBUG 55745 --- [nio-8081-exec-1] o.s.web.servlet.DispatcherServlet : DispatcherServlet with name 'dispatcherServlet' processing GET request for [/DataViewer/DataViewer/error]
И оно отличается в DS.log:
2018-10-12 08:36:56.136 DEBUG 6992 --- [nio-8081-exec-1] o.s.web.servlet.DispatcherServlet : DispatcherServlet with name 'dispatcherServlet' processing GET request for [/DataViewer /error]
Конкретно /DataViewer/DataViewer/error
- пытались ли вы запросить http://localhost:8081/DataViewer/DataViewer/tspsPatentSearch
В общем случае все выглядит так, как будто все идет вверх, но есть неправильная конфигурация, которая не позволяетзапрос на сопоставление с обработчиком.