먼저 구현하려는 로직은 아래와 같다.


ArrayList의 특정부분 부터 ArrayList의 마지막 부분까지 제거하려는 로직이였다.


for ( int i = k ; i < arrayList.size() ; i ++){

arrayList.remove(i);

}


이렇게 작성하였고, 에러는 발생하지 않는다.


문제는, 이와 같이 실행할 경우, ArrayList의 마지막 부분이 삭제되지 않게 된다.


이와 같은 문제점이 발생하게되는 원인은 


1. remove함수에 대한 이해 부족

2. for문의 동작 방식에 대한 이해 부족


2가지가 원인이 되겠다.


먼저, remove()는 해당 인덱스의 엘리먼트를 지워주는 함수로만 생각하였는데, 그 이후에 동작이 하나 더 있었다.


remove()이후에, 해당 인덱스 이후에 엘리먼트가 존재할 경우 인덱스값을 재계산한다는 것이다.


그리고, for문 동작 방식에 대한 이해는 remove와 연관시켜 생각해야되는데,


remove이후에 인덱스값이 재계산된 상태에서 


for의 동작방식에 따라 제일 마지막에 호출하게되는 부분이 size()함수이다.


그러므로 remove로 엘리먼트를 제거하고, 재계산된 size가 호출이되어 마지막 부분이 삭제가 되지 않는다.


이에 대한 해결 방법으로는 간단하게


removeRange()를 사용하거나,


size()함수의 값을 변수에 저장하여 값이 동적으로 변하지 않게 하면된다.



int end = arrayList.size();


for( int i = k; i < end ; i++){

arrayList.remove(i);

}





Ajax로 한글 데이터를 전송하게 되는 경우, 인코딩 문제로 인하여 한글데이터가 깨져서 전송이 된다.


이에 대한 해결 방법으로는 


톰켓 서버의 server.xml의 해당 포트의 


Connector 태그에서


URIEncoding="UTF-8"  을 추가해 준다.



예 )

<Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>




간만에 Tomcat을 기동하려니 아래와 같은 에러가 발생하였다.


에러 내용

Could not load the Tomcat server configuration at ~ at localhost-config. 

The configuration may be corrupt or incomplete.

Resource is out of sync with the file system: '~ at localhost-config/server.xml'.



해결 방법

 별도의 수정이 필요없이 Project Explorer에 있는 Servers 프로젝트를 Refresh(F5) 해주면 해결된다.



'프로그래밍 > 에러보고서' 카테고리의 다른 글

[Java] ArrayList Remove  (0) 2012.09.17
Ajax 한글 파라미터 깨짐  (0) 2012.08.30