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