文档章节

SpringMVC-Freemarker异常配置

小楼听雨中
 小楼听雨中
发布于 2014/02/17 15:04
字数 272
阅读 3239
收藏 4

1、spring mvc的异常配置

    spring mvc 提供了SimpleMappingExceptionResolver来处理异常,这里的只是由web 请求,经由controller引发的异常,无法处理freemarker的异常


2、freemarker自定义异常

/**
 * freemarker页面上的异常控制
 * 在webmvc-config.xml里面的freemarkerSettings里头配置
 * @author scipio
 * @created 2014-02-01
 */
public class FreemarkerExceptionHandler implements TemplateExceptionHandler {
    private static final Logger log = LoggerFactory
            .getLogger(FreemarkerExceptionHandler.class);

    public void handleTemplateException(TemplateException te, Environment env,
                                        Writer out) throws TemplateException {

            log.warn("[Freemarker Error: " + te.getMessage() + "]");
            throw new ViewException("freemarker error",te);
    }
}


  这里重新包装异常抛出(这种方式要求比较严格,因为freemarker对个别的错误,比如某个变量没有定义,可以忽略,只是后台抛异常,然后整个页面还是会渲染出来)


3、配置HtmlFreeMarkerConfigurer

 <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
        <property name="templateLoaderPath" value="/WEB-INF/views/"/>
        <property name="freemarkerSettings">
            <props>
                <prop key="template_update_delay">0</prop>
                <prop key="default_encoding">UTF-8</prop>
                <prop key="locale">zh_CN</prop>
                <prop key="url_escaping_charset">UTF-8</prop>
                <prop key="whitespace_stripping">true</prop>
                <prop key="number_format">#</prop>
                <!-- 配置自定义的freemarker异常处理-->
                <prop key = "template_exception_handler">com.persia.exception.FreemarkerExceptionHandler</prop>
            </props>
        </property>
    </bean>


4、针对该异常,配置web.xml

 

<!--配置freemarker异常-->
    <error-page>
        <exception-type>com.persia.exception.ViewException</exception-type>
        <location>/WEB-INF/views/error/viewException.ftl</location>
    </error-page>


© 著作权归作者所有

下一篇: idea配置
小楼听雨中
粉丝 61
博文 201
码字总数 129524
作品 0
海淀
程序员
私信 提问
加载中

评论(16)

小楼听雨中
小楼听雨中 博主

引用来自“Carl_Wang141”的评论

还想请问的是viewException.ftl这个页面的内容大概是怎样的
这个就可以自己去定义了,显示一个友好的页面就可以
C
Carl_Wang141
还想请问的是viewException.ftl这个页面的内容大概是怎样的
C
Carl_Wang141

引用来自“Carl_Wang141”的评论

其实我现在也搞不清,当freemarker有异常时,我们后台怎么捕获,怎么跳转到我们制定的页面,这个流程具体是怎么样的呢,你可否帮我们讲解一下0

引用来自“alwaysmile”的评论

通过FreemarkerExceptionHandler去捕获
public class ExceptionFreemarkerConfigration extends FreeMarkerConfigurer { @Override public void afterPropertiesSet() throws IOException,TemplateException{ if(getConfiguration()==null){ setConfiguration(createConfiguration()); } getConfiguration().setTemplateExceptionHandler(new FreemarkerExceptionHandler()); } } 我看着还有些说法要配置这个,你能帮忙解释下这个跟你的配置有什么关联吗。Thx
小楼听雨中
小楼听雨中 博主

引用来自“Carl_Wang141”的评论

其实我现在也搞不清,当freemarker有异常时,我们后台怎么捕获,怎么跳转到我们制定的页面,这个流程具体是怎么样的呢,你可否帮我们讲解一下0
通过FreemarkerExceptionHandler去捕获
小楼听雨中
小楼听雨中 博主

引用来自“Carl_Wang141”的评论

你好,我也按照你的配置在我项目中配过,但是当模板页有错误时,无法跳转到指定的页面,不起作用,你能发表一个更加详细的吗?还想请问你的是HtmlFreeMarkerConfigurer这个类是你自己编写的吗,可否提供代码参考,先谢谢了!0
用这个“org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer”
C
Carl_Wang141
其实我现在也搞不清,当freemarker有异常时,我们后台怎么捕获,怎么跳转到我们制定的页面,这个流程具体是怎么样的呢,你可否帮我们讲解一下0
C
Carl_Wang141
你好,我也按照你的配置在我项目中配过,但是当模板页有错误时,无法跳转到指定的页面,不起作用,你能发表一个更加详细的吗?还想请问你的是HtmlFreeMarkerConfigurer这个类是你自己编写的吗,可否提供代码参考,先谢谢了!0
小楼听雨中
小楼听雨中 博主

