나의질문답

cookie에 arraylist저장? -> 안됨

예쁜꽃이피었으면 2014. 10. 28. 13:17

http://www.okjsp.net/seq/264107


안녕하세요.



질문이 맞는지도 잘 모르겠네요.


쿠키에 데이터 저장하는 것을 해보려고 하는데요.


저장할 데이터의 형식(?)이 arraylist로 되어 있습니다.


이 경우에는 어떻게 해야 하나요?;


Cookie cookie[] = new Cookie[1];

String cookie_articleList = null;

cookie_articleList = articleList;   <- articleList에 빨간줄

cookie[0] = new Cookie("cookie_user_id", cookie_articleList);



어떻게 해야 하나요;




Cookie cookie[] = new Cookie[1]; 

ArrayList<plant> cookie_articleList = null; 


cookie_articleList = articleList; 

cookie[0] = new Cookie("cookie_user_id", cookie_articleList); 


이렇게 해도 new Cookie("cookie_user_id", cookie_articleList);여기에 빨간줄이 생깁니다..







답변1.


직렬화된 개체, 즉 implements Serializable 가 붙어있는 class 만 저장 가능합니다. 


그런데, cookie 는 사용자의 브라우저에 저장되는 보안상 매우 취약하고 브라우저 설정에 따라서는 사용이 불가능하기도 한 존재입니다. 왠만하면 걷어내는 추세인 것으로 아는데...왜 그렇게 쓰시려고?







하이드리드 앱이라고 하나요; 겉은 앱인데 안에 내용은 웹인 앱이요. 

그걸 수정 중에 있습니다. 


어떠한 검색을 서버에서 실행해서 결과를 화면에 보여주게 되는데요. 

이 때에 검색한 대상에 대한 상세 보기가 가능합니다. 

상세보기 후에 뒤로 왔을 때 검색 했을 때의 결과를 다시 보여줬으면 좋겠습니다. 

그런데 지금은 검색결과가 사라지고 전체보기 화면이 나옵니다. 

(전체보기는 검색전, 검색 후에는 검색 결과가 있겠지요. ) 

검색하는 시간도 오래 걸려서 매번 다시 검색하기에는 무리가 좀 있습니다. 


무튼 사용자가 검색한 결과이고 보안과 상관없는 내용이라고 생각됩니다. 

이전화면(검색결과)으로 갈때만 사용하게 되기 때문에요. 


............................................................

찾다보니 쿠키에 저장하는 것을 알게 되어서 적용해봐야겠다 싶었는데. 

이게 잘못된 방법이라면 어떻게 해야 하나요?



...............................................................

어떤 분께선 '해시체인지 이벤트?'를 사용해보라고 하셨는데요 . 뭐가 해서 찾아보니 html만 있는곳에서 사용할 수 있다고 하더라고요.. 음.. 

제 설명이 부족하다면 추가로 댓글 달겠습니다. 

어떤 식으로 해야 하는지좀 알려주셨으면 좋겠습니다. 감사합니다.



서버에 많은 데이터들이 있고 그 데이터 중에 사용자가 원하는 것을 검색한 후에 화면에 보여주게 됩니다. 

단순 정보 제공이라 암호화가 필요하지 않을 것 같습니다. 

쿠키나 세션에 저장하는 방법이 아니라면 어떻게 해야 하나요?



답변2.


db에 저장했다가 보여주세요



답변3.

cookie는 String밖에 저장 할 수 없습니다. 서로 다른 시스템(클라<->서버)과 인터페이스 하기 때문입니다. 대충 이해 하기로는 쿠키에 값을 저장해 다니고 싶은 것 같은데요. 결국 리스트 값을 직렬화 해서 문자열을 쿠키값에 저장하고 사용하는 쪽에서는 역직렬화 해서 사용해야 되구요. 


그리고 보안 이런 부분을 다 무시하더라도 서버 설정을 바꿀 수 없는 경우라면 헤더 사이즈는 고려 하셔야 합니다. 서버마다(아파치, 톰캣 등) 사이즈가 4k, 8k 이렇게 정해져 있어 사이즈 문제가 발생될 수 있습니다. 


마지막으로 "서버에 많은 데이터들이 있고 그 데이터 중에 사용자가 원하는 것을 검색한 후에 화면에 보여주게 됩니다. " 매 페이지마다 서버에 값을 가져오는 문제로 쿠키를 고려 하셨다면 다른 방법을 고려 하는게 좋겠습니다. 프레임 구조에 데이터를 공유 하시던지 html5가능한 브라우저만 사용된다면 웹스토리지같은(http://www.w3schools.com/html/html5_webstorage.asp) 방법 등을 생각 해보세요. 




답변4.

검색하는 항목값을 상세보기페이지로 같이넘겨주시고 뒤로가기버튼클릭시 검색항목값이 있으면 검색결과 리스트노출 / 검색항목값이없으면 기본 전체리스트 노출하는방식은요?






답변5.


저라면 상세보기창을 대화상자식으로 검색창 위에 뛰우고 , 

닫혀지면 이미 있던 검색창 보여지게 하겠네요. 


<FORM name="myform"> 

<sql:query var="rs" dataSource="jdbc/mydb"> 

select * from detail_table 

</sql:query> 

<c:set var="rowdetail" value="${rs.rows[0]}"/> 

<input type="hidden" id="id_something" value="${rowdetail.some}"> 

<div id="detail" class="detail_window" style="display:none; width:auto; padding:20px;"> 


이런식으로 히든폼에 상세내용 적으시면

반응형