아하아하ㅜ
745
2020-05-09 16:48:23 작성 2020-05-09 16:49:08 수정됨
3
271

스프링에서 팝업창 자동 닫히는 기능 구현.


스프링에서 팝업창이 자동으로 닫히는 기능 구현이필요합니다.

1. jsp에서 특정 파라미터가 들어왔을때 팝업창이 뜹니다

2. 팝업창에서 자동을 닫히는 시간이 60초 후 입니다

3. 자동닫히는시간 컨트롤이 서버단에서 해야합니다(javascript 처리불가)

4. 만약 사용자가 수동으로 팝업창 닫기 눌럿을때는 서버단에 통신을 해줘야합니다(여기가 젤문제네요.. 해당팝업을 세션별로 알수있어야할텐데...)

5. 어떤 방법이 있을까요?

0
  • 답변 3

  • 으어어어어
    729
    2020-05-09 16:58:10

    1. 팝업은 사용자 UI라 서버가 유기적으로 팝업을 자동으로 닫거나 할 수 는 없습니다. 자바스크립트로 컨트롤을 해줘야 하는데 안된다고 하시니 조금더 상세하게 현재 상황을 설명해주셔야 할 것 같습니다.


    2. 사용자가 팝업을 닫는 버튼을 누르면 ajax등 비동기 통신을 통해 서버에 사용자가 팝업을 닫았다는 정보를 보내주면 됩니다.

  • 아하아하ㅜ
    745
    2020-05-09 17:26:17 작성 2020-05-09 17:27:37 수정됨


    상황설명을 덧붙이자면

    1.amqp서버와 연동된 웹서버입니다

    2.amqp에서 a라는 정보가 들어오면 해당 사용자화면에는 팝업이 뜨게됩니다

    3.더불어 amqp에서 a라는 정보가들어오면 자동으로 60초뒤에 b라는 메소드가 실행되게해야합니다.(서버처리)

    4. 문제는 사용자가 팝업창 확인을 누르면 b라는 메소드가 실행되는 상황인데, 확인 버튼을 누르면 60초 카운터가 진행 중인 스레드를 찾아 스탑시키고 b라는 메소드가 실행되야하는겁니다..

    ps. 스레드없이 가능한 로직인가요?


    참고로 웹소켓이 연결중이라 서버가 유기적으로 ui를 닫을수있는 상황입니다.


  • 으어어어어
    729
    2020-05-11 03:15:29

    답변이 많이 늦어서 죄송합니다.

    1. 60초 후에 팝업을 닫는거는 쓰레드를 60초 재웠다가 하시는거 같으신데 이것보다는 자바의 스케쥴러를 이용하시면 될것 같습니다.


    스케쥴러로 처리를 예약해 두면 스케쥴링에 관한 퓨처 객체가 반환이 되고 팝업을 띄울때 렌덤으로 생성한 팝업 아이디와 퓨처객체를 이용하여 Map 자료 구조에 저장합니다.


    이후 사용자가 팝업을 닫았을시 닫은 팝업의 아이디를 통해 스케쥴러의 퓨처객체를 가져와서 스케쥴링을 켄슬시키면 될것 같습니다.

  • 로그인을 하시면 답변 을 등록할 수 있습니다.