笔记64 Spring Boot快速入门(四)
SpringBoot中错误处理、端口设置和上下文路径以及配置切换
一、错误处理
假设在访问首页的时候会出现一些错误,然后将这些错误当作异常抛出,反馈给用户。
1.修改IndexController.java,使其抛出异常。
package com.example.demo.Controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping; import java.text.DateFormat;
import java.util.Date; @Controller
public class IndexController {
@RequestMapping("/index")
public String index(Model model) throws Exception{
model.addAttribute("time",DateFormat.getDateTimeInstance().format(new Date()));
if(true){
throw new Exception("some exception");
}
return "hellos";
}
}
2.新增异常类GlobalExceptionHandler.java,用来捕获异常并展示异常页。
显示捕获的异常和发生异常的URL
package com.example.demo.Exception; import com.sun.org.apache.xpath.internal.operations.Mod;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; @ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(value = Exception.class)
public ModelAndView defaultErrorHandler(HttpServletRequest request,Exception e) throws Exception{
ModelAndView modelAndView=new ModelAndView();
modelAndView.addObject("exception",e);
modelAndView.addObject("url",request.getRequestURL());
modelAndView.setViewName("errorPage");
return modelAndView;
}
}
3.异常页:errorPage.jsp
<%--
Created by IntelliJ IDEA.
User: 98050
Date: 2018/7/12
Time: 11:19
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<div style="width:500px;border:1px solid lightgray;margin:200px auto;padding:80px">
系统 出现了异常,异常原因是:
${exception}
<br><br>
出现异常的地址是:
${url}
</div>
</body>
</html>
4.运行结果

