springmvc自定义404错误处理
2019独角兽企业重金招聘Python工程师标准>>>
这里用到的处理方式是重写DispatcherServlet这个类的noHandlerFound方法。
1,创建一个类并继承org.springframework.web.servlet.DispatcherServlet,代码如下:
import com.chaofan.www.core.exception.SystemException; import org.springframework.web.servlet.DispatcherServlet;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;/*** Created by junko on 2017/5/25.*/ public class MyDispatcherServlet extends DispatcherServlet {@Overrideprotected void noHandlerFound(HttpServletRequest request, HttpServletResponse response) throws Exception {throw new SystemException("页面不存在");} }
可以看到代码只有简单地一行,直接抛异常,为什么呢,因为这样子我们可以用统一异常处理来处理。
2,创建一个类并实现org.springframework.web.servlet.HandlerExceptionResolver
import com.alibaba.fastjson.JSONObject; import com.chaofan.www.core.exception.*; import com.chaofan.www.core.util.JsonResult; import com.chaofan.www.core.util.ToolWeb; import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerExceptionResolver; import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.HashMap; import java.util.Map;/*** Created by junko on 2017/4/18.*/ @Component public class MyExceptionResolver implements HandlerExceptionResolver {@Overridepublic ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {Map<String, Object> model = new HashMap<String, Object>();model.put("ex", ex);// 根据不同错误转向不同页面if(ex instanceof SystemException) {return new ModelAndView("error-system", model);} else {return new ModelAndView("error", model);}} }
可以看到处理方式很简单,直接跳转到error-system.html页面(这里我的文件后缀是设置成.html的),当然你可以抛你想要的任何异常,也可以跳转到任意你想要的页面,方式都一个样。
error-system.html页面代码:
3,配置web.xml,如下:
<!-- Spring MVC servlet --> <servlet><servlet-name>SpringMVC</servlet-name><servlet-class>...MyDispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring-mvc.xml</param-value></init-param><load-on-startup>1</load-on-startup><async-supported>true</async-supported> </servlet> <servlet-mapping><servlet-name>SpringMVC</servlet-name><!-- /* 会出现跳转jsp页面渲染源码而不是解析后的页面--><url-pattern>/</url-pattern> </servlet-mapping>
这里我们不再是DispatcherServlet了,而是我们上面自定义的MyDispatcherServlet,注意路径不要写错了。
4,配置spring-mvc.xml,如下:
<!--自定义dispatcherServlet后不能使用--> <!--<mvc:default-servlet-handler/>-->
<!--静态资源映射--> <mvc:resources mapping="/assets/**" location="/assets/"></mvc:resources> <mvc:resources mapping="/file/**" location="/file/"></mvc:resources> <mvc:resources mapping="/UI/**" location="/UI/"></mvc:resources>
这里要注意,因为我们试用了自定义的DispatcherServlet,所以<mvc:default-servlet-handler/>要注释掉,不然它还是走默认的DispatcherServlet请求,然后我们需要为静态资源配置路径映射,比如我们原来引入某个js的路径是这样的:/assets/backend/js/app.js,如下图:
现在我们需要配置映射,如下:
<mvc:resources mapping="/assets/**" location="/assets/"></mvc:resources>
可以看到,只要配置根目录即可,同理,其他的也是类似的写法。
启动项目,我们尝试访问一个不存在的资源路径:http://localhost:9090/wechat/user/add
可以看到,404已经成功跳转到我们配置的页面上去了。
附上SystemException代码:
public class SystemException extends Exception {public SystemException() {super();}public SystemException(String message) {super(message);}public SystemException(String message, Throwable cause) {super(message, cause);} }
就这么简单!
转载于:https://my.oschina.net/junko2013/blog/909291
springmvc自定义404错误处理相关推荐
- 在ASP.NET MVC3项目中,自定义404错误页面
在Web开发中,用户体验是至关重要的,一个友好的网站自然少不了自定义404错误页面. 让笔者为大家介绍404错误页面在ASP.NET MVC3项目中的配置: 第一步,在项目的Web.config文件中 ...
- 15个创意示例教您如何自定义 404 错误页面
在这篇文章中,你会看到一组充满创意的404错误页面设计.我希望这个集合能够启发和帮助你设计自己的 404 错误页面.一个自定义的404错误页面将鼓励用户在您的网站上停留更长的时间. 404页面必须让访 ...
- cPanel设置自定义404错误页
利用这个cpanel的错误页工具,你就可以定制错误页面了.设置自定义404错误页,有两种简单的方法. 一,利用cpanel后台控制面板添加设置404自定义错误页的方法 步骤 1.登录cP ...
- SpringMVC中404错误解决方法总结
SpringMVC中404错误解决方法总结 参考文章: (1)SpringMVC中404错误解决方法总结 (2)https://www.cnblogs.com/shangjun/p/6411353.h ...
- iis php 404错误页面,IIS自定义404错误页面
404.503错误相信大多数站长朋友很对很熟悉,网站刚刚搭建完成后我们一般都会做一个404和503错误页面.那么这是怎么操作的呢?熟悉我的朋友们一定会记得我前段时间写的一篇<Apache服务器实 ...
- android webview 自定义404错误页面!
自定义404页面.android的webview 控件可以加载网页,webview有两个方法:webView.setWebChromeClient和webView.setWebViewClient. ...
- ASP.NET 自定义404错误页面
默认情况下微软已经在 Web.config 加入了如下代码: <customErrors mode="RemoteOnly" defaultRedirect="Ge ...
- centos7 php 404,CentOS7 Apache环境配置自定义404错误页面怎么解决
我的万云数据ECS用的 CentOS 7系统,我想在网站实现 自定义的 404页面,之前已经做了 伪静态,现在 修改了 根目录的 .htaccess, 也加了 404.html 在根目录,但是随机访问 ...
- android webview 加载进度和自定义404错误页面
原帖地址:http://www.cnblogs.com/winxiang/archive/2012/10/25/2738320.html 自定义404页面.android的webview 控件可以加载 ...
最新文章
- mysql top 语句简介
- Java、Python、JS、C语言,哪个更值得学?
- Git之深入解析48个经典操作场景的分析和处理,专治不会合并代码
- 哈希表-set/数组
- 653. Two Sum IV - Input is a BST
- SELinux 案例 1
- 易筋SpringBoot 2.1 | 第三十篇:SpringBoot Reactor响应式编程介绍
- 数字信号处理matlab版答案,数字信号处理(MATLAB版)
- C++:深入理解C++11新特性:Chapter3:左值和右值
- office2019怎么在同一个窗口显示多个文件
- Web API-添加Swagger,SQL Server,记录并导出到Excel
- 跨平台桌面应用的开发框架——Electron
- 李阳疯狂英语-228句口语要素
- 拉勾数据分析实战训练营
- 干涉仪解模糊matlab,基于多级虚拟基线的干涉仪测向方法与FPGA仿真实现
- 基于32单片机的16通道ADC的数据采集
- Kaptcha验证码实现
- 解决samba文件共享服务因445端口被禁不能访问问题
- 数据结构在.net加密解密反流程混淆中的应用[看雪学院2006金秋读书季]
- 假期怕剧荒?五一假期追剧人正确打开方式
热门文章
- mysql主从的原理_Mysql主从的原理
- 计算机文化基础第二次答案,中国石油大学2020年秋计算机文化基础第二次在线作业答案...
- oracle rds 运维服务_从Oracle一条新闻说起,为什么我们需要更好更开放的RDS服务?...
- java easyui条件组合查询_EasyUi+Spring Data 实现按条件分页查询
- linux防火墙多个 多个ip配置,iptables一次性封多个ip,使用ipset 工具
- php ds扩展,PHP教程:老生常谈PHP中的数据结构:DS扩展
- java编写八数码_java实现八数码
- python json.dumps参数_json.dumps参数之解
- python到底是啥_Python语言中的__init__到底是干什么的?
- 数字计算机的分类依据,数字计算机模拟计算机分类依据