精华内容
下载资源
问答
  • 在springMVC的配置环境中添加文件上传解析器,这里可以设置上传的默认格式(解决 中文乱码问题),可以限制上传文件的大小,都可以在这里进行设置: <!-- 自定义文件上传解析器--> <bean id="multipart...

    第一步:

    导入jar包:

    第二步:

    在springMVC的配置环境中添加文件上传解析器,这里可以设置上传的默认格式(解决 中文乱码问题),可以限制上传文件的大小,都可以在这里进行设置:

    
    <!--    自定义文件上传解析器-->
        <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <!--        设置文件上传的默认编码格式-->
            <property name="defaultEncoding" value="utf-8"></property>
    <!--        显示文件上传的大小-->
            <property name="maxUploadSize" value="30"></property>
        </bean>

    第三步,

    书写一个简易的页面,这里可以用作参考:

    这里的form表单必须要设置enctype,文件上传的方式必须要用到post,因为get的长度有限制,当文件过大的时候无法进行上传

    
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
      <head>
        <title>$Title$</title>
      </head>
      <body>
      <form action="/demo" method="post" enctype="multipart/form-data">
        <p>
          姓名: <input type="text" id="uname">
        </p>
    
        <p>
          年龄: <input type="text" id="age">
        </p>
    
        <p>
          上传: <input type="file"  name="fil">
        </p>
    
        <p>
          <input type="submit" value="上传">
        </p>
      </form>
      </body>
    </html>
    

    第四步:

    编写controller,接受参数,处理文件:

    package com.bjsxt.controller;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.multipart.MultipartFile;
    
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import java.io.File;
    import java.io.IOException;
    import java.util.UUID;
    
    @Controller
    public class MyController {
    
        @RequestMapping("/demo")
        public String demo( MultipartFile fil, HttpServletRequest req) throws IOException {
    //      设定文件的存储路径,如果文件不存在就创建文件
            File file=new File(req.getServletContext().getRealPath("/img"));
            if(!file.exists()){
                file.mkdir();
            }
    // getName是表单的name,getOriginalFilename是获得文件全名  getSize是获得文件大小  getContentType是获得文件路径
            System.out.println(fil.getName()+"---"+fil.getOriginalFilename()+"--"+fil.getSize()+"-"+fil.getContentType());
    //       因为重复的文件名会替换之前的文件名,所以使用UUID,可以防止文件名重复
            String uuid = UUID.randomUUID().toString();
    
            String jgp = fil.getOriginalFilename().substring(fil.getOriginalFilename().lastIndexOf("."));
    //        新的文件名   uuid.jgp
            String fileName=uuid+jgp;
    //        文件转换,将文件存储转换到file里,名字是fileName
            fil.transferTo(new File(file,fileName));
            return "redirect:success.jsp";
        }
    }
    

    完整的mvc文件:

    最后一个是异常解析器,当文件大小出现了异常,就会跳到error.jsp页面

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:aop="http://www.springframework.org/schema/aop"
           xmlns:tx="http://www.springframework.org/schema/tx"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:mvc="http://www.springframework.org/schema/mvc"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd
           http://www.springframework.org/schema/aop
           http://www.springframework.org/schema/aop/spring-aop.xsd
           http://www.springframework.org/schema/tx
            http://www.springframework.org/schema/tx/spring-tx.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context.xsd
            http://www.springframework.org/schema/mvc
            http://www.springframework.org/schema/mvc/spring-mvc.xsd">
        <context:component-scan base-package="com.bjsxt.controller"></context:component-scan>
        <mvc:annotation-driven></mvc:annotation-driven>
        <mvc:resources mapping="/img/**" location="/img/"></mvc:resources>
    
    <!--    自定义文件上传解析器-->
        <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <!--        设置文件上传的默认编码格式-->
            <property name="defaultEncoding" value="utf-8"></property>
    <!--        显示文件上传的大小-->
            <property name="maxUploadSize" value="30"></property>
        </bean>
    
    <!--    自定义资源异常解析器-->
        <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
    <!--        异常映射-->
            <property name="exceptionMappings">
                <props>
                    <!--出现异常的信息的全路径这个异常一定写Spring抛出的异常,里面写出现异常的页面-->
                    <prop key="org.springframework.web.multipart.MaxUploadSizeExceededException">error.jsp</prop>
                </props>
            </property>
        </bean>
    </beans>

     

    展开全文
  • 当我们后台程序发生错误的时候,前端往往显示一个非常不友好的乱码界面。所以当我们后台发生错误时,需要包装 一个自定义...自定义异常在springboot的使用 自定义一个异常 package com.itzhongzi.videoedu.except...

    当我们后台程序发生错误的时候,前端往往显示一个非常不友好的乱码界面。所以当我们后台发生错误时,需要包装 一个自定义的错误json对象,返回给前端,这样,前端就会根据后台返回的json给用户一个非常友好的提示。

    未处理异常时,前端显示效果

    在这里插入图片描述

    处理后前端显示效果

    在这里插入图片描述

    自定义异常在springboot的使用
    • 自定义一个异常
    package com.itzhongzi.videoedu.exception;
    
    /**
     * 自定义异常类
     */
    public class ItzhongziException extends RuntimeException {
    
        /**
         * 状态码
         */
        private Integer code;
        /**
         * 异常消息
         */
        private String msg;
    
        public ItzhongziException(){
            super();
        }
    
        public ItzhongziException(int code, String msg) {
            super(msg);
            this.code = code;
            this.msg = msg;
        }
    
        public Integer getCode() {
            return code;
        }
    
        public void setCode(Integer code) {
            this.code = code;
        }
    
        public String getMsg() {
            return msg;
        }
    
        public void setMsg(String msg) {
            this.msg = msg;
        }
    }
    
    
    • 增加一个全局异常控制类
    package com.itzhongzi.videoedu.exception;
    
    import com.itzhongzi.videoedu.domain.JsonData;
    import org.springframework.web.bind.annotation.ControllerAdvice;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    /**
     * 异常处理控制器
     */
    @ControllerAdvice
    public class ExceptionHandler {
    
    
        @org.springframework.web.bind.annotation.ExceptionHandler(value = Exception.class)  //捕获哪种类型的异常
        @ResponseBody  //响应给前端一个json格式
        public JsonData Handler(Exception e){
            if(e instanceof ItzhongziException) {
                //通过这种方式把异常告诉前端
                ItzhongziException itzhongziException = (ItzhongziException) e;
                return JsonData.buildError(itzhongziException.getMsg(), itzhongziException.getCode());
            } else {
                return JsonData.buildSuccess("全剧异常,未知错误");
            }
        }
    }
    
    
    

    注意: 异常捕获类要用 @ControllerAdvice来注解,这样springboot程序才可以扫描到。

    • 测试
        @RequestMapping("test_db")
        public Object testDb() {
            throw new ItzhongziException(-2, "自定义错误");
    //        return videoMapper.findAll();
        }
    
    • 前端显示结果
      在这里插入图片描述
    展开全文
  • 自定义异常BusinessException

    千次阅读 2018-07-10 09:37:45
    * 业务异常, 需要对外抛错。 * 1. 接管异常信息 * 2. 单据信息与后台信息交互 * 3. 业务错误进行回滚 *  * @XXX * */ public class BusinessException extends RuntimeException{ private static final long ...
    /**
     * 业务系统 RuntimeException 
    * 业务异常, 需要对外抛错。
    * 1. 接管异常信息
    * 2. 单据信息与后台信息交互
    * 3. 业务错误进行回滚
    * 
    * @XXX
    *
    */
    public class BusinessException extends RuntimeException{
    private static final long serialVersionUID = 1L;
    private String msg;//错误消息
    private boolean async; //是否异步
    
    public BusinessException(){
    super();
    }
    
    public BusinessException(String msg) {
    super(msg);
    this.async = false;
    this.msg = msg;
    }
    
    public BusinessException(Exception e){
    super(e.getMessage());
    this.async = false;
    if(e instanceof BusinessException){
    BusinessExceptionself = (BusinessException) e;
       this.msg = self.getMsg();
    }else{
    this.msg = e.getMessage();
    }
    }
    
    public String getMsg() {
    return msg;
    }
    
    public void setMsg(String msg) {
    this.msg = msg;
    }
    
    public boolean isAsync() {
    return async;
    }
    
    public void setAsync(boolean async) {
    this.async = async;
    }
    
    public static BusinessException  BE(String msg){
    return new BusinessException (msg);
    } 
    }

     

    展开全文
  • 2.自定义异常类 处理不同业务的异常 接下来开始入手代码: 1).自定义异常类 @ControllerAdvice//添加注解 记得开启spring的全局扫描 public class BusinessException extends RuntimeException { private ...

    1.全局异常拦截:针对所有异常进行拦截 可根据请求自定义返回格式

    2.自定义异常类 处理不同业务的异常

    接下来开始入手代码:

    1).自定义异常类

    @ControllerAdvice//添加注解 记得开启spring的全局扫描
    public class BusinessException extends RuntimeException {
        private static final long serialVersionUID = 2332608236621015980L;
    
    
        private String code;
        public BusinessException(String code,String message) {
            super(message);
            this.code = code;
        }
    
        public BusinessException() {
        }
    
        public String getCode() {
            return code;
        }
    
        public void setCode(String code) {
            this.code = code;
        }
    }

     

    2).全局异常处理器(对拦截到的异常进行分类处理)

    /**
     * 全局异常处理器
     * @author chenhao
     */
    public class BusinessExceptionResolver implements HandlerExceptionResolver {
        /**日志log*/
        private static Logger log = LoggerFactory.getLogger(BusinessExceptionResolver.class);
    
        //系统抛出的异常
        @Override
        public ModelAndView resolveException(HttpServletRequest request,
                                             HttpServletResponse response, Object handler, Exception ex) {
            //handler就是处理器适配器要执行的Handler对象(只有method)
            //解析出异常类型。
            /*  使用response返回    */
            response.setStatus(HttpStatus.OK.value()); //设置状态码
            response.setContentType(MediaType.APPLICATION_JSON_VALUE); //设置ContentType
            response.setCharacterEncoding("UTF-8"); //避免乱码
            response.setHeader("Cache-Control", "no-cache, must-revalidate");
            //如果该 异常类型是系统 自定义的异常,直接取出异常信息。
            BusinessException businessException=null;
            try {
            //根据请求方式返回不同的格式(根据自己的业务需求实现,如果只返回一种格式的不用判断)
            //统一返回json 自定义了返回Result类 引入了Jackson
    if ("application/json".equals(request.getContentType())){ if(ex instanceof BusinessException){ businessException = (BusinessException)ex; //错误信息 log.error(ex.getMessage(),ex); response.getWriter().write(Result.error(businessException.getCode(),ex.getMessage()).toString()); }else { log.error(ex.getMessage(),ex); response.getWriter().write(Result.error("-1", ex.getMessage()).toString()); } }else {
              //统一返回xml格式 Message message
    = new Message(Constants.RESULT_FAIL); message.setScript(ex.toString()); response.setContentType("text/xml"); response.getWriter().write(XmlUtil.objectToString(message)); } } catch (IOException e) { log.error("与客户端通讯异常:"+ e.getMessage(), e); e.printStackTrace(); } ModelAndView modelAndView=new ModelAndView(); return modelAndView; } }

    3).Spring配置文件添加

    springMVC启动加载时会将所有的异常处理HandlerExceptionResolver实现类存放到handlerExceptionResolvers一个map结构中。

    <bean id="exceptionResolver" class="com.*.exception.BusinessExceptionResolver"></bean>

    4).使用方式(我这里只针对JSON)

    返回格式:

    json格式:

    {
    "success": false,
    "errorcode": "10",
    "errormsg": "特征值不能为空",
    "data": null
    }

    xml格式:

    <?xml version="1.0" encoding="UTF-8"?>
    <Message code="00001" script="java.lang.NullPointerException" rowCount=""/>

    目前知道的还可以定义很多异常来让框架简易。多学学总没错。

    转载于:https://www.cnblogs.com/AmbitiousMice/p/9054399.html

    展开全文
  • 这篇用C++自定义异常类,用C++的异常处理来处理上层语言Suatin-lang的异常。 枚举信息 枚举所有的错误种类,打印异常信息的时候按这个来。 enum SuaError { NoDefinedError, //未定义 ZeroError, ...
  • Spring MVC处理异常有3种方式: ...(2) 实现Spring的异常处理接口HandlerExceptionResolver 自定义自己的异常处理器; (3) 使用@ExceptionHandler注解实现异常处理; 因为博主就看了后面两种所以第一种跳过哈哈哈。
  • spring自定义全局异常

    2019-11-05 16:42:47
    通过spring的异常处理器,来进行自定义异常处理 学习目标 学习全局异常拦截器处理controller所有的异常的返回封装 定义枚举异常码,设计自定义异常 案列 创建枚举异常码,定义系统异常情况 /** * @author tianjz ...
  • 目录文件操作文件上传前端页面后端代码引入坐标在SpringMVC.xml中添加配置编写文件上传业务代码单个文件上传多文件上传文件下载SpringMVC的常用配置中文乱码过滤器静态资源处理异常处理机制自定义异常处理器...
  • WEB开发中,总会有一些不可预料的错误,对于一些课预测的异常,我们可以自定义一个异常类,然后再加载个全局异常处理器,对系统中出现的异常进行统一的处理。 注意:当你在Springmvc配置文件中配置全局异常处理器的...
  • 本篇博文则带来另外一种并不常见的使用方式,通过实现自定义的HandlerExceptionResolver,来处理异常状态 上篇博文链接: SpringBoot系列教程web篇之全局异常处理 本篇原文: SpringBoot系列教程web篇之自...
  • 自定义异常响应 无效 token 异常类重写 新增 AuthExceptionEntryPoint.java @Component public class AuthExceptionEntryPoint implements AuthenticationEntryPoint { @Override public void commence...
  • } /** * 测试自定义异常 */ @GetMapping("/hz") public String hz() throws Exception { System.out.println("@GetMapping(/hz)"); return "乱码"; } } 自定义校验注解类 package ...
  • ASP.Net MVC3中如果配置文件出错了,怎么跳转到自定义的错误页,现在参考网上的档案是说 添加 如下配置文件,并且在路径Views/Shared/下添加Error页面,测试下没有用的,请大家看看有什么好的建议啊,谢谢了啊! ...
  • 把错误码 重设成200,不然还是返回的异常信息。 注解@Compoment交由spring创建bean 之后就能愉快的返回自己的错误码了。 或者记录错误日志。 /** * 全局异常捕获 * @author Mingchenchen * */ @Component ...
  • } } 异常处理类 MyExceptionHandler 内容如下: /** * @description 自定义异常处理类 * @author hy * @date 2019-08-10 */ @ControllerAdvice public class MyExceptionHandler { //处理所有的未登录异常,并...
  • 自定义全局异常捕获

    千次阅读 2016-06-17 15:03:14
    // 避免乱码 try { response.getWriter().write( "你想返回的JSON字符串" ); } catch (IOException e) { e.printStackTrace(); } return mv; } return null ; } } 第二种方法:使用...
  • 文章目录Python学习trackback模块自定义异常类 Python学习 trackback模块 使用trackback模块打印异常信息 下面是Demo #测试trackback模块 import traceback try: print('step1') num = 1/0 except: traceback....
  • 我想把generate_unique()加在表列的默认值,但是加不上说是异常标记,所以我想我写了个函数 CREATE FUNCTION "CQCS_OPT"."GETGUID2" () RETURNS VARCHAR(200) LANGUAGE SQL NOT DETERMINISTIC READS SQL ...
  • springboot全局异常处理中文乱码

    千次阅读 2020-01-09 10:28:17
    在具体的处理方法中如果返回中文可能会出现中文乱码情况。 比如,下面代码是针对参数校验的异常处理: @ExceptionHandler(ConstraintViolationException.class) public BizResult notValidExceptio...
  • Flink 自定义UDF处理异常数据
  • 我们学习了使用@ControllerAdvice+@ExceptionHandler注解实现全局异常处理的方式,今天我们来学习另外一种全局异常处理的方式——自定义HandlerExceptionResolver类异常处理。 二、用法   首先,我们这里使用了...
  • 在用自定义GsonConverterFactory 中解析数据出现异常 retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall@5c86aee==java.lang.IllegalStateException: closed===closed``` 完整如下: java.lang....
  • Spring MVC处理异常有3...(2)实现Spring的异常处理接口HandlerExceptionResolver 自定义自己的异常处理器;定义了这样一个异常处理器之后就要在springMVC-servlet.xml中定义一个异常处理器的bean对象。 (3)使用@E
  •  利用io流读写文件时,默认的流编码都是UTF-8,d但是如果流的编码和文件的编码不一样,得到的内容是乱码.所幸的是字节流可以在转为String使用new String(byte[],charset)设置编码.字符流InputStreamReader,...
  • Android项目中,难免会用到WebView 加载网页内容,如果由于网络异常等原因导致页面内容无法加载出来的时候就会报错,默认报错内容如下图: Paste_Image.png 在上面的图中我们可以看到,如果不做处理的话,报错...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,503
精华内容 7,401
关键字:

自定义异常乱码