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. linux100day(day7)--用户管理和权限管理简单介绍

    系统基础 计算机的三大部件 CPU 内存 IO 总线 一般使用system call和api来调用硬件 一些基础命令, pwd 查看当前路径 cal 计算器 clock 时钟 hwclock 显示与设 ...

  2. 不修改源代码,动态注入Java代码的方法(转)

    转自:https://blog.csdn.net/hiphoon_sun/article/details/38707927 有时,我们需要在不修改源代码的前提下往一个第三方的JAVA程序里注入自己的代 ...

  3. CodeForces 隐藏标签

    设置css 记录. 以防忘记.

  4. 手写实现indexOf

    突然奇想.自己手写一个indexOf package com.toov5.test; public class Test8 { public static int find(String str1, ...

  5. Delphi 字符串函数StrUtils单元AnsiLeftStr、AnsiRightStr、AnsiMidStr、AnsiContainsStr、AnsiContainsText、AnsiStartsStr、AnsiStartsText、AnsiEndsStr、AnsiEndsText、AnsiReplaceStr、AnsiReplaceText、AnsiResemblesText...

    引用单元 StrUtils 非 SysUtilsAnsiLeftStr.AnsiRightStr.AnsiMidStr.AnsiContainsStr.AnsiContainsText.AnsiSta ...

  6. UVa 699 The Falling Leaves (树水题)

    Each year, fall in the North Central region is accompanied by the brilliant colors of the leaves on ...

  7. jquery实现简单的搜索功能

    管理系统中需要实现导航列表的搜索功能,写了一个简单的小栗子: <!DOCTYPE html> <html lang="en"> <head> & ...

  8. Angular项目中引入jQuery

    npm install --save jquery npm install @types/jquery --save 在对应的组件中引入 import * as $ from "jquery ...

  9. 关于Extjs6.0 controller文件过大,实现模块化分离

    Extjs一般都是一个视图对应着一个controller 一旦碰到视图中逻辑过于繁琐造成controller文件过大不利于维护和修改,所以要通过混入mixins混入功能来实现模块化! 首先创建一个视图 ...

  10. windows10下Mysql5.7安装指南

    背景 值此国庆70周年之际,为了发扬广大国内软件开发行业,我决定使用MySQL5.7. 呸!实际情况是公司的项目用的是Mysql5.7,但是正式服务器在国外,而且测试服务器也是在国外,关键问题是我这个 ...