大家好,非常感谢您的帮助,并原谅我生疏的英语:)。我正在尝试使用 spring 3.x、spring-security 和 .jsp 页面创建一个 mvc 网站,我可以在这里粘贴很多代码,但我认为这将是无用的,因为它是关于如何 URI 的一种逻辑问题控制器的动作和 uri 的工作原理:
1)Jsp页面:登录:对所有客人可用,并为具有“home”或
homeUser操作的管理员返回homeAdmin:对于具有操作homeAdmin的用户
:提供一个菜单,其中包含与“admin/action”映射的不同操作
HomeUser:提供一个菜单使用“用户/操作”映射的不同操作
UserLIst:在表格中列出每个用户及其信息的页面
2)Controller : 来宾控制器:没有类控制器,只有两种方法。首先用于映射 value={ "/, home"},后者用于 "login"。因此,尝试执行请求的每个人都将被重定向到登录页面,以便能够登录
@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-action 的第一部分;对于指定的操作,请求映射有不同的方法,如列表用户。管理员控制器
@controller
@RequestMapping("/admin")
public class AdminController {
@RequestMapping(value={"/list", "/adminFilm"})
(code)
return new ModelAndView("adminFilm");
...
现在我以管理员身份登录,我的 URL 变成
"localhost:8080/name_project/homeAdmin.jsp"
了对应于 URL 的 URI "/webapp/metainf/views/homeAdmin.jsp"
(由 InternalResuorceViewResolver 方法生成到其 xml 页面中)。
按下按钮“列出用户”我执行一个操作 =“admin/list”,现在我的 URI 是
"localhost:8080/name_project/admin/listUser.jsp"
此时我的任何操作都不需要生成“admin/”,因为它已经在路径中但是如果尝试注销(j_springsecurity_Logout) 我在顶部的 URL 变成了 from ,
"localhost:8080/name_project/admin/listUser"
所以我(自然地)得到一个找不到映射的错误。"localhost:8080/name_project/admin/j_spring_Logout"
主页请求出现同样的问题,因为它是由 LoginController 而不是在 AdminController 中映射的,所以当我从任何具有路径“/admin/home”的页面请求它时,找不到并且无法在 loginController 中调用控制器。我可以解决它强制jsp页面的路径,但它的编程很糟糕(并且会产生错误)。我该如何解决这个路径问题?
如果问题无法理解,我会尝试重新编写它。
谢谢。