??????解決這個問題有好幾種辦法,我下面舉出一種用Token解決的辦法,希望大家把自己的解決辦法發(fā)表出來,用Token解決需要注意幾點(diǎn),一點(diǎn)首先程序的入口應(yīng)該是一個action,而不是jsp,這個action的作用就是生成token,然后轉(zhuǎn)向jsp頁面,然后這個jsp頁面里面的提交按鈕會提交到另外一個action,這個action獲得表單里面的數(shù)據(jù),然后判斷是不是重復(fù)提交#isTokenValid(request,true)。如果為true執(zhí)行數(shù)據(jù)庫方面的操作。false是表單重復(fù)提交,執(zhí)行其它操作。
??????InitInsertAction.java
????????????//生成同步令牌避免表單重復(fù)提交
??????saveToken(request);??
??????return mapping.findForward(IConstants.SUCCESS_KEY);
????? InsertAction.java
??????
??????NewsModel newsModel = new NewsModel();
?????//對象反射機(jī)制
?????BeanUtils.copyProperties(newsModel,newsForm);
?????newsModel.setNewsPublishTime(DateUtil.getCurrentTime());
?????newsModel.setNewsKind(newsForm.getNewsKind());
?????newsModel.setNewsContent(content);
?????//圖片文件路徑
?????if(imageFile!=null&&!imageFile.equals("")){???
??????newsModel.setImagePath("/UploadFiles/"+imageFile);
?????}
?????//小圖片文件路徑
?????/**if(iconFile!=null&&!iconFile.equals("")){???
??????newsModel.setIconPath("/UploadFiles/"+iconFile);
?????}*/
?????//數(shù)據(jù)庫方面的處理#插入一條新聞
?????INewsDao newsDao = new JdbcNewsDaoImpl(con);
?????newsDao.insertNews(newsModel);
????}else{
?????//表單重復(fù)提交
?????if(log.isDebugEnabled()){
??????log.debug("表單重復(fù)提交");
?????}
????}
???