【问题标题】: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";
}