• 解决拦截器抛出异常处理类的500状态码Html默认格式响应 !


    解决方式

    1. <mvc:annotation-driven>
    2. <mvc:message-converters>
    3. <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
    4. <property name="supportedMediaTypes">
    5. <list>
    6. <value>application/json;charset=UTF-8value>
    7. list>
    8. property>
    9. bean>
    10. mvc:message-converters>
    11. mvc:annotation-driven>

    Java对象转换为JSON格式的响应,使用spring-mvc.xml配置适当的消息转换器。

    问题出处的相关类如下

    interceptor如下

    1. package com.ekgc.interceptor;
    2. import com.ekgc.exception.UnLoginException;
    3. import com.ekgc.pojo.SysUser;
    4. import org.springframework.web.servlet.HandlerInterceptor;
    5. import org.springframework.web.servlet.ModelAndView;
    6. import javax.servlet.http.HttpServletRequest;
    7. import javax.servlet.http.HttpServletResponse;
    8. import javax.servlet.http.HttpSession;
    9. /**
    10. * 登录拦截器
    11. * 1.实现 HandlerInterceptor接口
    12. * 2.实现接口方法
    13. * 3.在springmvc.xml中配置拦截器
    14. * @author Magic
    15. * @version 1.0
    16. */
    17. public class LoginInterceptor implements HandlerInterceptor {
    18. @Override
    19. public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    20. System.out.println("preHandle...");
    21. // 记录请求处理开始时间
    22. request.setAttribute("startTime", System.currentTimeMillis());
    23. // 检查用户是否已经登录
    24. if (!isLoggedIn(request)) {
    25. //抛出未登录异常
    26. throw new UnLoginException("您还没有登录!!!");
    27. }
    28. return true;
    29. }
    30. @Override
    31. public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
    32. System.out.println("postHandle...");
    33. // 计算请求处理时间
    34. long startTime = (long) request.getAttribute("startTime");
    35. long endTime = System.currentTimeMillis();
    36. long executionTime = endTime - startTime;
    37. System.out.println("Request execution time: " + executionTime + " ms");
    38. }
    39. @Override
    40. public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
    41. System.out.println("afterCompletion...");
    42. }
    43. private boolean isLoggedIn(HttpServletRequest request) {
    44. // 检查用户是否已登录的逻辑
    45. HttpSession session = request.getSession();
    46. SysUser user = (SysUser) session.getAttribute("user");
    47. // 返回true表示已登录,false表示未登录
    48. if (user == null) {
    49. return false;
    50. }
    51. return true;
    52. }
    53. }

     自定义异常类

    1. package com.ekgc.exception;
    2. /**
    3. * @author Magic
    4. * @version 1.0
    5. */
    6. public class UnLoginException extends RuntimeException{
    7. public UnLoginException(String message) {
    8. super(message);
    9. }
    10. }

     异常处理类

    1. package com.ekgc.exception;
    2. import com.ekgc.response.RespBody;
    3. import org.springframework.web.bind.annotation.ControllerAdvice;
    4. import org.springframework.web.bind.annotation.ExceptionHandler;
    5. import org.springframework.web.bind.annotation.ResponseBody;
    6. /**
    7. * 登录异常处理类
    8. * @author Magic
    9. * @version 1.0
    10. */
    11. @ControllerAdvice
    12. public class LoginExceptionHandler {
    13. @ExceptionHandler(UnLoginException.class)
    14. @ResponseBody
    15. public RespBody loginExceptionHandler(UnLoginException e) {
    16. String message = e.getMessage();
    17. System.out.println(message);
    18. return new RespBody(-1,message,message);
    19. }
    20. }

  • 相关阅读:
    FFmpeg 常用API
    论文阅读:2020GhostNet华为轻量化网络
    隐私计算 FATE - 多分类神经网络算法测试
    【云原生系列】Docker学习
    数字IC笔试题和回答整理
    【光伏场地建设规划】python实现-附ChatGPT解析
    司徒理财:10.12黄金CPI预期升温、今日最新走势操作策略
    腾讯配合监管机构:未经批准不得发布新应用或更新版本
    STM32产品介绍
    (免费领取源码)计算机毕业设计项目:57788基于SSM框架的绿化设施管理系统(开题答辩+程序定制+全套文案 )上万套实战教程手把手教学JAVA、PHP,node.js,C++、python、大屏数据
  • 原文地址:https://blog.csdn.net/qq_58647634/article/details/132683890