Java开发过程中遇到的问题及解决方法


1、SpringMVC前台提交参数绑定list时大小超过256

  解决方案:①在使用该方法的类上添加方法修改默认长度

  @InitBinde
  public void initBinder(WebDataBinder binder) {
    //长度根据实际情况修改
    binder.setAutoGrowCollectionLimit(500);

  }

 

  ② 在整个项目中使用

  定义一个初始化类

public class myInitializer implements WebBindingInitializer {
    @Override
    public void initBinder(WebDataBinder binder) {
       binder.setAutoGrowCollectionLimit(100000);
    }

  }

   然后在配置文件中配置

  <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">

    <property name="webBindingInitializer">

      <bean class="xxx.myInitializer"/> //class指myInitializer类

    </property>

  </bean>

 

 

2、get方式请求后台时,由于参数中带有特殊字符&导致异常

  前端传递参数时使用encodeURIComponent方法进行重新编码,后端因为spring默认会进行一次解码操作,所以可以直接获取。

 

3、使用hql语句对其中的日期属性和当前日期进行过滤时,直接使用new Date()导致的问题

  可以先把当前日期转成字符串然后再进行过滤(配合Date和Calender类)

 

4、sql语句处理分组的时候,在本地服务使用没问题,在服务器上出现sql异常

  group by语句规范,本地安装的MySQL,对group by进行了泛化,而服务器是Linux,只会按照标准来执行。

  解决:严格按照group by规范书写sql语句

  select list from table group by cause;

  ①确保每组单值(确保查询列表都是单一的值)

  ②查询列表中包含聚合函数(效果也是同1)

  ③查询列是group by中的列

  ④查询列是功能性的依赖于group by中的列 

 

5、程序运行效率低

  问题:程序设计使用大量for循环嵌套sql查询,加大流操作,造成查询缓慢。

  解决:一次查询,多次使用。将需要的数据进行一次性查询并存放于Map中,需要的使用利用判断条件代替for循环查询。

 

6、使用zookeeper注册服务时,API调用方法失败,抛出方法找不到的异常信息。

  ①检查方法是否存在

  ②检查配置文件中zookeeper的注册地址是否一致

 

7、循环删除list中的数据(使用Iterator)

 

8、设置MySQL区分大小写

  在MySQL的配置文件my.ini中增加一行:

        lower_case_table_names = 0

        其中 0:区分大小写,1:不区分大小写

 

9、获取操作人IP

public static String getIpAddress(HttpServletRequest request) {
        String ip = request.getHeader("x-forwarded-for");
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("Proxy-Client-IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("WL-Proxy-Client-IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("HTTP_CLIENT_IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("HTTP_X_FORWARDED_FOR");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getRemoteAddr();
        }
        return ip;
    }

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM