笔记64 Spring Boot快速入门(四)
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快速入门(四)的更多相关文章
- 笔记61 Spring Boot快速入门(一)
IDEA+Spring Boot快速搭建 一.IDEA创建项目 略 项目创建成功后在resources包下,属性文件application.properties中,把数据库连接属性加上,同时可以设置服 ...
- 笔记65 Spring Boot快速入门(五)
SpringBoot+JPA 一.什么是JPA? JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期 ...
- 笔记63 Spring Boot快速入门(三)
SpringBoot中使用JSP Springboot的默认视图支持是Thymeleaf,但是Thymeleaf还没开始学,熟悉的还是jsp,所以要让Springboot支持 jsp. 一.在pom. ...
- 笔记70 Spring Boot快速入门(八)(重要)
上传文件 一.方式一 1.上传页面 upLoadPage.html <!DOCTYPE html> <html lang="en"> <head> ...
- 笔记67 Spring Boot快速入门(七)
SpringBoot+RESTful+JSON 一.RESTful架构 REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移. ...
- 笔记66 Spring Boot快速入门(六)
SpringBoot中使用Mybatis 一.注解方式 1.创建映射文件CategoryMapper.java 使用注解@Mapper 表示这是一个Mybatis Mapper接口.使用@Select ...
- 笔记62 Spring Boot快速入门(二)
SpringBoot部署 一.jar方式 1.首先安装maven. <1>下载最新的maven版本:https://maven.apache.org/download.cgi <2& ...
- Spring Boot 快速入门
Spring Boot 快速入门 http://blog.csdn.net/xiaoyu411502/article/details/47864969 今天给大家介绍一下Spring Boot MVC ...
- Spring Boot快速入门(二):http请求
原文地址:https://lierabbit.cn/articles/4 一.准备 postman:一个接口测试工具 创建一个新工程 选择web 不会的请看Spring Boot快速入门(一):Hel ...
随机推荐
- 关于GeneXus封装方法Model的方法
最近 刚从外地出差回来 工作任务不是很重 能够抽点时间记点东西 下午花了2个多钟头尝试了一下GeneXus的封装方法的功能,这里记一下便于自己以后查看.我们在许多项目中或多或少都会有着重复代码编写的 ...
- MD5文件去重
//计算文件的MD5码 private string getMD5Hash(string pathName) { string strResult = ""; string str ...
- django 在保存数据前进行数据校验
我们想在保存用户进入数据库之前做一些字段的校验,先贴出代码: import re from django.db import models from django.db.models.signals ...
- Python3.5-20190518-廖老师-自我笔记-模块
在Python中,一个.py文件就称之为一个模块(Module) 可以作为module的文件类型有".py".".pyo".".pyc".& ...
- InnoDB事务之redo log工作原理
Reference:https://time.geekbang.org/column/article/121710 InnoDB是一个事务性的存储引擎,而InnoDB的事务实现是基于事务日志redo ...
- SQL 内部连接
内部链接INNER JOIN关键字选择两个表中具有匹配值的记录. SQL INNER JOIN 语法 SELECT column_name(s) FROM table1 INNER JOIN tabl ...
- Tomcat负载均衡图片显示不正常解决方法
在部署一个Tomcat玩玩的时候,发现在做nginx负载均衡时,网站显示不正常,图片会变得很大.测试了半天都没成功,最后查找资料,才发现Tomcat负载均衡时Session处理有问题,Session是 ...
- Delphi正则表达式使用方法(TPerlRegEx)
目前主流的delphi下的正则表达式,应该是 PerlRegEx . 官方网站: http://www.regular-expressions.info/delphi.html 直接下载: ht ...
- iOS 完全复制UIView
如果要完全复制一个UIView和对象的时候可以使用对象序列化方法 // Duplicate UIView - (UIView*)duplicate:(UIView*)view { NSData * t ...
- css使子元素在父元素居中的各种方法
html结构: <div class="parent"> <div class="child"></div> </di ...