引用来自“kaka272827267”的评论

路径有的,感觉这种配置只是针对异常还落在后台的情况 对于在freemarker模板页产生的无法去捕捉
handleTemplateException这个方法这边不知是否可以直接做跳转
freemarker的异常就属于后台的异常
kaka272827267
kaka272827267
路径有的,感觉这种配置只是针对异常还落在后台的情况 对于在freemarker模板页产生的无法去捕捉
handleTemplateException这个方法这边不知是否可以直接做跳转
小楼听雨中
小楼听雨中 博主

引用来自“kaka272827267”的评论

就是按照你上面流程,继承RuntimeException,然后在tomcat的web.xml中指定这个exception-type
你在web.xml里头配置出错调整的页面路径是对的么?
FreeMarker | 取值篇

第一部分:Spring Boot 集成 FreeMarker 1、 需要这些依赖 2、yml 我喜欢 yml,所以删掉 ,新建 3、配置 在 中添加如下配置 4、Controller - View 5、运行效果 第二部分:取值 1、学过 free...

Wenyi_Feng
2018/06/14
165
0
在Spring+FreeMarker框架中使用Shiro的Tag标签

目前Freemarker对Shrio的标签还不支持,不过已经有人贡献出来第三方面解决方案,如下: 1、下载shiro-freemarker-tags GitHub地址:https://github.com/jagregory/shiro-freemarker-tags 可以...

zkool
2014/01/19
7.9K
0
模板引擎 FreeMarker 2.3.16 发布

前段时间,我用FreeMarker开始一个新项目的开发,等开发结束后我开始有点后悔了。因为对FreeMarker不足的迫不及待,以及FreeMarker的迟迟不更新的问题。 今天终于看到有新的FreeMarker退出来...

红薯
2009/12/10
1K
2
springboot系列十四 web模板 freemarker thymeleaf

Freemarker https://freemarker.apache.org/ http://freemarker.foofun.cn/ springboot中freemarker的默认配置 示例 依赖 简单配置 页面模板 在resource目录下新建目录 static,然后新建个文...

yimingkeji
2018/12/28
52
2
SpringMvc整合Freemarker

1、 新建WebProject,工程名称是SpringFreemarker;然后手动添加jar包,需要的jar包如下: SpringFramework jar包下载地址: http://ebr.springsource.com/repository/app/library/version/d...

游宵
2014/04/23
3.1K
0

没有更多内容

加载失败,请刷新页面

加载更多

MongoDB复制集

MongoDB复制集 2017年07月09日 19:36:01 zzm_ 阅读数 1 原文链接:http://blog.51cto.com/dreamlinux/1945705 MongoDB目前的高可用架构主要有主从、复制集、以及分片,单纯的主从技术几乎被淘...

linjin200
17分钟前
5
0
高防CDN是如何保障互联网安全?

DDoS攻击,一直是剪不断理还乱,而如何防御DDoS,也一直是网络安全的世纪难题。虽然CDN技术在不断增强,但更可怕的是DDoS攻击手段也在不断升级多元化,攻击渠道甚至更多种,所以普通的CDN加速...

云漫网络Ruan
19分钟前
5
0
springcloud 配置 springboot admin详解

1.配置pom 引入相关依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jetty</artifactId> </dependenc......

spirngbootcloudssm
19分钟前
4
0
Mockito 2 关于打标(stubbing)

请参考下面有关于打标的代码。 //You can mock concrete classes, not just interfaces LinkedList mockedList = mock(LinkedList.class); //stubbing when(mockedList.get(0)).thenReturn("......

honeymoose
21分钟前
5
0
kafka安装和启动

kafka的背景知识已经讲了很多了,让我们现在开始实践吧,假设你现在没有Kafka和ZooKeeper环境。 Step 1: 下载代码 下载1.1.0版本并且解压它。 > tar -xzf kafka_2.12-2.3.0.tgz> cd kafka_...

roockee
24分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部