您現在的位置是:電腦技術吧?>? 故障問題 ??>??jsp 表單提交,jsp部分表單提交??>??正文詳情

jsp 表單提交,jsp部分表單提交

茆嘉誼2019-12-05 08:51:57 人圍觀
簡介jsp提交到servlet路徑有幾種方法:1。在表單頁面的頭部區域添加以下代碼:meta http equiv=pragma content=no cachemeta http equiv=jsp submit提交過程中

有幾種方法:1 在你的表單頁里HEAD區加入這段代碼:META HTTP-EQUIV=pragma CONTENT=no-cacheMETA HTTP-EQUIV=Cache-Control CONTENT=no-cache, must-revalidateMETA HTTP-EQUIV=expires CONTENT=Wed, 26 Feb 1997 08:21:57 GMT2生成一個令牌保存在用戶session中,在form中加一個hidden域,顯示該令牌的值,form提交后重新生成一個新的令牌,將用戶提交的令牌和session中的令牌比較,如相同則是重復提交3在你的服務器端控件的代碼中使用Response.Redirect(selfPage)語句。

但是大多的數都不使用這種方法。

方法還有很多。

4input type=button value=提交 onclick=this.disabled=true;this.form.submit()5在JSP頁面的FORM表單中添加一個hidden域 input type=hidden name=urlvalue=%=request.getRequestURL()% 在你的serverlet中添加如下語句 String url=request.getParameter(url); response.sendRedirect(url); 我一般都是采用這樣的方法返回JSP頁面的,不太明白你說的重復刷新是什么概念6 ajax 無刷新提交7 Web開發中防止瀏覽器的刷新鍵引起系統操作重復提交怎么解決呢?

重定向可以解決頁面刷新帶來的數據的重復提交的問題,我們自然可以利用重定向的方式來解決這個問題。

但是struts的action里面mapping.findword();跳轉的話,默認的是在工程文件夾里面找要跳轉的頁面。

這種情況,怎么解決呢?

修改struts-config.xml 文件, 在action里面有一個redirect重新定向的屬性,struts中默認的是false,添加這個屬性,改成true,在forword中寫上要跳轉頁面的絕對或者相對地址就行了修改如下:action-mappingsaction attribute=newsActionForm name=newsActionForminput=/addnews.jsp path=/newsAction parameter=methodscope=request type=com.yongtree.news.action.NewsActionforward name=list path=/listnews.jsp redirect=true/forwardforward name=error path=/addnews.jsp/forward/action/action-mappings重復提交、重復刷新、防止后退的問題以及處理方式一。

前言你在任何一個比較專業的BBS都會看到這樣的問題,即使你Google一下,也會發現有很多的人在關注和詢問,但大家給出的解決方法卻都是千差萬別,(有的人主張采用腳本來解決;有的則想重定向到別的頁面;有的則將此問題提升到Token的角度)為什么會有如此大的差異呢?

二。

問題場景首先,我們應該先了解為什么要處理這樣的問題?

或者專業一點就是它適合的場景是什么?

(似乎只有人來問沒有人來解釋)1。

重復提交、重復刷新的場景重復提交、重復刷新都是來解決系統重復記錄的問題。

也就是說某個人在多次的提交某條記錄(為什么?

也許是閑了沒有事情干的;最有可能是用戶根本就不知道自己的提交結果是否已經執行了?

!)。

但出現了這樣的問題并不見得就必須處理,要看你所開發的系統的類別而定。

比如你接手的是某個資源管理系統,系統本身從需求的角度根本就不允許出現重復的記錄,在這樣需求的約束條件下,去執行重復的提交動作只會引發業務級異常的產生,根本就不可能執行成功也就無所謂避免不避免的問題了。

2。

防止后退的場景了解了重復刷新、重復提交的場景,我們來了解一下防止后退操作的原因是什么?

比如你在開發某個投票系統,它有很多的步驟,并且這些步驟之間是有聯系的,比如第一步會將某些信息發送給第二步,第二步緩存了這些信息,同時將自身的信息發送給了第三步。

等等,如果此時用戶處在第三步驟下,我們想象一下某個淘氣用戶的用戶點擊了后退按鈕,此時屏幕出現了第二步驟的頁面,他再次的修改或者再次的提交,進入到下一個步驟(也就是第三步驟),錯誤就會在此產生?

!什么錯誤呢?

最為典型的就是這樣的操作直接導致了對于第一個步驟信息的丟失!(如果這樣的信息是依靠Request存放的話,當然你可以存放在Session或者更大的上下文環境中,但這不是個好主意!關于信息存放的問題,下次在就這個問題詳細的討論)三。

如何處理的問題當然很多的系統(比如訂票系統從需求上本身是允許個人重復訂票的)是必須要避免重復刷新、重復提交、以及防止后退的問題的,但即使是這樣的問題,也要區分如何處理以及在哪里處理的(網上只是告訴你如何處理,但很少去區分在哪里處理的),顯然處理的方式無非是客戶端或者服務器端兩種,而面對不同的位置處理的方式也是不同的,但有一點要事先聲明:任何客戶端(尤其是B/S端)的處理都是不可信任的,最好的也是最應該的是服務器端的處理方法。

