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快速入门(四)的更多相关文章

  1. 笔记61 Spring Boot快速入门(一)

    IDEA+Spring Boot快速搭建 一.IDEA创建项目 略 项目创建成功后在resources包下,属性文件application.properties中,把数据库连接属性加上,同时可以设置服 ...

  2. 笔记65 Spring Boot快速入门(五)

    SpringBoot+JPA 一.什么是JPA? JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期 ...

  3. 笔记63 Spring Boot快速入门(三)

    SpringBoot中使用JSP Springboot的默认视图支持是Thymeleaf,但是Thymeleaf还没开始学,熟悉的还是jsp,所以要让Springboot支持 jsp. 一.在pom. ...

  4. 笔记70 Spring Boot快速入门(八)(重要)

    上传文件 一.方式一 1.上传页面 upLoadPage.html <!DOCTYPE html> <html lang="en"> <head> ...

  5. 笔记67 Spring Boot快速入门(七)

    SpringBoot+RESTful+JSON 一.RESTful架构 REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移. ...

  6. 笔记66 Spring Boot快速入门(六)

    SpringBoot中使用Mybatis 一.注解方式 1.创建映射文件CategoryMapper.java 使用注解@Mapper 表示这是一个Mybatis Mapper接口.使用@Select ...

  7. 笔记62 Spring Boot快速入门(二)

    SpringBoot部署 一.jar方式 1.首先安装maven. <1>下载最新的maven版本:https://maven.apache.org/download.cgi <2& ...

  8. Spring Boot 快速入门

    Spring Boot 快速入门 http://blog.csdn.net/xiaoyu411502/article/details/47864969 今天给大家介绍一下Spring Boot MVC ...

  9. Spring Boot快速入门(二):http请求

    原文地址:https://lierabbit.cn/articles/4 一.准备 postman:一个接口测试工具 创建一个新工程 选择web 不会的请看Spring Boot快速入门(一):Hel ...

随机推荐

  1. 2018-12-25-win2d-图片水印

    title author date CreateTime categories win2d 图片水印 lindexi 2018-12-25 10:37:52 +0800 2018-03-19 08:3 ...

  2. 所有anaconda安装包失败的解决办法汇总

    多试几次,有时候网络不稳定下载一半会停掉 更改Pip源 pip install scrapy -i https://pypi.tuna.tsinghua.edu.cn/simple 1.首先确认镜像源 ...

  3. 关于Python实现Interface base64加解密方法

    ''' 以下Python Code运行环境为windows10, Python版本为3.5.3 涉及的库:base64,json,unittest ''' # coding=utf-8 # impor ...

  4. Quartz.Net 任务调度之特性(3)

    再实现类中使用,就是继承IJob的类 [PersistJobDataAfterExecution] //执行后的保留作业数据,链式传参(上一次的任务数据) [DisallowConcurrentExe ...

  5. python学习--第二天 爬取王者荣耀英雄皮肤

    今天目的是爬取所有英雄皮肤 在爬取所有之前,先完成一张皮肤的爬取 打开anacond调出编译器Jupyter Notebook 打开王者荣耀官网 下拉找到位于网页右边的英雄/皮肤 点击[+更多] 进入 ...

  6. Temporarily disable Ceph scrubbing to resolve high IO load

    https://blog.dachary.org/2014/08/02/temporarily-disable-ceph-scrubbing-to-resolve-high-io-load/ In a ...

  7. Selenium webdriver 安装(一)

    6年的.NET开发,干过小项目,做过研发,任何架构.设计模式.各种文档齐全.技术大牛,给我最深的体会是都不如用户最后的轻轻一点,一下毁所有.这个时候我突然想起了一首歌<都选C>哈哈.如何防 ...

  8. 国际C 语言乱码大赛(IOCCC )

    你也许听说过“国际C 语言乱码大赛(IOCCC )”,能获奖的人毫无疑问是世界顶级C 程序员.这是他们利用C 语言的特点极限挖掘的结果.下面这个例子就是网上广为流传的 一个经典作品:// 原始代码如下 ...

  9. Java Software Engineer Skill Map

    # Java Software Engineer Skill Map## Basic### Core Java- Java The Complete Reference Ninth Edition.p ...

  10. What size do you use for varchar(MAX) in your parameter declaration?

    What size do you use for varchar(MAX) in your parameter declaration? In this case you use -1. See al ...