• 笔记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
  • 相关阅读:
    ufw防火墙设置
    [从0到1搭建ABP微服务]
    .Net Core CI/CD环境搭建(正式版)
    [Abp vNext微服务实践]
    [Abp vNext微服务实践]
    [Abp vNext微服务实践]
    [Abp vNext微服务实践]
    [Abp vNext微服务实践]
    [Abp vNext微服务实践]
    [Abp vNext微服务实践]
  • 原文地址:https://www.cnblogs.com/lyj-gyq/p/9299569.html
Copyright © 2020-2023  润新知