笔记64 Spring Boot快速入门(四)

SpringBoot中错误处理、端口设置和上下文路径以及配置切换

一、错误处理

假设在访问首页的时候会出现一些错误,然后将这些错误当作异常抛出,反馈给用户。

1.修改IndexController.java,使其抛出异常。

 1 package com.example.demo.Controller;
 2 
 3 import org.springframework.stereotype.Controller;
 4 import org.springframework.ui.Model;
 5 import org.springframework.web.bind.annotation.RequestMapping;
 6 
 7 import java.text.DateFormat;
 8 import java.util.Date;
 9 
10 @Controller
11 public class IndexController {
12     @RequestMapping("/index")
13     public String index(Model model) throws Exception{
14         model.addAttribute("time",DateFormat.getDateTimeInstance().format(new Date()));
15         if(true){
16             throw new Exception("some exception");
17         }
18         return "hellos";
19     }
20 }

2.新增异常类GlobalExceptionHandler.java,用来捕获异常并展示异常页。

显示捕获的异常和发生异常的URL

 1 package com.example.demo.Exception;
 2 
 3 import com.sun.org.apache.xpath.internal.operations.Mod;
 4 import org.springframework.web.bind.annotation.ControllerAdvice;
 5 import org.springframework.web.bind.annotation.ExceptionHandler;
 6 import org.springframework.web.servlet.ModelAndView;
 7 
 8 import javax.servlet.http.HttpServletRequest;
 9 
10 @ControllerAdvice
11 public class GlobalExceptionHandler {
12     @ExceptionHandler(value = Exception.class)
13     public ModelAndView defaultErrorHandler(HttpServletRequest request,Exception e) throws Exception{
14         ModelAndView modelAndView=new ModelAndView();
15         modelAndView.addObject("exception",e);
16         modelAndView.addObject("url",request.getRequestURL());
17         modelAndView.setViewName("errorPage");
18         return modelAndView;
19     }
20 }

3.异常页:errorPage.jsp

 1 <%--
 2   Created by IntelliJ IDEA.
 3   User: 98050
 4   Date: 2018/7/12
 5   Time: 11:19
 6   To change this template use File | Settings | File Templates.
 7 --%>
 8 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
 9 <html>
10 <head>
11     <title>Title</title>
12 </head>
13 <body>
14     <div style="500px;border:1px solid lightgray;margin:200px auto;padding:80px">
15         系统 出现了异常,异常原因是:
16         ${exception}
17         <br><br>
18         出现异常的地址是:
19         ${url}
20     </div>
21 </body>
22 </html>

4.运行结果

5.知识点  

@ControllerAdvice + @ExceptionHandler 全局处理 Controller 层异常

<1>注解@ControllerAdvice

1 @ControllerAdvice
2 public class GlobalExceptionHandler {
3 }

确保此 GlobalExceptionHandler 类能被扫描到并装载进 Spring 容器中。

<2>@ExceptionHandler

被此注解包裹的函数会对Controller层抛出的Exception及其子类的异常进行处理。

<3>ModelAndView

  使用ModelAndView类用来存储处理完后的结果数据,以及显示该数据的视图。从名字上看ModelAndView中的Model代表模型,View代表视图,这个名字就很好地解释了该类的作用。业务处理器调用模型层处理完用户请求后,把结果数据存储在该类的model属性中,把要返回的视图信息存储在该类的view属性中,然后让该ModelAndView返回该Spring MVC框架。框架通过调用配置文件中定义的视图解析器,对该对象进行解析,最后把结果数据显示在指定的页面上(通过setViewName()方法跳转到指定的页面)。

二、端口设置和上下文切换

1 server.port=8080
2 server.servlet.context-path=/test

三、配置切换

三个配置文件:

application.properties:核心配置文件

 1 spring.datasource.url = jdbc:mysql://localhost:3306/sh
 2 spring.datasource.username = root
 3 spring.datasource.password =  123456
 4 spring.datasource.driverClassName = com.mysql.jdbc.Driver
 5 #页面热加载
 6 spring.thymeleaf.cache = false
 7 #端口
 8 server.port=8888
 9 
10 spring.mvc.view.prefix = /WEB-INF/jsp/
11 spring.mvc.view.suffix = .jsp
12 
13 
14 #关闭默认模板引擎
15 spring.thymeleaf.enabled=false
16 
17 #上下文路径
18 server.servlet.context-path=/test
19 
20 #多配置文件
21 spring.profiles.active=test

application-dev.properties:开发环境配置文件

1 server.port=8080
2 server.servlet.context-path=/test

application-pro.properties:生产环境配置文件

1 server.port=7070
2 server.servlet.context-path=/

通过application.properties中的spring.profiles.active 来切换所需的配置文件。

四、配置文件yml格式

1 server:
2   port: 6060
3   servlet:
4     context-path: /test
原文地址:https://www.cnblogs.com/lyj-gyq/p/9299569.html