不同的路径解析器

时间:2011-02-21 18:09:00

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

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

1 个答案:

答案 0 :(得分: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";
}