Не могу добавить объект модели в представление jsp в "/", но тот же метод работает при вызове / index - PullRequest
0 голосов
/ 23 мая 2018

Вот ссылка на сайт, который я разрабатываю

35.200.161.123 / ShahbazKhan / index

35.200.161.123 / ShahbazKhan / (см. В разделе последних новостей проблему)

оба они обрабатываются одним и тем же методом контроллера и возвращают одну и ту же страницу.Проблема в том, что вызов / index работает отлично, как и должно быть, тогда как когда я захожу на свой веб-сайт, как 35.200.161.123/ShahbazKhan/, объект 'posts' не передается в jsp.Вот код контроллера индекса

@Autowired
private PostService postService;

@RequestMapping(value={"/","index"})
public ModelAndView index(HttpServletRequest req){
    HttpSession session = req.getSession();
    List<Post> posts = postService.findLatest3();
    ModelAndView mv = new ModelAndView("index");
    mv.addObject("posts", posts);
    mv.addObject(session);
    return mv;
}

Мне не хватает некоторых конфигураций ??Проект построен с использованием Spring Boot

img 1

проблема

Структура каталога проекта

Файл Application.properties

spring.datasource.url = jdbc:mysql://xx.xx.xx.xx/shahbazkhan
spring.datasource.driver-class-name = com.mysql.jdbc.Driver
spring.datasource.username=root
spring.datasource.password= xxxxxxxxxx
spring.jpa.database-platform=org.hibernate.dialect.MySQL57Dialect
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update 


spring.resources.static-locations=classpath:/static

spring.mvc.view.prefix: /
spring.mvc.view.suffix: .jsp

1 Ответ

0 голосов
/ 23 мая 2018

Поведение вашего веб-сервера по умолчанию (то есть передача всех запросов, таких как 35.200.161.123/ShahbazKhan/ на 35.200.161.123/ShahbazKhan/index) больше не применимо.Все запросы передаются в контроллер и сравниваются с указанными вами свойствами средства разрешения представления.Сервер приложений проверяет, доступен ли запрошенный ресурс в папке WEB-INF, и возвращает ресурс после обработки.

Если ресурс не найден, веб-сервер по умолчанию предоставляет статические страницы.

В настоящее время все ваши представления общедоступны в папке webapps, поэтому при выполнении вызова на сайте projects / не вызывается контроллер индекса, и вы получаете «index.html» как есть, без объекта jsp.

Важно, чтобы вы поместили все ресурсы Spring, Hibernate и другие java-ресурсы в папку WEB-INF, так как эта папка ищется при каждой передаче запроса.Справка: https://vitalflux.com/web-application-folder-structure-spring-mvc-web-projects/, https://blogs.quovantis.com/spring-project-best-practices

Затем вы должны указать серверу приложений на префикс всех запросов с /WEB-INF/.Вы должны указать это свойство в своем преобразователе представлений, изменив spring.mvc.view.prefix: / на spring.mvc.view.prefix: /WEB-INF/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...