如何在我的Spring MVC Web应用程序中添加.jsp页眉和页脚?

如何在我的Spring MVC Web应用程序中添加.jsp页眉和页脚?

我知道有很多不同的答案,但我想知道(这些都是真的,但更重要的是) 这样做的正确方法是什么? 我只是在学习Spring,我有一个提示,答案在于HandlerInterceptor。 现在,我可能只是这样做.jsp包括。 即使有这个包含解决方案,你能详细说明我在哪里放置页眉/页脚结构吗? 任何建议或方向都会很棒。

我在研究时发现了你的问题:-)不确定我的解决方案是否 或者是否有更好的方法,但它适用于我当前的项目。

myapp-servlet.xml您可以使用自己的实现扩展viewResolver viewClass

MYAPP-servlet.xml中

  

通过覆盖renderMergedOutputModel,您可以强制所有视图真正成为一个模板,您可以在其中定义全局布局,然后只需您的部分。

JstlView.java

 package com.my.app.view; import java.util.*; import org.springframework.web.servlet.view.InternalResourceView; import javax.servlet.RequestDispatcher; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class JstlView extends InternalResourceView { @Override protected void renderMergedOutputModel(Map model, HttpServletRequest request, HttpServletResponse response) throws Exception { String dispatcherPath = prepareForRendering(request, response); // set original view being asked for as a request parameter request.setAttribute("partial", dispatcherPath.substring(dispatcherPath.lastIndexOf("/") + 1); // force everything to be template.jsp RequestDispatcher rd = request.getRequestDispatcher("/WEB-INF/views/template.jsp"); rd.include(request, response); } } 

如果您查看Spring的InternalResourceView.java,您将在确定要使用的视图时更好地了解Spring正在做什么。

template.jsp

     

如何使用EL获取JSP中的request / session / servletcontext属性? 帮助我获取属性值${partial}

simple_partial.jsp

 

I'm a partial!

然后在控制器中,返回simple_partial视图

App.java

 package com.my.app.controller; import org.springframework.stereotype.Controller; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller @RequestMapping(value="/") public class App{ @RequestMapping(method = RequestMethod.GET) public String index() { return "simple_partial"; } } 

它将被template.jsp包装并响应出来。

我首先推荐SiteMesh,然后推荐Tiles 。