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