5.知识点
@ControllerAdvice + @ExceptionHandler 全局处理 Controller 层异常
<1>注解@ControllerAdvice
@ControllerAdvice
public class GlobalExceptionHandler {
}
确保此 GlobalExceptionHandler 类能被扫描到并装载进 Spring 容器中。
<2>@ExceptionHandler
被此注解包裹的函数会对Controller层抛出的Exception及其子类的异常进行处理。
<3>ModelAndView
使用ModelAndView类用来存储处理完后的结果数据,以及显示该数据的视图。从名字上看ModelAndView中的Model代表模型,View代表视图,这个名字就很好地解释了该类的作用。业务处理器调用模型层处理完用户请求后,把结果数据存储在该类的model属性中,把要返回的视图信息存储在该类的view属性中,然后让该ModelAndView返回该Spring MVC框架。框架通过调用配置文件中定义的视图解析器,对该对象进行解析,最后把结果数据显示在指定的页面上(通过setViewName()方法跳转到指定的页面)。
二、端口设置和上下文切换
server.port=8080
server.servlet.context-path=/test
三、配置切换
三个配置文件:
application.properties:核心配置文件
spring.datasource.url = jdbc:mysql://localhost:3306/sh
spring.datasource.username = root
spring.datasource.password = 123456
spring.datasource.driverClassName = com.mysql.jdbc.Driver
#页面热加载
spring.thymeleaf.cache = false
#端口
server.port=8888 spring.mvc.view.prefix = /WEB-INF/jsp/
spring.mvc.view.suffix = .jsp #关闭默认模板引擎
spring.thymeleaf.enabled=false #上下文路径
server.servlet.context-path=/test #多配置文件
spring.profiles.active=test
application-dev.properties:开发环境配置文件
server.port=8080
server.servlet.context-path=/test
application-pro.properties:生产环境配置文件
server.port=7070
server.servlet.context-path=/
通过application.properties中的spring.profiles.active 来切换所需的配置文件。
四、配置文件yml格式
server:
port: 6060
servlet:
context-path: /test
笔记64 Spring Boot快速入门(四)的更多相关文章
- 笔记61 Spring Boot快速入门(一)
IDEA+Spring Boot快速搭建 一.IDEA创建项目 略 项目创建成功后在resources包下,属性文件application.properties中,把数据库连接属性加上,同时可以设置服 ...
- 笔记65 Spring Boot快速入门(五)
SpringBoot+JPA 一.什么是JPA? JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期 ...
- 笔记63 Spring Boot快速入门(三)
SpringBoot中使用JSP Springboot的默认视图支持是Thymeleaf,但是Thymeleaf还没开始学,熟悉的还是jsp,所以要让Springboot支持 jsp. 一.在pom. ...
- 笔记70 Spring Boot快速入门(八)(重要)
上传文件 一.方式一 1.上传页面 upLoadPage.html <!DOCTYPE html> <html lang="en"> <head> ...
- 笔记67 Spring Boot快速入门(七)
SpringBoot+RESTful+JSON 一.RESTful架构 REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移. ...
- 笔记66 Spring Boot快速入门(六)
SpringBoot中使用Mybatis 一.注解方式 1.创建映射文件CategoryMapper.java 使用注解@Mapper 表示这是一个Mybatis Mapper接口.使用@Select ...
- 笔记62 Spring Boot快速入门(二)
SpringBoot部署 一.jar方式 1.首先安装maven. <1>下载最新的maven版本:https://maven.apache.org/download.cgi <2& ...
- Spring Boot 快速入门
Spring Boot 快速入门 http://blog.csdn.net/xiaoyu411502/article/details/47864969 今天给大家介绍一下Spring Boot MVC ...
- Spring Boot快速入门(二):http请求
原文地址:https://lierabbit.cn/articles/4 一.准备 postman:一个接口测试工具 创建一个新工程 选择web 不会的请看Spring Boot快速入门(一):Hel ...
随机推荐
- C++判断字符是否是元音字母
写这个随笔的起因很奇怪. 我本来想找找C++有没有内置的函数(类似isalpha(), isdigit(), isalnum()之流)能直接完成这个功能,但是函数没发现,却发现很多博客都是逐个字符判断 ...
- oldlinux
http://oldlinux.org/Linux.old/ http://oldlinux.org/Book-Lite/
- php socket简单原理及实现笔记
1.什么是socket? socket:网络上的两个程序通过一个双向的通信连接实现数据的交换,连接的一端称为一个socket. 因此socket运行是置少有2个端组成,一个为服务端一个为客户端(客户端 ...
- Delphi 字符串函数SysUtils单元 AnsiSameStr、AnsiSameText、AnsiCompareStr、AnsiCompareText、AnsiCompareFileName、AnsiUpperCase、AnsiLowerCase、AnsiUpperCaseFileName、AnsiLowerCaseFileName、AnsiPos、AnsiQuotedStr
USES 单元 SysUtils 非 StrUtils AnsiSameStr.AnsiSameText.AnsiCompareStr.AnsiCompareText.AnsiCompareFileN ...
- 【多线程】无锁编程以及CAS
无锁编程 / lock-free / 非阻塞同步 无锁编程,即不使用锁的情况下实现多线程之间的变量同步,也就是在没有线程被阻塞的情况下实现变量的同步,所以也叫非阻塞同步(Non-blocking Sy ...
- POJ 3187 Backward Digit Sums (dfs,杨辉三角形性质)
FJ and his cows enjoy playing a mental game. They write down the numbers from 1 to N (1 <= N < ...
- MD5、SHA1、DES加密和解密,Base64编码解码
/// <summary> /// EncryptHelper 来自 www.Admin10000.com /// </summary> public class Encryp ...
- IE11“__doPostBack”未定义”
IE 11 下<asp:LinkButton> 点击出现 “__doPostBack”未定义” 在项目根目录 App_Browsers 下新建 浏览器文件(.browser),让其与IE1 ...
- 原生js实现拖拽效果
面向对象 + 原生js拖拽 拖拽div等盒子模型,都是日常操作没有什么问题,如果是拖拽图片的话,会有一点小坑要踩...... 那么我们看代码: var Move_fn = {}; (function( ...
- Linux v4l2编程(摄像头信息采集)
基于Linux3.4.2,自己做一点儿视频信息采集及网络传输的小实验,边做边学,一些基础知识同步整理..... 1. 定义 V4L2(Video For Linux Two) 是内核提供给应用程序访问 ...