当前位置: 首页 > 知识库问答 >
问题:

MVC Spring 3. x控制器映射和动作URI(/ag1/ag1/…/ag1/act)

周高畅
2023-03-14

嗨,大家好,非常感谢你的帮助,原谅我生疏的英语:)。我试图创建一个带有Spring 3. x、sping-Security和. jsp页面的mvc网站,我可以在这里粘贴很多代码,但我认为这将是无用的,因为这是一种关于操作的URI和控制器的uri如何工作的逻辑问题:

1) Jsp页面:登录:可供所有来宾使用,并返回homeAdmin(对于具有操作“home”或
home的管理员)用户:对于具有操作的用户
homeAdmin:提供了一个菜单,其中包含与“admin/acthtml" target="_blank">ion”映射的不同操作
homeUser:提供了与“用户/操作”映射的菜单
UserLIst:一个页面,在表中列出了每个用户及其信息

2)控制器:来宾控制器:没有类控制器,只有两种方法。首先用于映射值={ “/, 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变成了< br > < code >“localhost:8080/name _ project/home admin . JSP” < br >,这是对应于URL < br > < code >“/web app/meta INF/views/home admin . JSP” < br >(由InternalResuorceViewResolver方法在其xml页面中生成)的URI。< br >按下“列出用户”按钮,我执行一个操作=“admin/List”,现在我的URI是< br > < code >“localhost:8080/name _ project/admin/listUser . JSP” < br >此时,我的任何操作都不需要生成“admin/”,因为已经在路径中,但是如果尝试注销(j_springsecurity_Logout)我在顶部的URL,将成为来自< br > < code >“localhost:8080/name _ project/admin/listUser” 主页请求出现相同的问题,因为它是由LoginController映射的,而不是在AdminController中,所以当我从任何具有路径“/admin/home”的页面请求它时,都找不到它,并且无法在loginController中调用控制器。我可以通过强制jsp页面的路径来解决这个问题,但是这是糟糕的编程(并且会产生错误)。我该如何解决这个路径问题?

如果问题不能理解,我会试着重写它。

谢谢。

共有1个答案

吕霖
2023-03-14

据我所知,浏览器地址栏中的当前URL是< code > localhost:8080/name _ project/admin/listUser 。现在你点击一个链接(或者按钮,无所谓),它的URL是< code > j _ spring security _ Logout 。这是相对于当前路径的,因此您会得到预期的行为:解析的URL是< code > localhost:8080/name _ project/admin/j _ spring _ Logout 。

您需要的是相对于应用程序路径的链接URL。这就是<代码>

<a href="j_spring_Logout">

你写

<a href="<c:url value="j_spring_Logout" />">
 类似资料:
  • 当存在多个时,视图解析器如何确定要加载哪个控制器。 我正在从头开始学习Spring,正如我的导师所说,我们只需要一个带有注释的控制器类。如果我有多个带有注释的类,以及如何确定要加载哪个控制器类,因为Spring是Singleton,并且只有一个控制器类存在。

  • ControllerClassNameHandlerMapping类是HandlerMapping接口的一个实现,它是通过一个约定来解析请求URL及处理该请求的@Controller控制器实例之间的映射关系。 请看下面一个简单的控制器实现。请注意留意该类的 名称: public class **ViewShoppingCartController** implements Controller {

  • Spring MVC也提供了构造指定控制器方法链接的机制。以下面代码为例子,假设我们有这样一个控制器: @Controller @RequestMapping("/hotels/{hotel}") public class BookingController { @RequestMapping("/bookings/{booking}") public String getBoo

  • 是的。我知道这是一个熟悉的问题。我已经研究了其他解决方案,但它们没有帮助我。我正在尝试用Spring 4、HiberNate 5、My Sql和Angular JS 1. x构建Spring MVC应用程序 问题:如图所示,当我运行应用程序时,它按照预期index.jsp文件,然后我输入“”以获得网页“adduser.html”。嘣,它会抛出以下错误“在DispatcherServlet中,没有找

  • 我有一个Spring控制器,其中有几个用于不同URI的RequestMapping。我的servlet是“UI”。servlet的基本URI只使用尾随斜杠。我希望我的用户不必输入尾随斜杠。 此URI的工作方式是: