2015-01-29 2 views
0

patient.jsp이라는 팝업 페이지 인 Form이있는 JSP 페이지가 있습니다. 이 양식은 post 방법을 사용하여 제출됩니다. 이 양식이 서블릿에 도달하면 다음과 같은 일이 발생합니다.JSP 폼을 새로 고침하면 데이터가 다시 제출됩니다.

큰 문제가 있습니다. 이 내용이 patient.jsp으로 다시 전달되면 사용자가 웹 페이지를 새로 고치면 이전에 양식에 입력 한 모든 내용이 다시 제출되어 데이터베이스에 저장됩니다.

우리는 RequestDispatcher을 사용했습니다. 왜냐하면 요청 범위에서 속성을 전달해야하기 때문입니다. 어떤 생각이 어떻게 해결할 수 있습니까?

답변

1

먼저 전달하지 리디렉션해야합니다

response.sendRedirect("patient.jsp"); 

가 상대 경로가 올바른지 확인하십시오.

  1. 설정 session의 특성과 요구에, 당신은 JSP에서 그것을 얻을 수 없습니다 :

    여기에서

    두 가지 옵션이 있습니다. 물론 이것을 사용하여 병렬 요청을 처리해야하므로 속성의 이름은 매번 고유해야합니다. (가 직렬화 가능의 경우)

  2. 는 HTTP GET 매개 변수로 속성을 보내기 : 옵션 1에 대한 response.sendRedirect("patient.jsp?id=273");
+0

: 나는 우리가 고유 한 이름 매번를 사용할 필요가 있다고 생각하지 않습니다. 왜냐하면 만약 우리가 값'id'를 키로 첨부하고 키 'id'를 가진 다른 값을 같은 세션에 다시 붙이면 이전의 속성이 바뀌기 때문입니다. 맞습니까? –

+0

당신 말이 맞아요. 즉, 사용자가 동시에 두 요청을 보내는 경우 (일반적인 시나리오는 아니지만 가능한 경우) 'id'속성이 두 번 설정되고 두 응답에 모두 동일하게 적용됩니다. 고전적인 동기화 문제. 'id_'과 같은 키를 사용하고 UUID를 get 매개 변수로 페이지에 전달합니다. – reformy

관련 문제