2014-04-07 1 views
0

사용자 로그인 즉시 나는 로그인 Action 클래스에서 hashmap 객체를 만들고 사용자에게 특정한 맵 값을 저장하고 세션 속성에 맵을 넣는 것보다. 나는이 세션을 사용자의지도를 업데이트하고있는 JSP 페이지에서 사용하고있다. LoginAction에 여기 ::: code와 같은 코드가 있습니다.hashmap 개체를 생성하면 맵을 동기화 할 필요가 없습니다. 내 webapp에

Map map = new Hashmap();   
    map.put(a1,valueA);   
    map.put(b1,valueB);   
    session.setAttribute("map",map);   

사용자가 웹 응용 프로그램에 로그인 할 때마다 이러한 현상이 발생합니다. 질문이 있습니다.이지도를 동기화해야합니까? 또는 그것은 사용자가 로그인 할 때마다 Map 객체를 생성하고 해당 사용자에 대해 세션에 넣는 것보다 효과적일까요?

답변

0

모든 웹 응용 프로그램은 서버에서 동시에 여러 요청을 실행할 수 있습니다. 따라서 서로 다른 요청에 의해 동시에 업데이트되는 경우 세션의 객체가 동기화되어야합니다. 가장 좋은 방법은 ConcurrentHashMap으로 HashMap을 변경하는 것입니다.

+0

요청할 때마다 새 개체가 생성되지 않으므로 동기화가 필요합니까? – gSingh

+0

@gSingh 귀하의 의견으로는 무엇을 의미하는지 이해가되지 않습니다. 이지도가 사용자 기록에서 생성되고이 세션에서 수행 한 일부 요청 (예 :'map.put','map.remove '등)에서 상태를 수정할 수 있으면이 인스턴스가 동기화되어야합니다. –

+0

모든 사용자가 로그인 할 때 해당 사용자 및 세션별로 맵이 생성됩니다 ... 해당 맵의 모든 상태 변경은 해당 세션의 맵에만 적용됩니다. 새 맵에 로그인 한 다른 사용자 사이에 두 번째 사용자에 대한 새 세션이 작성됩니다. 이 올바른지 ? – gSingh

관련 문제