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

如何将Spring MVC控制器映射到带有和不带有尾随斜线的uri?

农诚
2023-03-14

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

此URI的工作方式是:

http://localhost/myapp/ui/
http://localhost/myapp/ui
<servlet>
    <servlet-name>ui</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>ui</servlet-name>
    <url-pattern>/ui/*</url-pattern>
</servlet-mapping>    
@Controller
public class UiRootController {

    @RequestMapping(value={"","/"})
    public ModelAndView mainPage() { 
        DataModel model = initModel();
        model.setView("intro");     
        return new ModelAndView("main", "model", model);
    }

    @RequestMapping(value={"/other"})
    public ModelAndView otherPage() { 
        DataModel model = initModel();
        model.setView("otherPage");     
        return new ModelAndView("other", "model", model);
    }

}

共有1个答案

郎雅昶
2023-03-14

使用Springboot,我的应用程序可以通过将@RequestMapping的“value”选项设置为空字符串来回复带有和不带有尾随斜杠的内容:

@RestController
@RequestMapping("/some")
public class SomeController {
//                  value = "/" (default) ,
//                  would limit valid url to that with trailing slash.
    @RequestMapping(value = "", method = RequestMethod.GET)
    public Collection<Student> getAllStudents() {
        String msg = "getting all Students";
        out.println(msg);
        return StudentService.getAllStudents();
    }
}
 类似资料:
  • 是否可以通过URL的trailing关键字映射spring mvc控制器。例如,假设我有以下URL: 我想有3个控制器方法。第1个url应由控制器“X”处理,第2个url应由方法“Y”处理,第3、4个url应由单个方法“Z”处理。这意味着任何以结尾的url都应仅由方法“z”处理。无论该URL的主要内容是什么。

  • 我一直在尝试使用: 使用此链接: 但我有一个错误: 当我换成: 是工作。我能做些什么来和日期一起工作? 谢啦

  • 问题内容: Spring MVC(3.0)将带斜杠和不带斜杠的URL视为同一URL。 我需要在应用程序内部进行此操作(以免通过Apache重写规则等)。 一种方法是: 但这通常有两个问题: 太多的控制器 参数问题:编码错误 题 有没有一种方法可以截获所有URL,并且如果它们带有斜杠,可以将它们重定向到相对的地址而不用斜杠? 问题答案: Web配置中所需的所有重写规则 如果没有很多,你可以像这样配置

  • 我要做的是,当用户访问时,应该将他们代理到运行在端口80上的apache。 当我访问时,我会得到正确的结果(index.php)。当我访问时,我会得到正确的结果(404来自apache)。当我访问时,我会得到正确的结果(404来自nginx)。当我访问时,我会得到正确的结果(404来自apache)。 问题是当我访问时。我得到一个301响应,并被重定向到(注意后面的斜杠,当然还有'localhos

  • 后续问题。有这样的等级制度。其中A是基类: 以及以下内容: 我想将B实例的所有ID映射到B.isVisible()的值,并将C实例的ID映射到TRUE 在最初问题的帮助下,我将其提炼为以下格式: 丑陋的版本是: 有没有帮助改进它,为更优雅的版本提供默认true?

  • 这个问题不难,我已经用自己的方法解决了,但我想听听你的意见,也许有什么方法可以让这成为一个改进的选择?Java 8-11。