天天看点

spring MVC中定义异常页面

如果我们在使用spring mvc的过程中,想自定义异常页面的话,我们可以使用dispatcherservlet来指定异常页面,具体的做法很简单:

下面看我曾经的一个项目的spring配置文件:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

<code>&lt;?</code><code>xml</code> <code>version="1.0" encoding="utf-8" ?&gt;</code>

<code>    </code><code>&lt;!-- 扫描web包,应用spring的注解 --&gt;</code>

<code>    </code><code>&lt;</code><code>context:component-scan</code> <code>base-package="com.xxx.training.spring.mvc"/&gt;</code>

<code>    </code><code>&lt;!-- 配置视图解析器,将modelandview及字符串解析为具体的页面 --&gt;</code>

<code>    </code><code>&lt;</code><code>bean</code>

<code>            </code><code>class="org.springframework.web.servlet.view.internalresourceviewresolver"</code>

<code>            </code><code>p:viewclass="org.springframework.web.servlet.view.jstlview"</code>

<code>            </code><code>p:prefix="/web-inf/views/"</code>

<code>            </code><code>p:suffix=".jsp"/&gt;</code>

<code>    </code><code>&lt;!--定义异常处理页面--&gt;</code>

<code>    </code><code>&lt;</code><code>bean</code> <code>id="exceptionresolver" class="org.springframework.web.servlet.handler.simplemappingexceptionresolver"&gt;</code>

<code>        </code><code>&lt;</code><code>property</code> <code>name="exceptionmappings"&gt;</code>

<code>            </code><code>&lt;</code><code>props</code><code>&gt;</code>

<code>                </code><code>&lt;</code><code>prop</code> <code>key="java.sql.sqlexception"&gt;outexception&lt;/</code><code>prop</code><code>&gt;</code>

<code>                </code><code>&lt;</code><code>prop</code> <code>key="java.io.ioexception"&gt;outexception&lt;/</code><code>prop</code><code>&gt;</code>

<code>            </code><code>&lt;/</code><code>props</code><code>&gt;</code>

<code>        </code><code>&lt;/</code><code>property</code><code>&gt;</code>

<code>    </code><code>&lt;/</code><code>bean</code><code>&gt;</code>

<code>&lt;/</code><code>beans</code><code>&gt;</code>

  上面的定义异常处理部分的解释为:只要发生了sqlexception或者ioexception异常,就会自动跳转到web-inf/views/outexception.jsp页面。

一般情况下我们的outexception.jsp页面的代码为:

<code>&lt;%@ page contenttype=</code><code>"text/html;charset=utf-8"</code> <code>language=</code><code>"java"</code> <code>%&gt;</code>

<code>&lt;html&gt;</code>

<code>&lt;head&gt;</code>

<code>    </code><code>&lt;title&gt;异常处理页面&lt;/title&gt;</code>

<code>&lt;/head&gt;</code>

<code>&lt;body&gt;</code>

<code>&lt;% exception ex = (exception) request.getattribute(</code><code>"exception"</code><code>);%&gt;</code>

<code>&lt;h2&gt;exception:&lt;%=ex.getmessage()%&gt;</code>

<code>&lt;/h2&gt;</code>

<code>&lt;/body&gt;</code>

<code>&lt;/html&gt;</code>

  当然你也可以修改样式,这个就看个人喜好了、

另外记得要在web.xml也使用类似下面的方式处理异常哦。:

<code>&lt;</code><code>error-page</code><code>&gt;</code>

<code>     </code><code>&lt;</code><code>error-code</code><code>&gt;404&lt;/</code><code>error-code</code><code>&gt;</code>

<code>     </code><code>&lt;</code><code>location</code><code>&gt;/web-inf/pages/404.jsp&lt;/</code><code>location</code><code>&gt;</code>

<code> </code><code>&lt;/</code><code>error-page</code><code>&gt;</code>

<code> </code><code>&lt;</code><code>error-page</code><code>&gt;</code>

<code>     </code><code>&lt;</code><code>exception-type</code><code>&gt;java.lang.exception&lt;/</code><code>exception-type</code><code>&gt;</code>

<code>     </code><code>&lt;</code><code>location</code><code>&gt;/web-inf/pages/exception.jsp&lt;/</code><code>location</code><code>&gt;</code>

  因为这两个异常处理的维度是不一样的,简单说,spring的resolver是spring内部使用的,而web。xml里的是整个webapp共同使用的。

建议两个都配置上,

因为spring的resolver可以和spring结合的更紧密,可扩展的更多。