새로 고침 상황 에서 양식 을 중복 제출 하 는 문 제 를 처리 합 니 다.
이 flag 는 내 가 제출 할 폼 의 이 jsp 에 session 에 저장 하 는 동시에 폼 에 < input type = "hidden" > 을 사용 하여 이 flag 값 을 action 에 전송 한 다음 action 에서 각각 request. getParameter ("flag") 를 통 해
request. getSession. getAttribute ("flag") 와 나의 이 flag 를 가 져 와 제출 여 부 를 비교 합 니 다.구체 적 인 사례 는 다음 과 같다.
1. 첫 페이지 에서 간단 한 preview. jsp 보기
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ page import="java.util.*"%>
<%
String validate_imageURL = request.getContextPath() + "/validate/validate_image.jsp";
response.setHeader("Cache-Control", "no-cache");
Random rand = new Random();
Integer flag = new Integer(rand.nextInt());
String str_flag = flag.toString();
session.setAttribute("sflag", str_flag);
%>
<s:form action="publicMessage" name="form1" method="post" theme="simple">
<input type=hidden name="sflag" value="<%=str_flag%>" />
<input type="text" name="name" value="">
<input type="submit" value=' ' class="reSubmit" >
</s:form>
2、 대응 하 는 struts. xml 파일 설정
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="message" extends="yepbook-public">
<action name="publicMessage" class="lee.BugLogAction" method="publicMessage">
<result name="success" type="tiles">message.leave.layout</result>
<result name="error" type="tiles">message.leave-error.layout</result>
</action>
</package>
</struts>
3. 대응 하 는 class 파일 lee. PublicAction. java
package lee;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts2.interceptor.ServletRequestAware;
import com.opensymphony.xwork2.ActionSupport;
public class BugLogAction extends ActionSupport implements ServletRequestAware
{
public static final Log log = LogFactory.getLog(BugLogAction.class);
private HttpServletRequest request;
public String publicMessage()
{
try{
Integer flag1 = new Integer(Integer.parseInt(request.getParameter("sflag")));
String l_strflag1 = flag1.toString();
if (l_strflag1.equals(request.getSession().getAttribute("sflag")))
{
String name= request.getParameter("name");
// ...
request.getSession().removeAttribute("sflag");
}
else
{
request.getSession().removeAttribute("sflag");
log.warn("message save repeat");
}
}catch (Exception e)
{
e.printStackTrace();
log.error(StringUtil.getStackTraceAsString(e));
return ERROR;
}
return SUCCESS;
}
public void setServletRequest(HttpServletRequest request)
{
this.request = request;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
자바 파일 압축 및 압축 풀기파일 의 간단 한 압축 과 압축 해 제 를 실현 하 였 다.주요 테스트 용 에는 급 하 게 쓸 수 있 는 부분 이 있 으 니 불편 한 점 이 있 으 면 아낌없이 가르쳐 주 십시오. 1. 중국어 문 제 를 해 결 했 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.