日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
IBATIS數(shù)據(jù)庫提交避免重復(fù)提交的方法(ibatis提交重復(fù)數(shù)據(jù)庫)

IBATIS是一款優(yōu)秀的ORM框架,被廣泛應(yīng)用于Java Web項(xiàng)目中。在Web開發(fā)中,很多場景下需要提交表單數(shù)據(jù)到數(shù)據(jù)庫中,但是由于網(wǎng)絡(luò)等各種原因,可能會造成表單數(shù)據(jù)被重復(fù)提交,導(dǎo)致數(shù)據(jù)庫出現(xiàn)重復(fù)數(shù)據(jù)。因此,如何避免表單數(shù)據(jù)重復(fù)提交成為Web開發(fā)中的一個(gè)重要問題。本文將介紹一種在IBATIS中實(shí)現(xiàn)數(shù)據(jù)庫提交避免重復(fù)提交的方法。

目前創(chuàng)新互聯(lián)公司已為近1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、雅安服務(wù)器托管、網(wǎng)站改版維護(hù)、企業(yè)網(wǎng)站設(shè)計(jì)、陵城網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

1. 原理

在Web開發(fā)中,避免表單數(shù)據(jù)重復(fù)提交的方法通常是采用token機(jī)制。即當(dāng)表單頁面被加載時(shí),服務(wù)器生成一個(gè)隨機(jī)的token值,把該值存儲在session中,并將該token值作為表單數(shù)據(jù)提交時(shí)的一個(gè)參數(shù)。當(dāng)用戶提交表單數(shù)據(jù)時(shí),服務(wù)器會校驗(yàn)該token值和Session中的token值是否一致,若一致,則表示該表單數(shù)據(jù)是之一次提交,可以直接保存到數(shù)據(jù)庫中;若不一致,則表示該表單數(shù)據(jù)已經(jīng)提交過了,需要返回錯(cuò)誤提示。

在IBATIS中,可以使用攔截器機(jī)制實(shí)現(xiàn)token校驗(yàn)。攔截器是一種AOP(面向切面編程)的方式,可以在方法執(zhí)行前后自定義一些操作。在IBATIS中,可以使用SqlMapClient攔截器,對數(shù)據(jù)庫操作進(jìn)行攔截,實(shí)現(xiàn)token校驗(yàn)和提交數(shù)據(jù)操作。

2. 實(shí)現(xiàn)步驟

(1)在SqlMapConfig.xml中配置攔截器

“`

“`

(2)實(shí)現(xiàn)攔截器類

“`

public class TokenInterceptor extends AbstractSqlMapClientInterceptor {

// token值在session中的key

private static final String TOKEN_KEY = “token”;

// token值在表單數(shù)據(jù)中的key

private static final String TOKEN_PARAM = “token”;

@Override

public Object intercept(Object obj, Method method, Object[] args, InterceptorChn chn)

throws SQLException {

if (method.getName().equals(“update”)) {

// 獲取表單提交數(shù)據(jù)中的token值

String token = null;

for (Object arg : args) {

if (arg instanceof Map) {

Map map = (Map) arg;

token = (String) map.get(TOKEN_PARAM);

break;

}

}

if (token != null) {

// 獲取Session中的token值

String sessionToken = (String) ActionContext.getContext().getSession().get(TOKEN_KEY);

// 如果兩個(gè)token值相同,則表示表單數(shù)據(jù)沒有重復(fù)提交,可以執(zhí)行數(shù)據(jù)庫操作

if (sessionToken != null && sessionToken.equals(token)) {

// 執(zhí)行數(shù)據(jù)庫操作

Object result = chn.intercept(obj, method, args);

// 在執(zhí)行完后,從Session中移除該token值

ActionContext.getContext().getSession().remove(TOKEN_KEY);

return result;

} else {

// 如果兩個(gè)token值不同,則表示該表單數(shù)據(jù)已經(jīng)提交過了,不需要重復(fù)提交

throw new SQLException(“數(shù)據(jù)重復(fù)提交”);

}

}

}

// 如果執(zhí)行的不是update操作,則直接執(zhí)行

return chn.intercept(obj, method, args);

}

}

“`

(3)在Action類中生成token值

在Action類中,生成一個(gè)隨機(jī)的token值,并將該值存儲在Session中。以Struts2框架為例:

“`

public class MyAction extends ActionSupport {

@Override

public String execute() throws Exception {

// 生成一個(gè)隨機(jī)的token值

String token = UUID.randomUUID().toString();

// 將該token值存儲在Session中

ActionContext.getContext().getSession().put(TokenInterceptor.TOKEN_KEY, token);

// 返回結(jié)果頁面

return SUCCESS;

}

}

“`

(4)在P頁面中提交表單數(shù)據(jù)時(shí)加入token值

在P頁面中,提交表單數(shù)據(jù)時(shí)加入一個(gè)token參數(shù),值為Session中的token值。以Struts2框架為例:

“`

成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián),建站經(jīng)驗(yàn)豐富以策略為先導(dǎo)10多年以來專注數(shù)字化網(wǎng)站建設(shè),提供企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),響應(yīng)式網(wǎng)站制作,設(shè)計(jì)師量身打造品牌風(fēng)格,熱線:028-86922220

用ibatis連接數(shù)據(jù)庫遇到這樣的問題怎么解決

Element type “SqlMap” must be declared

SqlMapConfig.xml中未首山宏配置sql映射文件

ibatis提交重復(fù)數(shù)據(jù)庫的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于ibatis提交重復(fù)數(shù)據(jù)庫,IBATIS數(shù)據(jù)庫提交避免重復(fù)提交的方法,用ibatis連接數(shù)據(jù)庫遇到這樣的問題怎么解決的信息別忘了在本站進(jìn)行查找喔。

成都創(chuàng)新互聯(lián)科技公司主營:網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、小程序制作、成都軟件開發(fā)、網(wǎng)頁設(shè)計(jì)、微信開發(fā)、成都小程序開發(fā)、網(wǎng)站制作、網(wǎng)站開發(fā)等業(yè)務(wù),是專業(yè)的成都做小程序公司、成都網(wǎng)站建設(shè)公司、成都做網(wǎng)站的公司。創(chuàng)新互聯(lián)公司集小程序制作創(chuàng)意,網(wǎng)站制作策劃,畫冊、網(wǎng)頁、VI設(shè)計(jì),網(wǎng)站、軟件、微信、小程序開發(fā)于一體。


分享題目:IBATIS數(shù)據(jù)庫提交避免重復(fù)提交的方法(ibatis提交重復(fù)數(shù)據(jù)庫)
本文地址:http://m.5511xx.com/article/dhgdejh.html