崇明区建设镇网站,装修公司网站制作,自动引流免费app,大学生做微商网站SpringBoot系列文章目录
SpringBoot知识范围-学习步骤–【思维导图知识范围】 文章目录 SpringBoot系列文章目录本系列校训 SpringBoot技术很多很多环境及工具#xff1a;必要的知识深层一些的知识 上效果图在Spring Boot里使用ErrorPage还要注意的是 配套资源作业#xff…SpringBoot系列文章目录
SpringBoot知识范围-学习步骤–【思维导图知识范围】 文章目录 SpringBoot系列文章目录本系列校训 SpringBoot技术很多很多环境及工具必要的知识深层一些的知识 上效果图在Spring Boot里使用ErrorPage还要注意的是 配套资源作业 本系列校训
用免费公开视频卷飞培训班哈人打死不报班赚钱靠狠干 只要自己有电脑前后项目都能搞N年苦学无人问一朝成名天下知
SpringBoot技术很多很多
本文专指ErrorPage出错页面可以是SSM的项目也可以是springBoot 的项目
韩顺平说学习JAVA的人有两大难 第一困惑JAVA能百度到的知识太多太多完全不知道学啥 第二困惑就是不知道以什么样的顺序去学有的时候乱看一堆视频有遗漏有的时候两边的视频还有重复。 Spring的外围技术就更多了。其实ErrorPage就是其中之一。 所以学习东西要系统一些如果基本功不够那后面的技术就会学的很浮。
环境及工具
本系列环境
环境win11工具idea 2017/idea 2018jdk1.8数据库mysql5.5maven3.2.1项目导入方式maven 导入数据库前端工具mysql-front (navicat 也可以)
数据库前端工具mysql-front (navicat 也可以) 主要是这些跟PHPStudy 2018 整合了所以有的时候懒的打开navicat 关于环境的重要性直接看上面的《SpringBoot 的项目编译即报错处理–JSB系列之001》
必要的知识
error-page元素用于将一段错误代码或一个异常类型映射到Web应用中的资源路径从而在产生特殊的HTTP错误或指定的Java异常时将显示相关的资源。 error-code元素包含HTTP错误代码。exception-type是Java异常类型的完全限定的名称。location元素是Web应用中的资源相对于应用目录的路径。 下图就是一个错误页面的例子: 本质上就是让你原来的错误页数换了一个“肤”所以其实错误页面是接手了以前的那一堆的文字这个会让客户很难受 但是问题也是相对的。 事实上成熟的程序员更愿意看到的是这样的出错页面因为这里包括了出错的信息方便程序员修正这个错误 所以ErrorPage(错误页面)一般是在项目的后期再加上去不然很影响项目的前期调错
这里举个例子要注意的是这是JSP技术每次产生HTTP 404错误代码时下面的部署描述符可使Web容器显示error404.html页面
JSP page指令errorPage设置错误页 errorPage 属性用来指定一个 JSP 页面由该页面来处理当前页面中抛出但未被捕获的任何异常即类型为 Throwable 的对象。它的应用方式如下 % page errorPaqe“Relative URL” % 会出现错误的页面
% page languagejava contentTypetext/html pageEncodingGBK%
% page errorPageerror.jsp%
html
head
titletest errorPage/title
/head
body
centerh2errorPage属性测试/h2/center
/body
/html错误处理页error.jsp
% page languagejava contentTypetext/html pageEncodingGBK%
% page isErrorPagetrue%%--表示该页面是错误页 --%
html
head
titletest isErrorPage/title
/head
body
centerh2isErrorPage属性测试/h2/center
/body
/html深层一些的知识
异常由外到内如下 web服务器处理异常—web应用里面web.xml处理异常—Spring框架处理异常----控制器注释处理异常 —控制器方法里面try处理异常 这里有一个顺序的问题 Tomcat异常处理 简单暴力项目实施人员就搞定完全不管项目技术。 Web应用程序 有web.xml 的时候真香系列 在conf/web.xml里面加入错误页面配置信息。 error-pageerror-code404/error-codelocation/WEB-INF/jsp/404.jsp/location/error-page error-pageerror-code500/error-codelocation/WEB-INF/jsp/500.jsp/location/error-pageerror-pageexception-typejava.lang.Exception/exception-typelocation/WEB-INF/jsp/error.jsp/location/error-pageSpring框架处理异常 就是本文啦。
上效果图
这里的效果图是本项目的要区分开
在Spring Boot里使用ErrorPage
这里还需要配置类的知识请参见《SpringBoot 的配置类–JSB系列之003》 这里一定要把这个知识点弄懂还有就是配置类与其它的controller的运行顺序。
package com.code.config;import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;Configuration
public class WebConfig extends WebMvcConfigurerAdapter implements WebMvcConfigurer {Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new ErrorPageInterceptor());super.addInterceptors(registry);}
}
然后做一个ErrorPageInterceptor 拦截器
package com.code.config;import org.springframework.stereotype.Component;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Arrays;
import java.util.List;/*** program: ccx-axis-change* description: 自定义errorPage拦截器* author: YangPeng* create: 2018-07-11 15:51**/
Component
public class ErrorPageInterceptor extends HandlerInterceptorAdapter {private ListInteger errorCodeList Arrays.asList(404, 403, 500);Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throwsException {if (errorCodeList.contains(response.getStatus())) {//捕获异常后进行重定向controller对应的requestMapping为/error/{code}response.sendRedirect(/error/ response.getStatus());return false;}return super.preHandle(request, response, handler);}
}
再然后是处理这个映射地址的controler类 package com.code.controller;import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;/*** program: ccx-axis-change* description: 自定义controller,来接收拦截器拦截后重定向的请求* author: YangPeng* create: 2018-07-11 15:51**/
Controllerpublic class ErrorPageController {RequestMapping(value /error/{code})public String error(PathVariable int code, Model model) {String pager ;switch (code) {case 403:model.addAttribute(code, 404);pager /common/error_403;break;case 404:model.addAttribute(code, 500);pager /common/error_404;break;case 500:model.addAttribute(code, 500);pager /common/error_500;break;}return pager;}
}
最后还要做一个errorpage.html 或error.jsp的页面。 这里写的简单一些。
html
headtitleTitle/title
/head
body
img src../img/error.jpg
/body
/html最后的成果。
还要注意的是
如果项目里使用了shiro 的话一定要把 验证码的URL放出来不然的话你的验证码的路径被你自己的shiro 敌我不分的胡乱杀掉了。 这里就不详细说了这个知识点涉及的问题比验证码还多。
/*** 配置shiro的过滤器*/Bean(SHIRO_FILTER)public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager) {ShiroFilterFactoryBean factoryBean new ShiroFilterFactoryBean();// 设置安全管理器factoryBean.setSecurityManager(securityManager);// 设置未登陆的时要跳转的页面factoryBean.setLoginUrl(loginUrl);MapString, String filterChainDefinitionMap new HashMap();// 设置放行的路径if (anonUrls ! null anonUrls.length 0) {for (String anon : anonUrls) {filterChainDefinitionMap.put(anon, anon);}}filterChainDefinitionMap.put(/static/**, anon); // 先把页面全放行了不然调 试起来太麻烦了 by项目花园范德彪filterChainDefinitionMap.put(/code/**, anon); //这里要注意的是把验证码的URL放出来不然不会显示到登陆上。by项目花园范德彪// 设置登出的路径if (null ! logOutUrl) {filterChainDefinitionMap.put(logOutUrl, logout);}// 设置拦截的路径if (authcUlrs ! null authcUlrs.length 0) {for (String authc : authcUlrs) {filterChainDefinitionMap.put(authc, authc);}}MapString, Filter filtersnew HashMap();
// filters.put(authc, new ShiroLoginFilter());//配置过滤器factoryBean.setFilters(filters);factoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);return factoryBean;}成功之后就可以展示出效果图的样子了。
另外 数据源里的datasource 的名字。用户名密码。还有就是mysql 的驱动是com.mysql.jdbc.Driver 总的来说 com.mysql.jdbc.Driver 是 mysql-connector-java 5.5之前的 com.mysql.cj.jdbc.Driver 是 mysql-connector-java 6及6之后的的 初学者容易陷入一个误区就是什么东西最新版是最好的事实上很有可能他写的东西明明JDK6.0就完全足够。一边喊着自己的机器内存不足一边让内存运行着他自己用不到的东西。就比如说idea应该算是这些开发者工具里最卡的。有人可能明明只是打开几个网页那为什么不使用webstorm? 甚至不是写很多代码的时候为什么不选择更轻量级的VSCode?
配套资源
配套资源 SpringBoot中ErrorPage(错误页面)的使用–【ErrorPage组件】 https://download.csdn.net/download/dearmite/88136229
作业
无看懂即是神 范德彪经典语录 学SpringBoot你不能按套路出牌你要灵活