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

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

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

@InitBindepublic voidinitBinder(WebDataBinder binder) {//长度根据实际情况修改binder.setAutoGrowCollectionLimit(500);

}

② 在整个项目中使用

定义一个初始化类

public class myInitializer implementsWebBindingInitializer {

@Overridepublic voidinitBinder(WebDataBinder binder) {

binder.setAutoGrowCollectionLimit(100000);

}

}

然后在配置文件中配置

//class指myInitializer类

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 staticString 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();

}returnip;

}

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值