客戶端處理:面對客戶端我們可以使用Javascript腳本來解決,如下1。

重復刷新、重復提交Ways One:設置一個變量,只允許提交一次。

script language=javascriptvar checkSubmitFlg = false;function checkSubmit() {if (checkSubmitFlg == true) {return false;}checkSubmitFlg = true;return true;}document.ondblclick = function docondblclick() {window.event.returnValue = false;}document.onclick = function doconclick() {if (checkSubmitFlg) {window.event.returnValue = false;}}/scripthtml:form action=myAction.do method=post onsubmit=return checkSubmit();Way Two : 將提交按鈕或者image置為disablehtml:form action=myAction.do method=post onsubmit=getElById('submitInput').disabled = true; return true; html:image styleId=submitInput src=images/ok_b.gif border=0 //html:form2。

防止用戶后退這里的方法是千姿百態,有的是更改瀏覽器的歷史紀錄的,比如使用window.history.forward()方法;有的是用新頁面的URL替換當前的歷史紀錄,這樣瀏覽歷史記錄中就只有一個頁面,后退按鈕永遠不會變為可用。

比如使用javascript:location.replace(this.href); event.returnValue=false;2.服務器端的處理(這里只說Struts框架的處理)利用同步令牌(Token)機制來解決Web應用中重復提交的問題,Struts也給出了一個參考實現。

基本原理:服務器端在處理到達的請求之前,會將請求中包含的令牌值與保存在當前用戶會話中的令牌值進行比較,看是否匹配。

在處理完該請求后,且在答復發送給客戶端之前,將會產生一個新的令牌,該令牌除傳給客戶端以外,也會將用戶會話中保存的舊的令牌進行替換。

這樣如果用戶回退到剛才的提交頁面并再次提交的話,客戶端傳過來的令牌就和服務器端的令牌不一致,從而有效地防止了重復提交的發生。

