Spring MVC Controller更改URL或发出错误的URL

时间:2013-03-15 19:59:50

标签: java http url spring-mvc url-rewriting

我有一个SpringMVC应用程序我不确定它是否正常工作。我有一个注册表单,当我点击查询按钮将应用程序发布到控制器并且用户被发布到第二页getList.htm时,网址读取http://localhost:8080/myapp/registration.htm,其显示结果列表但是当发布到第二页网址仍然显示为http://localhost:8080/myapp/registration.htm

当发布第二页时,用户可能会被带回第一页http://localhost:8080/myapp/registration.htm以显示从getList.htm中选择的记录(这会显示多条记录)。

当用户回发到http://localhost:8080/myapp/registration.htm时,网址会显示http://localhost:8080/myapp/getList/1985121244.htm,其中1985121244是记录编号。一旦用户回到第一页,网址是否应显示http://localhost:8080/myapp/registration.htm

此外,如果用户在从getList.htm POST返回后尝试POST第一页,则会获得HTTP 400,并且URL会显示http://localhost:8080/myapp/getList/registration.htm。第二页附加到URL,这不是控制器中的适当映射。有人可以解释这里发生了什么以及如何解决。

被修改

当我第一次进入应用程序时,主菜单是http://localhost:8080/myapp/hello.htm,当我点击一个href时,我被带到了注册页面但页面显示但是网址没有改变。当从hello.htm页面点击href tage时,Controller会确定获取注册页面并使用return new ModelAndView("registration");返回它我看到一些网站说我应该使用return new ModelAndView("redirect:/registration");但是那时使用404 Not Found - http://localhost:8080/myapp/registration"。任何关于我在发布代码之前我可以看到的任何想法都是很多

1 个答案:

答案 0 :(得分:2)

对我而言,您似乎只是在登录后返回视图名称。当然,这不会改变你的网址。而不是返回视图名称使用“redirect:/getList.htm”指向您需要的URL。

然后处理getList.htm的控制器检查用户是否已登录并返回正确的视图名称。