Возможно, вам нужно знать, как отображаются URL-адреса, так как я страдал 404
в течение нескольких часов. Существует два типа обработчиков, обрабатывающих запросы. BeanNameUrlHandlerMapping
и SimpleUrlHandlerMapping
. Когда мы определили servlet-mapping
, мы используем SimpleUrlHandlerMapping
. Мы должны знать, что эти два обработчика имеют общее свойство, называемое alwaysUseFullPath
, которое по умолчанию имеет значение false
.
false
здесь означает, что Spring не будет использовать полный путь для преобразования URL-адреса в контроллер. Что это значит? Это означает, что когда вы определяете servlet-mapping
:
<servlet-mapping>
<servlet-name>viewServlet</servlet-name>
<url-pattern>/perfix/*</url-pattern>
</servlet-mapping>
, обработчик фактически использует часть *
для поиска контроллера. Например, следующий контроллер столкнется с ошибкой 404
, когда вы запросите его, используя /perfix/api/feature/doSomething
@Controller()
@RequestMapping("/perfix/api/feature")
public class MyController {
@RequestMapping(value = "/doSomething", method = RequestMethod.GET)
@ResponseBody
public String doSomething(HttpServletRequest request) {
....
}
}
. Это идеальное совпадение, верно? Но почему 404
. Как уже упоминалось ранее, значение по умолчанию alwaysUseFullPath
равно false, что означает, что в вашем запросе используется только /api/feature/doSomething
, чтобы найти соответствующий контроллер, но Controller не заботится об этом пути. Вам нужно либо изменить свой URL на /perfix/perfix/api/feature/doSomething
, либо удалить perfix
с базы MyController @RequestingMapping
.
Я думаю, что то, как вы определили модельную архитектуру, не имеет смысла! Попробуйте посмотреть этот пример в обзорах фильмов IMDB с помощью LSTM на Keras github repo: Обучает модели LSTM в задаче классификации настроений IMDB.