快速构建一个权限项目(三)

 如何构建一个权限项目这里接着我们上次说的来编写代码,我们这个点主要讲的是接口请求全局异常处理,

接下来跟我一起看我编写的代码如何实现的,首先我们要定义一个全局异常的处理类,在common包下建一个类SpringExceptionResolver:

package cn.oyc.common;

import cn.oyc.exception.ParamException;
import cn.oyc.exception.PermissionException;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@Slf4j
public class SpringExceptionResolver implements HandlerExceptionResolver {
    private final Logger logger = LoggerFactory.getLogger(SpringExceptionResolver.class);
    @Override
    public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object o, Exception ex) {
        String url = request.getRequestURL().toString();
        ModelAndView mv;
        String defaultMsg = "System error";
        // 这里我们要求项目中所有请求json数据,都是用.json结尾
        if (url.endsWith(".json")){
            if (ex instanceof PermissionException || ex instanceof ParamException){
                JsonData result = JsonData.fail(ex.getMessage());
                mv = new ModelAndView("jsonView",result.toMap());
            }else{
                logger.error("unknown json exception, url:"+url,ex);
                JsonData result = JsonData.fail(defaultMsg);
                mv = new ModelAndView("jsonView",result.toMap());
            }
        }else if (url.endsWith(".page")){   // 这里我们要求项目中所有请求page页面,都是用.page结尾
            logger.error("unknown exception, url:"+url,ex);
            JsonData result = JsonData.fail(defaultMsg);
            mv = new ModelAndView("exception",result.toMap());
        }else{
            logger.error("unknown exception, url:"+url,ex);
            JsonData result = JsonData.fail(defaultMsg);
            mv = new ModelAndView("jsonView",result.toMap());
        }
        return mv;
    }
}

在这些代码的基础下我们还需要在pom文件导入相关依赖,相关依赖如下:

<!--jsp api-->
    <dependency>
      <groupId>org.apache.tomcat</groupId>
      <artifactId>jsp-api</artifactId>
      <version>6.0.36</version>
    </dependency>

还需要定义我们自己的异常,建立一个exception包,然后建一个PermissionException类:

package cn.oyc.exception;
/**
 * 自己定义的异常类
 * */
public class PermissionException extends RuntimeException {
    public PermissionException() {
        super();
    }

    public PermissionException(String message) {
        super(message);
    }

    public PermissionException(String message, Throwable cause) {
        super(message, cause);
    }

    public PermissionException(Throwable cause) {
        super(cause);
    }

    protected PermissionException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
        super(message, cause, enableSuppression, writableStackTrace);
    }
}

我们的定义的一个全局异常如果page出现异常找的execption需要我们在views文件夹下创建一个execption.jsp文件:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Exception</title>
</head>
<body>

</body>
</html>

这里我们先不做请求,等后续在完善

然后在我们的spring-servlet.xml下加上一个bean:

 <bean class="cn.oyc.common.SpringExceptionResolver"/>

我们的接口请求全局异常处理就讲到这里后续请关注下一章

原文地址:https://www.cnblogs.com/Myoyc/p/12231464.html

时间: 2024-11-05 22:44:10

快速构建一个权限项目(三)的相关文章

快速构建一个权限项目(二)

好各位小伙伴们我们接着上一篇文章来叙述完善我们的项目,希望大家能够喜欢: 在上一篇文章中我们已经把前面基本的配置都配置好了,下面就来教大家一个我们这个项目的核心类去搭建mybatis吧, 首先我们需要一个工具generate,这个工具我们在网站上也能搜索到,但是我们这里接下来也会直接教大家使用. 首先我们要导入这个工具,这里呢不能上传文件所以我将以代码的形式展示给你们: 首先我们的工具是这样一个节点展示的,其中最重要的是这generator.xml文件,文件内容如下: <?xml version

快速构建一个权限项目(四)

接着上一章的,接下来我们所写的校验工具-BeanValidator开发,好了跟着我们下面的代码来实现: 首先我们需要先在pom.xml引入依赖: <!-- validator --> <dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> <version>1.1.0.Final</version

快速构建一个权限项目(五)

今天我们首先讲的是Json转化工具-JsonMapper开发: 在这里我们首先在pom文件引入jackson的两个依赖,分别是: <!-- jackson --> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-core-asl</artifactId> <version>1.9.13</version> <

快速构建一个权限项目(六)

今天我们讲解的是Http请求前后监听工具 首先得创建一个类用来做处理:HttpInterceptor.class: package cn.oyc.common; import cn.oyc.util.JsonMapper;import lombok.extern.slf4j.Slf4j;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.web.servlet.ModelAndView

react快速构建一个应用项目

安装 dva-cli 你应该会更希望关注逻辑本身,而不是手动敲入一行行代码来构建初始的项目结构,以及配置开发环境. 那么,首先需要安装的是 dva-cli .dva-cli 是 dva 的命令行工具,包含 init.new.generate 等功能,目前最重要的功能是可以快速生成项目以及你所需要的代码片段. $ npm install -g dva-cli 安装完成后,可以通过 dva -v 查看版本,以及 dva -h 查看帮助信息. 创建新应用 安装完 dva-cli 后,我们用他来创建一个

ember.js快速构建一个应用项目(1)

步骤: 安装Ember. 创建一个新应用程序. 定义路由. 编写一个UI组件. 构建您的应用程序以部署到生产环境. 安装Ember 您可以使用npm(Node.js包管理器,你需要安装node.js)使用单个命令来安装Ember.在终端中输入以下内容: ember new ember-quickstart 创建一个新应用程序 一旦你通过npm安装了Ember CLI,你将可以ember在你的终端中访问一个新的命令.您可以使用该ember new命令来创建一个新的应用程序: ember new e

【springboot】之快速构建一个web项目

基于maven,首先看pom文件 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.4.0.RELEASE</version> </parent> <dependencies> <!-- springboot启动

快速构建一个Spring Boot+MyBatis的项目IDEA(附源码下载)

如何快速构建一个Spring Boot的项目 工具 idea JDK版本 1.8 Spring Boot 版本 1.5.9 环境搭建实现:最基础前端可以访问到数据库内的内容 开始 IDEA 内部新建一个项目,项目类型选择Spring Initializr,Project SDK选择适合你当前环境的版本,这里我选择的是1.8(Spring Boot 2.0以上的版本,JDK选择请选择1.8即以上版本),构建服务选择默认就好,点击Next 填写Group和Artifact(此处我使用的是默认,请根据

快速构建一个 Springboot

快速构建一个 Springboot 官网:http://projects.spring.io/spring-boot/ Spring Boot可以轻松创建可以"运行"的独立的,生产级的基于Spring的应用程序.我们对Spring平台和第三方图书馆有一个看法,所以你可以从最开始的时候开始吧.大多数Spring Boot应用程序需要很少的Spring配置. 特征 创建独立的Spring应用程序 直接嵌入Tomcat,Jetty或Undertow(不需要部署WAR文件) 提供有意思的&qu