【问题标题】:Different paths resolver不同路径解析器
【发布时间】:2011-02-21 18:08:59
【问题描述】:

我有一个我正在努力解决的问题。这里只是一个假设的情况。例如,我有两个文件夹 jspPages1 和 jspPages2。我想保持分开的jsp页面。我有一个调度程序 servlet。我希望将第一个文件夹中的页面映射到“/public/jspNameFromFirstFolder.jsp”,并将第二个文件夹中的页面映射到“protected/jspNameFromSecondFolder.jsp”。我可以用一个调度程序 servlet 做到这一点吗?如果我尝试将 web.xml 中的 url 模式设置为“/protected/'asteriks'”和“/public/'asteriks'”,@RequestMapping 会是什么样子?你能帮我澄清一下吗?提前谢谢你。

【问题讨论】:

    标签: java model-view-controller spring-mvc


    【解决方案1】:

    在我看来,您一开始就不应该公开您的 JSP。毕竟,您希望您的用户使用您提供的请求映射来访问该页面。然后,您的控制器将决定向用户呈现哪个视图(在您的情况下,它们是 JSP 文件)。

    我通常做的是将视图填充到WEB-INF目录下,以防止用户猜测和直接访问JSP文件。如果它可以帮助您组织文件,您仍然可以将视图分开。因此,您的目录结构可能如下所示:-

    WEB-INF
    |
    |- jsp
    |   |
    |   |-- public
    |   |    |
    |   |    |- page1.jsp
    |   |    |- page2.jsp
    |   |
    |   |-- protected
    |   |    |
    |   |    |- page3.jsp
    |   |    |- page4.jsp
    

    这样,您可以在 Spring MVC 中将您的视图文件夹注册为 /WEB-INF/jsp/

    您的请求映射可以是您想要的任何东西。它与您的视图目录结构无关。

    例如:-

    // when your user visits /page-1.htm, it returns public/page1.jsp as the view
    @RequestMapping("/page-1")
    public String showPage1() {
        return "public/page1";
    }
    
    // when your user visits /secure/page-3.htm, it returns protected/page3.jsp as the view
    @RequestMapping("/secure/page-3")
    public String showPage3() {
        return "protected/page3";
    }
    

    【讨论】:

    • 谢谢。这就是我一直在寻找的。​​span>
    猜你喜欢
    • 1970-01-01
    • 2011-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-19
    • 1970-01-01
    • 2019-03-12
    • 1970-01-01
    相关资源
    最近更新 更多