token驗證,如果驗證失敗,拋出自定義異常,返回結果固定格式


spring-mvc.xml

<!-- json轉換器 -->
    <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" id="jsonMessageConverter">
    </bean>
 
    <!-- 統一異常處理類,需要在web.xml中將默認的異常處理器關閉 -->
    <bean class="com.xxx.common.fitter.TokenExceptionResolver" id="handlerExceptionResolver">
        <!-- 注入一個json轉換器 -->
        <property name="jsonMessageConverter" ref="jsonMessageConverter">
    </property></bean>

切面類

只是滿足條件后,拋出異常

throw new TokenException("無權限");

TokenExceptionResolver類

 import java.io.IOException;

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

import org.springframework.http.HttpOutputMessage;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.HttpMessageNotWritableException;
import org.springframework.http.server.ServletServerHttpResponse;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;

import com.xxx.common.bean.JsonResultBean;
import com.xxx.common.util.EifiniConstant;
import com.xxx.common.exception.TokenException;
 
 public class TokenExceptionResolver implements HandlerExceptionResolver{
    // json轉換器
        // 將異常信息轉json
        private HttpMessageConverter<JsonResultBean> jsonMessageConverter;
     
        public HttpMessageConverter<JsonResultBean> getJsonMessageConverter() {
            return jsonMessageConverter;
        }
        //依賴注入三種方式之一setter注入
        public void setJsonMessageConverter(
                HttpMessageConverter<JsonResultBean> jsonMessageConverter) {
            this.jsonMessageConverter = jsonMessageConverter;
        }
        
    @Override
    public ModelAndView resolveException(HttpServletRequest request,
            HttpServletResponse response, Object handler, Exception ex) {
        TokenException tokenException;
        if(ex instanceof TokenException){
            tokenException = (TokenException)ex;
            // 異常信息解析
            HttpOutputMessage outputMessage = new ServletServerHttpResponse(response);
     
            try {
                //將exceptionResultInfo對象轉成json輸出,這里使用spring異常處理的工具
                jsonMessageConverter.write(new JsonResultBean(EifiniConstant.ERROR,tokenException.getMessage()), MediaType.APPLICATION_JSON, outputMessage);
            } catch (HttpMessageNotWritableException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }else{
//            tokenException = new TokenException("未知錯誤");
        }
        return new ModelAndView();
    }
 
    
 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM