我对web-INF下的webapp vs下的spring mvc和jsp页面位置有疑问。
让我们说我们有以下设置。
webapp
WEB-INF
mvc-dispatcher.xml
web.xml
login.jsp
register.jsp
success.jsp
error.jsp
index.jsp
我可以使用http://host.com/app/index.jsp之类的网址从浏览器引用网页,然后我可以将(href)链接到 register.jsp 。从 register.jsp 发布到控制器,该控制器可以返回解析为 success.jsp 的成功视图(使用 InternalResourceViewResolver )。
如果我在 WEB-INF 下移动jsp页面(而不是早先在 webapp 下),我将无法从浏览器中引用http://host.com/app/index.jsp。同样来自 success.jsp 目前我使用href =“index.jsp”链接到 index.jsp ,这需要更改为映射到控制器(可能在/ like调度程序servlet)将 index 作为视图名称返回。所以我的所有链接都需要由控制器提供。我对吗 ?或者当jsp页面位于WEB-INF下时(在配置了InternalResourceViewResolver的情况下),有没有办法在没有任何映射控制器的情况下引用jsp页面。
此致
米滕。
答案 0 :(得分:6)
你是对的。您不能直接从浏览器引用WEB-INF
内的JSP。这是非常好。您应该通过控制器将所有请求转发到JSP,并且所有JSP都应该在WEB-INF
下。这样做有很多原因:
WEB-INF
下的一个JSP可用于提供不同的网址而不做任何更改,用户对此一无所知!考虑到您在没有Controller的情况下直接引用JSP的问题:
/notmappedurl
Spring(Tiles)时,会尝试查找notmappedurl
模板定义。 (根据我对Tiles + Spring的经验)。我认为其他视图技术也有类似的行为。@RequestMapping("/someurl")void someurl(){}
。 Spring将尝试根据方法名称查找someurl
视图。只是一个存根。