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; }