2012-02-01 5 views
0

시나리오는 웹 페이지에서 사용자의 유니 코드 문자열을 수락하고 제출 버튼을 클릭하면 컨트롤이 다음 페이지로 이동합니다. 여기서 문자열 처리의 전체 로직은 다음과 같습니다. 동시에 Bean 클래스를 사용하여 작성하고 내부 Bean 클래스에서 DAO 클래스의 함수를 호출하여 데이터베이스에 문자열을 삽입하여 로그를 유지합니다.제출 버튼 클릭시 유일한 값만 삽입하십시오

사용자가 결과 페이지를 새로 고치면 bean 클래스가 계속해서 호출되어 동일한 문자열이 동일한 사용자가 여러 번 데이터베이스에 삽입되는 문제가 있습니다.

동일한 사용자가 삽입 한 문자열이 결과 페이지를 새로 고치는 동안 사용자가 제출 버튼을 누르지 않은 경우에만 데이터베이스에 삽입되는 것을 어떻게해야합니까? 또는 사용자가 문자열을 쿠키로 유지해야하며 페이지가로드 될 때이를 확인해야합니다. 버튼 을 클릭

내가 이전에 사용자가 입력 한 문자열을 클라이언트 측에서 쿠키를 유지하고 그에 따라 제출에 호출되는

private void fnSetCookieValues(HttpServletRequest request, 
           HttpServletResponse response) {   
    Cookie[] cookies=request.getCookies(); 
    for (int i = 0; i < cookies.length; i++) {      
    System.out.println("" + cookies.length + "Name" + cookies[i].getName()); 
    if(cookies[i].getName().equals("DNString")) { 
     System.out.println("Inside if:: " + cookies[i].getValue() + 
         "" + cookies.length); 
     cookies[i].setValue(request.getParameter("txtString")); 
    } else { 
     Cookie ck = new Cookie("DNString", ";"); 
     response.addCookie(ck); 
}   
    } 
} 

이 코드 조각은 서블릿에 기록 그것을 확인하려고 이 서블릿의 각 처리는 을 표시합니다. 1NameJSESSIONID 쿠키를 표시하지 않습니다. DNString

누구든지 내가하고있는 실수를 알아낼 수 있습니까?

답변

0

이중 제출을 방지하는 방법을 찾고 계십니까?

  1. 자바 스크립트
  2. 토큰
  3. 동기화 조금 주위

구글 : 보안 요구 사항 및 프레임 워크 사용중인에 따라 접근 방법의 몇 가지가 있습니다. 많은 솔루션이 있습니다.

감사합니다, M

0

데이터가 이미 입력 여부를 확인하는 것은 좋은 방법이 아니다. 그래서이 문제의 쉬운 해결책 중 하나는 servlet의 양식 제출 후 HTTP 리디렉션을 사용하는 것입니다. success.jsp으로 말하십시오. 따라서 양식은 다시 제출되지 않습니다.

응답을 받으면 양식을 재설정 할 수도 있습니다.

For More check here