项目开发中常见问题记录

一、关于mybatis框架的问题 

1. mybatis设置sql中的参数时,#和$的区别?

  使用#的环境:当只传入一个参数的时候(此时参数的类型会被明确设置);当使用集合类或者是类实例作为参数携带体时,如果参数需要自动加上'',就用#。

  使用$的环境:传入的参数不要求mybatis对其做任何处理就使用$。

二、关于spring框架的问题

1. 当使用window.location.href跳转页面后,springmvc在渲染页面时不解析request中的参数

  需要时间解决。

2. 在spring mvc应用中,对于前台form表单提交的数组或json字符串,后端在使用@requestParam注解接收时,是接收不到的,需要配置对应的转换器,比如配置实现ConditionalGenericConverter的转换器,然后再配置到spring mvc框架中即可,我使用的是spring boot,使用配置类实现WebMvcConfigurer,然后覆盖方法,配置形如此即可。

    @Override
    public void addFormatters(FormatterRegistry registry) {
        WebMvcConfigurer.super.addFormatters(registry);
        registry.addConverter(new StringToLongListConverter());
    }

三、http

1. 在下载的使用,会产生下载的文件竟然是当前的页面内容

  必须要在写入内容到response的输出流之前设置contentType和header。

2. 下载的文件的文件名会存在乱码的问题

  方案一:  

//此案例是以下载excel为说明
String fileName = "下载的文件名称"; fileName = URLEncoder.encode(fileName, "UTF-8"); response.setContentType("application/vnd.ms-excel,charset=UTF-8"); response.addHeader("Content-Disposition", "attachment;filename=" + fileName + ".xls;filename*=UTF-8''" + fileName + ".xls");

  方案二:

//此案例是以下载excel为说明
String fileName = "下载的文件名称"; fileName = new String(filename.getBytes(), "ISO8859-1"); response.setContentType("application/vnd.ms-excel,charset=UTF-8"); response.addHeader("Content-Disposition", "attachment;filename=" + fileName + ".xls");

四、关于Java

1. JDBC在机器不连接VPN的时候可以访问到数据库,但是在当机器连接了VPN之后,JDBC访问数据库失败,报连接被拒绝的错误。

  这是在Java的网络编程中,涉及到了IPv4和IPv6的问题,只需要设置Java虚拟机的属性 Java java.net.preferIPv4Stack=true即可。默认是false。

2. 使用Java的java.awt的相关API绘制中文文字时,Linux会出现中文文字都是小框框的问题,或者是加粗没有生效。

  这是当前的系统环境没有相关的字体的缘故,只需要引入响应的字体即可。

3. net.sf.json.JsonObject在put值时,如果value为null,则不会加入此项。

未完,待续

原文地址:https://www.cnblogs.com/wy2185/p/6097869.html