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