if (isTokenValid(request, true)) {// your code herereturn mapping.findForward(success);} else {saveToken(request);return mapping.findForward(submitagain);}Struts根據用戶會話ID和當前系統時間來生成一個唯一(對于每個會話)令牌的,具體實現可以參考TokenProcessor類中的generateToken()方法。

1. //驗證事務控制令牌,html:form 會自動根據session中標識生成一個隱含input代表令牌,防止兩次提交2. 在action中://input type=hidden name=org.apache.struts.taglib.html.TOKEN // value=6aa35341f25184fd996c4c918255c3aeif (!isTokenValid(request))errors.add(ActionErrors.GLOBAL_ERROR,new ActionError(error.transaction.token));resetToken(request); //刪除session中的令牌3. action有這樣的一個方法生成令牌protected String generateToken(HttpServletRequest request) {HttpSession session = request.getSession();try {byte id[] = session.getId().getBytes();byte now[] =new Long(System.currentTimeMillis()).toString().getBytes();MessageDigest md = MessageDigest.getInstance(MD5);md.update(id);md.update(now);return (toHex(md.digest()));} catch (IllegalStateException e) {return (null);} catch (NoSuchAlgorithmException e) {return (null);}}總結對于重復提交、重復刷新、防止后退等等都是屬于系統為避免重復記錄而需要解決的問題,在客戶端去處理需要針對每一種的可能提出相應的解決方案,然而在服務器端看來只不過是對于數據真實性的檢驗問題,基于令牌的處理就是一勞永逸的方法。

版權聲明:本文由 茆嘉誼 整理編輯。

原標題:jsp表單提交方式,jsp表單自動提交

轉載注明出處:http://www.dn9ww09s.icu/fault/15138.html

文章評論

    共有條評論來說兩句吧...

    用戶名:

    驗證碼:

作者推薦

  • 列出目錄下的所有文件,linux查看目錄下所有文件

    列出目錄下的所有文件,linux查看目錄下所有文件 相關圖片linux刪除目錄下所有文件ASP教程顯示目錄所有文件選項explicitdim InfoPath'current path dim serverpath'server path dim linux清空某目錄內文件...

  • jsp如何上傳圖片,jsp上傳圖片并顯示

    jsp如何上傳圖片,jsp上傳圖片并顯示 相關圖片jsp上傳圖片到文件夾scriptfunction setImagePreview(){var docObj=document.getElementById(doc);var imgservlet上傳圖片...

  • asp日期函數,asp當前日期函數

    asp日期函數,asp當前日期函數 相關圖片asp字符串轉日期函數本文簡要介紹了VBScript的時間函數,該函數可以在一般應用中使用,也可以根據具體的特殊需要進一步搜索。Date()獲取日期,格式:2004-2-28 timasp提取年月的函數...

  • asp能用什么數據庫,asp數據庫1

    asp能用什么數據庫,asp數據庫1 相關圖片asp如何和數據庫連接ASP tutorial read database tutorial record%'dpath=www.3lian.net/dbasemateydbweb^asp打開access數據庫...

  • 靜態頁面與動態頁面,動態頁面

    靜態頁面與動態頁面,動態頁面 相關圖片動態頁面靜態化為了自動生成靜態頁面,最好使用filter截取JSP請求并首先對其進行預處理以自動生成HTML。一種簡單的方法是,在過濾器截獲請求后,引導一個servlet,向h5頁面是靜態還是...

  • 服務器多虛一,服務器

    服務器多虛一,服務器 相關圖片服務器是一個實物還是虛擬首先,在VB 6.0中創建一個ActiveX DLL項目。信息如下:項目名稱:systimeset類模塊名稱:timeset VB 6.0類模塊代碼如下:1op服務器虛擬化的特性...

  • 鍵值對數組,js鍵值對數組

    鍵值對數組,js鍵值對數組 相關圖片PHP 數組本文的示例描述了PHP如何使用post數組的鍵值創建同名變量并分配值。與您分享以供參考。具體如下:該代碼可以根據post數組的鍵值自動創建同名變量。這個函數使用js合并數組為...

  • spring中bean,bean中list

    spring中bean,bean中list 相關圖片spring中bean的生命周期1.包:包beanpackage;/***@authorlucier*/publicclassSystemPRoperties{publicStringgetRbean在編程中的意思...

  • php遍歷,php實現文件的遞歸遍歷

    php遍歷,php實現文件的遞歸遍歷 相關圖片php遍歷關聯數組具體情況如下:12345678910121314151617181920212223242526272933132334353637383940414243?Pphp遍歷百萬級數組...

  • 數據庫語法,數據庫基本語法

    數據庫語法,數據庫基本語法 相關圖片sql數據庫自學一。access數據庫無DSN連接方式:set adocon=server。創建對象(ADODB。連接)adocon。Opendriver={Microsoftoracle數據庫入門...

熱評文章

  • 加密的文件怎么解密,加密的pdf如何解密

    加密的文件怎么解密,加密的pdf如何解密 相關圖片加密壓縮文件如何解密本文主要介紹PHP加密和解密類。實例分析了PHP加密解密的原理和相關技巧,具有很強的實用價值。您可以參考下面的示例來描述PHP加密和解密類。與您分享以供參...

  • php 數組,php鍵值對數組

    php 數組,php鍵值對數組 相關圖片php定義數組本文主要介紹了PHP通過分類列表生成分類樹數組的方法,涉及到PHP操作數組和分類節點的相關技巧,具有一定的參考價值。需要幫助的朋友可以參考本文下面的示例來描述P...

  • java cookie,java中的cookie使用

    java cookie,java中的cookie使用 相關圖片java帶cookie跨域重定向一。設置cookie代碼如下:cookie=new cookie(key,value);cookie.setmaxage(60);設置60秒生存期。如果設置為負java獲取cookie的方法...

  • php緩存,php 緩存問題

    php緩存,php 緩存問題 相關圖片php緩存持久化失敗本文主要介紹了PHP文件緩存類的使用,并以實例的形式詳細分析了PHP文件緩存類的定義、功能和具體使用技巧,具有很大的實用價值。可以參考下面的示例來描述PHP文...

  • asp 代碼,asp開源代碼

    asp 代碼,asp開源代碼 相關圖片怎樣將asp源代碼ASP教程簡單的在線用戶統計代碼這個代碼是使用ASP應用程序和會話實例的哦。腳本語言=vbscript runat=服務器子應用程序什么是asp...

  • mysql數據庫命令,mysql建立數據庫

    mysql數據庫命令,mysql建立數據庫 相關圖片php mysql 數據庫ASP連接MySQL教程數據庫教程幾個代碼strconnection=DSN=hc188;driver={myodbd driver};server=localmysql怎么導入數據庫...

  • php框架實例,php

    php框架實例,php 相關圖片php網站實例本文主要介紹了PHP在美國實現的50個狀態選擇列表的實例,實現了當前狀態選擇的功能。它具有很大的實用價值。您可以參考下面的示例來描述PHP在美國實現的50個狀態php中文...

  • 讀寫8類怎么用,驅動讀寫是用啥寫的

    讀寫8類怎么用,驅動讀寫是用啥寫的 相關圖片硬盤讀寫快有什么用換句話說,cookie應該是一種使用了很長時間的技術。早在HTML出現時,就沒有辦法記錄和識別每個單獨頁面之間的不同用戶。后來,人們發明了曲奇技術。當用戶訪問...

  • 錯誤80004005,2147467259錯誤怎么辦

    錯誤80004005,2147467259錯誤怎么辦 相關圖片80004005錯誤代碼“請求對象錯誤”ASP tutorial 0104:80004005癥狀將文件上載到Windows服務器 IIS 6.0或iis7.0服務器時,遇到以下錯誤:請clr80004005錯誤...

  • 文件夾遞歸,遞歸刪除文件夾

    文件夾遞歸,遞歸刪除文件夾 相關圖片遞歸刪除文件夾中文件PHP遞歸刪除指定文件夾的方法:本文介紹了PHP遞歸刪除指定文件夾的方法。本例總結了遞歸刪除文件夾的兩種常見技巧,具有很強的實用價值。可以參考下面的示...

關注微信

变脸官网查询