2012-04-26 5 views
1

서블릿을 통해 데이터베이스에 삽입 한 후 페이지를 "홈"페이지로 리디렉션합니다. 그러나 내가 새로 고침, 데이터가 여전히 전달되고 DB에서 중복 발생합니다.서블릿이 여전히 페이지 새로 고침시 데이터를 전달합니다.

시스템 흐름은 다음과 같습니다. 프로젝트가 나열된 페이지를로드합니다. 프로젝트를 클릭 할 때 페이지의 div를 변경하여 설명을위한 텍스트 영역을 표시합니다. 제출 의견을 클릭하면 값이 데이터베이스에 삽입되고 페이지가 프로젝트 목록없이 페이지로 리디렉션됩니다. 그러나 내가 새로 고침, 데이터는 여전히 전달됩니다.

내가 실제로 데이터를 제거하거나 새로 고침 할 때 데이터를 전달할 수있는 방법을 아는 사람이 있습니까? 고맙습니다!

+0

페이지를 새로 고침 할 때 주소 표시 줄에있는 URL은 무엇입니까? 브라우저가 양식을 다시 제출하도록 요청하고 있습니까? –

답변

0

현상은 실제로 리디렉션되지 않고 홈 JSP로 요청을 전달했음을 나타냅니다. 실제 redirect after post 인 경우이 문제가 발생하지 않아야합니다.

그래서,

request.getRequestDispatcher("/home.jsp").forward(request, response); 
+0

사용자가 데이터 요청 속성을 전달하려는 경우에는 작동하지 않습니다. –

+0

리디렉션 URL에 그냥 포함 시키십시오. – BalusC

0

가장 가능성이 상황을 다음과 같이 따라서 앞으로하지

response.sendRedirect(request.getContextPath() + "/home.jsp"); 

을 다음과 같이 당신이 정말로 리디렉션을 수행하고 있는지 확인하다 첫 번째 요청을 제출 한 후, 브라우저의 URL이 변경되어 servlet-URL로 표시됩니다. 새로 고침 버튼을 누르면 서블릿에 직접 호출되므로 동일한 프로세스가 다시 실행됩니다. 예를 들어 -

현재 브라우저의 URL이 - www.myurl.com/mypage.jsp

요청 URL이 서블릿 www.myurl.com/mypage.action(indicate)

입니다 첫 번째 요청을 제출 한 후 브라우저의 URL은 www.myurl.com/mypage.action이됩니다.

그래서 페이지를 새로 고칠 때마다 서블릿을 직접 호출합니다.

해결 방법은 요청을 완료 한 후 jsp 페이지를 다시 서블릿에 리디렉션하는 것입니다.

관련 문제