springmvc+sitemesh2+freemarker整合

2023-11-02

1.背景:

最近在搭建自己的springmvc+sitemesh2+freemarker框架时,遇到了一个问题,就是sitemesh2整合springmvc时,springmvc没有正确的渲染sitemesh2的模板页面,在一番百度之后,发现网上类似问题有不少人遇到,但是没有一个明确的解决方案。现在记录下我自己的解决方案,供大家参考。

2.问题原因分析:

解决问题要对症下药,首先就是确定问题原因。那么为什么springmvc没有渲染sitemesh2的模板页呢?首先需要了解一下sitemesh和springmvc的工作原理。

2.1 sitemesh工作原理:

这个百度一下,随处可见。这里做简要的说明。sitemesh2的工作步骤大致如下:
a.拦截请求判断该请求目标是否需要加载其他模板;
b.不需要,则直接放行;需要则先获取请求目标的输出流,在web项目中表现为目标html页面的输出流。
c.在需要加载其他模板页的情况下,将请求目标页面的输出流保存在request中,之后做站内转发,获取模板页的内容(如果有多个模板页则重复这一过程)
d.在获取请求目标和所有需要的模板页之后,将他们整合成一个页面

2.2 springmvc渲染页面过程:

springmvc的servlet在拦截的请求之后,会调用对应的handler来处理请求,之后再使用springmvc内置的freemarker渲染工具类将handler中加载的数据渲染到页面上。如果没有对应的handler,那么springmvc只好直接返回请求的目标页面。

2.3 原因分析:

简要了解了sitemesh和springmvc的工作过程之后,问题的原因就能说明白了。sitemesh在进行站内转发获取模板页面时,发送的目标请求地址就是我们在sitemesh配置文件中的模板页的位置,模板页的位置,当spring mvc拦截到这个站内的这个转发请求,显然这个请求是没有对应的handler来处理的,接着springmvc就放弃了对这个页面进行渲染,继而sitemesh接受到的模板页也就是没有经过渲染的。

3.解决方案:

3.1 解决方案思路:

通过分析,我们知道是springmvc因为没有对应的handler来处理sitemesh转发的请求,因此没有渲染模板页,那我们就自己渲染。通过什么样的方式来渲染呢?根据sitemesh的特性,我们可以写一个filer,来专门拦截sitemesh转发过来的请求,然后主动调用springmvc的渲染方法来渲染模板页。

3.2 整合demo

demo地址:https://github.com/wr1ttenyu/ssm-integration

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

