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="Initializer"/> //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 = Header("x-forwarded-for");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = Header("Proxy-Client-IP");
}
spring framework面试题if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = Header("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = Header("HTTP_CLIENT_IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = Header("HTTP_X_FORWARDED_FOR");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = RemoteAddr();
}
return ip;
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论