Всем привет и большое спасибо за помощь и извините за мой ржавый английский :). Я пытался создать веб-сайт mvc со страницами spring 3.x, spring-security и .jsp, я могу вставить сюда много кода, но я думаю, что это будет бесполезно, потому что это своего рода логическая проблема того, как URI действия и uri контроллера работает:
1) Jsp-страницы: логин: доступен для всех гостей и return homeAdmin для администраторов с действием "home" или
homeUser: для пользователей с действием
homeAdmin: предоставляет меню с различными действиями, сопоставленными с "admin / action"
HomeUser: предоставляет меню с различными действиями, сопоставленными с «пользователем / действием».
UserLIst: страница, на которой перечислены все пользователи и их информация в таблице
2) Контроллер: гостевой контроллер: нет контроллера класса, есть только два метода. Сначала для сопоставления value = {"/, home"}, а затем для "входа в систему". Таким образом, каждый, кто пытается выполнить запрос, будет перенаправлен на страницу входа в систему, чтобы иметь возможность войти в систему.
@Controller
public class LoginController {
@RequestMapping(value={"/home","/"}
(code)//if admin homeAdmin else homeUser
return new ModelAndView("home");
@RequestMapping(value="/login", method = RequestMethod.GET)
(code)
return new ModelAndView("login");
....
Существует сопоставление запросов для класса со значением «/ admin /» для сопоставления первой части Uri-действия, а также существуют различные методы сопоставления запросов для определенного действия, например, список User. AdminController
@controller
@RequestMapping("/admin")
public class AdminController {
@RequestMapping(value={"/list", "/adminFilm"})
(code)
return new ModelAndView("adminFilm");
...
Теперь я вхожу в систему как администратор, и мой URL-адрес стал "localhost:8080/name_project/homeAdmin.jsp"
который является URI, соответствующим URL-адресу "/webapp/metainf/views/homeAdmin.jsp"
(сгенерирован методом InternalResuorceViewResolver на его xml-странице).
Нажатие кнопки «Список пользователей "Я выполняю действие =" admin / list ", теперь мой URI - "localhost:8080/name_project/admin/listUser.jsp"
На этом этапе ни одно из моих действий не требует создания" admin / ", потому что оно уже есть на пути, но если попытаться logout (j_springsecurity_Logout) мой URL-адрес вверху стал с "localhost:8080/name_project/admin/listUser"
,
до "localhost:8080/name_project/admin/j_spring_Logout"
, поэтому я получаю (естественно) ошибку из-за того, что сопоставление не найдено.
Та же проблема появляется для запроса домашней страницы потому что он отображается в LoginController, а не в AdminController, поэтому, когда я запрашиваю его с любой страницы, имеющей путь «/ admin / home», он не обнаруживается и не может вызвать контроллер в loginController. Я мог бы решить эту проблему, задав пути к страницам jsp, но это плохое программирование (и генерирует ошибки). Как я могу решить эту проблему путей?
Если проблема непонятна, попробую переписать.
Спасибо.