struts2 폼 중복 제출을 방지하는 세 가지 방법

2105 단어 struts2
struts2를 사용하는 과정에서 폼 중복 제출 문제가 발생할 수 있습니다. 이 문제는 어떤 경우에 매우 심각한 결과를 초래할 수 있습니다.어떻게 이 문제의 발생을 피할 것인가, 다음은 세 가지 방법으로 해결할 수 있다.
 
  • result의 type 형식을redirectstruts2의 기본result 형식은dispatcher로 변경합니다. 사용자가 정보를 서버에 제출하면 서버 응답이forward 방식으로 다음 페이지로 바뀌면 주소 표시줄에 이전 페이지의 URL이 표시됩니다. 이전 페이지를 새로 고치면 브라우저는 사용자가 이전에 입력한 데이터를 다시 제출하고 폼 중복 제출 문제가 발생합니다.만약redirect 방식을 선택하여 페이지를 뛰어넘으면 중복 제출 문제가 발생하지 않습니다.단점:redirect 점프는 개발 과정의 일부 수요를 만족시킬 수 없습니다..
  • 영패 방식을 사용합니다
     <form id="login_form" method="post" action="userAction!login">
    			       <s:token></s:token>
    			                   <input type="text" name="username"  placeholder=" " />
    				           <input type="password" name="password"  placeholder=" " />
    				   <div id="btn">
    				      <a id="loginbutton" href="javascript:void(0)" onclick="login_submit()"> </a>
    				      <a href="javascript:void(0)" onclick="login_reset()"> </a>
    				  </div>
    				  </form>
      .단점: 정상적인 제출과 반복 제출에 대해 token 차단기를 사용하면 브라우저가 invalid로 최종 리셋됩니다.token이 지정한 Result
  • 영패 방식 2 를 사용합니다
    <action name="userAction"   class="com.yingjun.sharing.action.UserAction" >
    		    <interceptor-ref name="myStack" />
                <interceptor-ref name="token" />
                <result name="invalid.token">/WEB-INF/jsp/login.jsp</result>
    			<result  name="input">/WEB-INF/jsp/register.jsp</result>
    			<result name="regsuccess">/WEB-INF/jsp/login.jsp</result>
    		</action>
    token 차단기를 tokenSession 차단기로 바꿉니다.tokenSession 차단기와 token 차단기의 유일한 차이점은 어떤 요청을 중복 요청으로 판단한 후에 invalid라는 이름으로 즉시 리셋하는 것이 아니라는 것이다.Token의 Result는 브라우저가 최초의 정상적인 요청에 응답할 때까지 이 중복 요청을 막는 것입니다. 그리고 정상적인 요청을 처리한 Result로 넘어갈 수 있습니다
  • 좋은 웹페이지 즐겨찾기