springmvc+sitemesh2+freemarker整合 的相关文章

  • Spring MVC 数据绑定入门

    一 应用intellij IDEA创建SpringMVC项目 简单介绍一下 eclipse和idea有些概念上的差别 eclipse中的workspace相当于idea中的project eclipse中的project相当于idea中的m
  • spring aop(MethodInterceptor), springmvc (HandlerInterceptor), servlet Filter有什么区别?

    在spring web mvc中实现拦截功能时 有三种方式 1 使用功能servlet filter 2 使用springmvc 提供的 HandlerInterceptor 3 使用spring core 提供的 MethodInterc
  • SpringMVC:整合JQUERY与JSON

    原文地址 http liuzidong iteye com blog 1069343 参考资料 1 Spring3 MVC 笔记 二 json rest优化 http 7454103 iteye com show full true 2 j
  • Spring MVC类型转换的相关说明

    转自 Spring MVC类型转换的相关说明 下文讲采用示例的方式 讲述相关类型说明 如下所示 insert jsp页面的代码如下
  • @Value值注入及配置文件组件扫描方式

    spring配置文件对应的是父容器 springMVC配置文件产生的是子容器 前者一般配置数据源 事务 注解等 当然还可以进一步将一些配置细化到其他xml中 后者一般配置控制层相关的 如静态资源 视图解析器等 系统启动的时候 先初始化父容器
  • Day31——单个拦截器中三个方法的执行顺序以及时机

    一 回顾 前面拦截器简介用实现HandlerInterceptor接口实现了自定义拦截器 可以知道它有三个需要实现的方法 分别是preHandle postHandle afterCompletion 二 知识储备 2 1 单个拦截器中三个
  • log4j:WARN No appenders could be found for logger 问题解决

    在springmvc的web项目中常常会在tomcat启动的时候出现这种提示 log4j WARN No appenders could be found for logger org springframework web context
  • 【j2ee系列】springmvc中使用quartz,项目启动就执行某些任务

    quartz有几种执行任务的方式 至于几种我也不知道 至少有两种吧 一种是org springframework scheduling quartz CronTriggerBean方式 配置指定的时间执行一次任务 如
  • Spring MVC结果转换

    一 返回视图 ModelAndView 1 视图路径 默认在当前Control的路径下 表示项目部署的根目录 例如 new ModelAndView home jsp 返回的路径是 user home jsp new ModelAndVie
  • springmvc有哪几种请求参数的方式呢?

    转自 springmvc有哪几种请求参数的方式呢 传送参数至后台 是每个系统都必须面对的事实 因为系统就是一个实现人机交互的工具 那么Spring MVC中如何在后台获取参数呢 下文将一一道来 如下所示 方式一 在Controller的形参
  • JSR303使用说明文档

    1 引言 参数校验是我们程序开发中必不可少的过程 用户在前端页面上填写表单时 前端js程序会校验参数的合法性 当数据到了后端 为了防止恶意操作 保持程序的健壮性 后端同样需要对数据进行校验 后端参数校验最简单的做法是直接在业务方法里面进行判
  • Spring MVC 使用JSR303校验表单

    导入JSR303相关JAR包 Spring MVC 使用JSR303校验表单 创建registerForm jsp
  • DispatcherServlet工作原理简介说明

    转自 DispatcherServlet工作原理简介说明 下文笔者将讲述DispatcherServlet的工作流程 如下所示 当DispatcherServlet接到请求时 他先回查找适当的处理程序来处理请求 DispatcherServ
  • Spring MVC中如何限制Controller为POST或GET方式接收参数呢?

    转自 Spring MVC中如何限制Controller为POST或GET方式接收参数呢 在Web页面开发中 最常用的接收参数值方式有 GET和POST方式 那么SpringMVC中如何定义参数的接收方式呢 实现思路 只需在注解的时 使用m
  • nginx+ftp实现图片的上传与访问

    1 Nginx的安装 在前面的博客讲到 具体见下面的网址 Nginx的安装 http blog csdn net zbw18297786698 article details 52556293 2 Linux安装ftp组件 2 1 安装vs
  • SpringMVC的数据响应(页面跳转、回写数据)

    SpringMVC的数据响应 一 SpringMVC的数据响应 01 SpringMVC的数据响应 数据响应方式 02 SpringMVC的数据响应 页面跳转 返回字符串形式 03 SpringMVC的数据响应 页面跳转 返回ModelAn
  • Springmvc 学习心得

    1 三层架构的介绍和mvc的设计模式 Springmvc的特点 清晰的角色划分 每个功能模块对应一个组件 1 前端控制器 DispatchServlet 2 处理器映射器 HanderMapping 根据 requestMapping 找到
  • spring boot 项目开发常用目录结构

    在spring boot开发中一些常用的目录划分 一 代码层结构 根目录 net csdn 1 启动类 CsdnApplication java 推荐放在根目录net csdn包下 2 实体类 domain A net csdn domai
  • Spring MVC视图解析器简介说明

    转自 Spring MVC视图解析器简介说明 Spring MVC视图解析器简介说明 下文讲述 Spring MVC视图 的相关说明 如下所示 Spring 视图解析器 Spring视图解析器用于对Spring中的视图进行解析 如下配置所示
  • Java SpringMVC开发前的准备工作

    转自 Java SpringMVC开发前的准备工作 下文讲述Java开发前的相关准备工作 如下所示 JDK配置 tomcat配置 eclipse配置 一 JDK配置 需在开发机器上安装相应的JDK版本 然后可使用下列方法检测其是否安装成功

随机推荐