Struts鐨凾oken錛堜護鐗岋級鏈哄埗鑳藉寰堝ソ鐨勮В鍐寵〃鍗曢噸澶嶆彁浜ょ殑闂錛屽熀鏈師鐞嗘槸錛氭湇鍔″櫒绔湪澶勭悊鍒拌揪鐨勮姹備箣鍓嶏紝浼氬皢璇鋒眰涓寘鍚殑浠ょ墝鍊?/i>涓? 淇濆瓨鍦ㄥ綋鍓嶇敤鎴蜂細璇濅腑鐨勪護鐗屽艱繘琛屾瘮杈冿紝鐪嬫槸鍚﹀尮閰嶃傚湪澶勭悊瀹岃璇鋒眰鍚庯紝涓斿湪絳斿鍙戦佺粰瀹㈡埛绔箣鍓嶏紝灝嗕細浜х敓涓涓柊鐨勪護鐗岋紝璇ヤ護鐗岄櫎浼犵粰瀹㈡埛绔互澶栵紝涔熶細 灝嗙敤鎴蜂細璇濅腑淇濆瓨鐨勬棫鐨勪護鐗岃繘琛屾浛鎹€傝繖鏍峰鏋滅敤鎴峰洖閫鍒板垰鎵嶇殑鎻愪氦欏甸潰騫跺啀嬈℃彁浜ょ殑璇濓紝瀹㈡埛绔紶榪囨潵鐨勪護鐗屽氨鍜屾湇鍔″櫒绔殑浠ょ墝涓嶄竴鑷達紝浠庤屾湁鏁堝湴闃叉浜? 閲嶅鎻愪氦鐨勫彂鐢熴?/p>
榪欐椂鍏跺疄涔熷氨鏄袱鐐癸紝絎竴錛氫綘闇瑕佸湪璇鋒眰涓湁榪欎釜浠ょ墝鍊鹼紝璇鋒眰涓殑浠ょ墝鍊煎浣曚繚瀛橈紝鍏跺疄灝卞拰鎴戜滑騫蟲椂鍦ㄩ〉闈腑淇濆瓨涓浜涗俊鎭槸涓鏍風殑錛岄氳繃闅愯棌瀛楁鏉? 淇濆瓨錛屼繚瀛樼殑褰㈠紡濡傦細 銆坕nput type="hidden" name="org.apache.struts.taglib.html.TOKEN" value="6aa35341f25184fd996c4c918255c3ae"銆夛紝榪欎釜value鏄疶okenProcessor綾諱腑鐨? generateToken()鑾峰緱鐨勶紝鏄牴鎹綋鍓嶇敤鎴風殑session id鍜屽綋鍓嶆椂闂寸殑long鍊兼潵璁$畻鐨勩傜浜岋細鍦ㄥ鎴風鎻愪氦鍚庯紝鎴戜滑瑕佹牴鎹垽鏂湪璇鋒眰涓寘鍚殑鍊兼槸鍚﹀拰鏈嶅姟鍣ㄧ殑浠ょ墝涓鑷達紝鍥犱負鏈嶅姟鍣ㄦ瘡嬈℃彁浜ら兘浼氱敓鎴愭柊鐨? Token錛屾墍浠ワ紝濡傛灉鏄噸澶嶆彁浜わ紝瀹㈡埛绔殑Token鍊煎拰鏈嶅姟鍣ㄧ鐨凾oken鍊煎氨浼氫笉涓鑷淬備笅闈㈠氨浠ュ湪鏁版嵁搴撲腑鎻掑叆涓鏉℃暟鎹潵璇存槑濡備綍闃叉閲嶅鎻愪氦銆?/p>
鍦ˋction涓殑add鏂規硶涓紝鎴戜滑闇瑕佸皢Token鍊兼槑紜殑瑕佹眰淇濆瓨鍦ㄩ〉闈腑錛屽彧闇澧炲姞涓鏉¤鍙ワ細saveToken(request);錛屽涓嬫墍紺猴細
public ActionForward add(ActionMapping mapping,
ActionForm form,
HttpServletRequest request, HttpServletResponse
response)
//鍓嶉潰鐨勫鐞嗙渷鐣?br>saveToken(request);
return
mapping.findForward("add");
}鍦ˋction鐨刬nsert鏂規硶涓紝鎴戜滑鏍規嵁琛ㄥ崟涓殑Token鍊間笌鏈嶅姟鍣ㄧ鐨凾oken鍊兼瘮杈冿紝濡備笅鎵紺猴細
public ActionForward insert(ActionMapping mapping, ActionForm
form,
HttpServletRequest request, HttpServletResponse response)
if
(isTokenValid(request, true)) {
// 琛ㄥ崟涓嶆槸閲嶅鎻愪氦
//榪欓噷鏄繚瀛樻暟鎹殑浠g爜
} else
{
//琛ㄥ崟閲嶅鎻愪氦
saveToken(request);
//鍏跺畠鐨勫鐞嗕唬鐮?br>}
}
鍏跺疄浣跨敤璧鋒潵寰堢畝鍗曪紝涓句釜鏈綆鍗曘佹渶闇瑕佷嬌鐢ㄨ繖涓殑渚嬪瓙錛?br>涓鑸帶鍒墮噸澶嶆彁浜や富瑕佹槸鐢ㄥ湪瀵規暟鎹簱鎿嶄綔鐨勬帶鍒朵笂錛屾瘮濡傛彃鍏ャ佹洿鏂般佸垹闄ょ瓑錛岀敱浜庢洿鏂般佸垹闄や竴鑸兘鏄氳繃id鏉ユ搷浣滐紙渚嬪錛歶pdateXXXById,
removeXXXById錛夛紝鎵浠ヨ繖綾繪搷浣滄帶鍒剁殑鎰忎箟涓嶆槸寰堝ぇ錛堜笉鎺掗櫎涓埆鐜拌薄錛夛紝閲嶅鎻愪氦鐨勬帶鍒朵篃灝變富瑕佹槸鍦ㄦ彃鍏ユ椂鐨勬帶鍒朵簡銆?br>
鍏堣涓涓嬶紝鎴戜滑鐩墠鎵鍋氶」鐩殑鎯呭喌錛?br>鐩?
鍓嶇殑欏圭洰鏄敤Struts錛婼pring錛婭batis錛岄〉闈㈢敤jstl錛孲truts澶嶆潅View灞傦紝Spring鍦⊿ervice灞傛彁渚涗簨鍔℃帶鍒訛紝
Ibatis鏄敤鏉ヤ唬鏇縅DBC錛屾墍鏈夐〉闈㈢殑璁塊棶閮戒笉鏄洿鎺ヨ闂甹sp錛岃屾槸璁塊棶Structs鐨凙ction錛屽啀鐢盇ction鏉orward鍒頒竴涓?
Jsp錛屾墍鏈夐拡瀵規暟鎹簱鐨勬搷浣滐紝姣斿鍙栨暟鎹垨淇敼鏁版嵁錛岄兘鏄湪Action閲岄潰瀹屾垚錛屾墍鏈夌殑Action涓鑸兘緇ф壙
BaseDispatchAction錛岃繖涓槸鑷繁寤虹珛鐨勭被錛岀洰鐨勬槸涓烘墍鏈夌殑Action鍋氫竴浜涚粺涓鐨勬帶鍒訛紝鍦⊿truts灞傦紝瀵逛簬涓涓姛鑳斤紝鎴戜滑涓鑸垎
涓轟袱涓狝ction錛屼竴涓狝ction閲岀殑鍔熻兘鏄笉闇瑕佽皟鐢⊿truts鐨勯獙璇佸姛鑳界殑錛堝父瑙佺殑鏂規硶鍚嶇О鏈塧dd,edit,remove,view,
list錛夛紝鍙︿竴涓槸闇瑕佽皟鐢⊿truts鐨勯獙璇佸姛鑳界殑錛堝父瑙佺殑鏂規硶鍚嶇О鏈塱nsert,update錛夈?br>
灝辨嬁璁哄潧鍙戣創鏉ヨ鍚э紝璁哄潧鍙戣創棣栧厛闇瑕佽煩杞埌涓涓〉闈紝浣犲彲浠ュ~鍐欏笘瀛愮殑涓婚鍜屽唴瀹癸紝濉啓瀹屽悗錛屽崟鍑燴滄彁浜も濓紝璐村瓙灝卞彂琛ㄤ簡錛屾墍浠ヨ繖閲岀粡榪囦袱涓楠わ細
1銆佽漿鍒頒竴涓柊澧炵殑欏甸潰錛屽湪Action閲屾垜浠竴鑸О涓篴dd錛屼緥濡傦細
public
ActionForward add(ActionMapping mapping, ActionForm
form,
聽聽聽聽聽聽聽聽聽聽聽聽HttpServletRequest request, HttpServletResponse
response)
聽聽聽聽聽聽聽聽聽聽聽聽throws Exception
{
聽聽聽聽聽聽聽聽//榪欎竴鍙ユ槸杈撳嚭璋冭瘯淇℃伅錛岃〃紺轟唬鐮佹墽琛屽埌榪欎竴孌典簡
聽聽聽聽聽聽聽聽log.debug(":: action - subject
add");聽聽聽聽
聽聽聽聽
聽聽聽聽聽聽聽聽//your code here
聽聽聽聽聽聽
//榪欓噷淇濆瓨Token鍊?br>聽聽聽聽聽聽聽聽saveToken(request);
聽聽聽聽聽聽聽聽
聽聽聽聽聽聽
//璺寵漿鍒癮dd欏甸潰錛屽湪Structs-config.xml閲岄潰瀹氫箟錛屼緥濡傦紝璺寵漿鍒皊ubjectAdd.jsp
聽聽聽聽聽聽聽聽return
mapping.findForward("add");
聽聽聽聽}
2銆佸湪濉啓鏍囬鍜屽唴瀹瑰悗錛岄夋嫨 鎻愪氦 錛屼細鎻愪氦鍒癷nsert鏂規硶錛屽湪insert鏂規硶閲屽垽鏂紝鏄惁閲嶅鎻愪氦浜嗐?br>public ActionForward
insert(ActionMapping mapping, ActionForm form,
HttpServletRequest request,
HttpServletResponse response){
if (isTokenValid(request, true)) {
//
琛ㄥ崟涓嶆槸閲嶅鎻愪氦
//榪欓噷鏄繚瀛樻暟鎹殑浠g爜
} else
{
//琛ㄥ崟閲嶅鎻愪氦
saveToken(request);
//鍏跺畠鐨勫鐞嗕唬鐮?br>}
}
涓嬮潰鏇磋緇嗕竴鐐癸紙娉ㄦ剰錛屼笅闈㈡墍鏈夌殑浠g爜浣跨敤鍏ㄨ鎷彿錛夛細
1銆佷綘鎯沖彂璐存椂錛岀偣鍑燴滄垜瑕佸彂璐粹濋摼鎺ョ殑浠g爜鍙互閲岃繖鏍風殑錛?br>銆坔tml:link
action="subject.do?method=add"銆夋垜瑕佸彂璐淬?html:link銆?br>subject.do 鍜?method
榪欎簺鍦╯truct-config.xml濡備綍瀹氫箟鎴戝氨涓嶈浜嗭紝鐐瑰嚮閾炬帴鍚庯紝浼氭墽琛宻ubject.do鐨刟dd鏂規硶錛屼唬鐮佸涓婇潰璇寸殑錛岃煩杞埌subjectAdd.jsp欏甸潰銆傞〉闈㈢殑浠g爜澶ф濡備笅錛?br>銆坔tml:form
action="subjectForm.do?method=insert"銆?br>聽聽銆坔tml:text property="title"
/銆?br>聽聽銆坔tml:textarea property="content" /銆?br>聽聽銆坔tml:submit property="鍙戣〃"
/銆?br>聽聽銆坔tml:reset property="閲嶅~"
/銆?br>銆坔tml:form銆?br>濡傛灉浣犲湪add鏂規硶閲屽姞浜嗏渟aveToken(request);鈥濊繖涓鍙ワ紝閭e湪subjectAdd.jsp鐢熸垚鐨勯〉闈笂錛屼細澶氫竴涓殣钘忓瓧孌碉紝綾諱技浜庤繖鏍楓坕nput
type="hidden" name="org.apache.struts.taglib.html.TOKEN"
value="6aa35341f25184fd996c4c918255c3ae"銆夛紝
2銆佺偣鍑誨彂琛ㄥ悗錛岃〃鍗曟彁浜ゅ埌subjectForm.do閲岀殑insert鏂規硶鍚庯紝浣犲湪insert鏂規硶閲岃灝嗚〃鍗曠殑鏁版嵁鎻掑叆鍒版暟鎹簱涓紝濡傛灉娌℃湁
榪涜閲嶅鎻愪氦鐨勬帶鍒訛紝閭d箞姣忕偣鍑諱竴嬈℃祻瑙堝櫒鐨勫埛鏂版寜閽紝閮戒細鍦ㄦ暟鎹簱涓彃鍏ヤ竴鏉$浉鍚岀殑璁板綍錛屽鍔犱笅闈㈢殑浠g爜錛屼綘灝卞彲浠ユ帶鍒剁敤鎴風殑閲嶅鎻愪氦浜嗐?br>if
(isTokenValid(request, true)) {
// 琛ㄥ崟涓嶆槸閲嶅鎻愪氦
//榪欓噷鏄繚瀛樻暟鎹殑浠g爜
} else
{
//琛ㄥ崟閲嶅鎻愪氦
saveToken(request);
//鍏跺畠鐨勫鐞嗕唬鐮?br>}
娉ㄦ剰錛屼綘蹇呴』鍦╝dd鏂規硶閲屼嬌鐢ㄤ簡saveToken(request)錛屼綘鎵嶈兘鍦╥nsert閲屽垽鏂紝鍚﹀垯錛屼綘姣忔淇濆瓨鎿嶄綔閮芥槸閲嶅鎻愪氦銆?br>璁?
浣忎竴鐐癸紝Struts鍦ㄤ綘姣忔璁塊棶Action鐨勬椂鍊欙紝閮戒細浜х敓涓涓護鐗岋紝淇濆瓨鍦ㄤ綘鐨凷ession閲岄潰錛屽鏋滀綘鍦ˋction閲岀殑鍑芥暟閲岄潰錛屼嬌鐢ㄤ簡
saveToken(request);錛岄偅涔堣繖涓護鐗屼篃浼氫繚瀛樺湪榪欎釜Action鎵Forward鍒扮殑jsp鎵鐢熸垚鐨勯潤鎬侀〉闈㈤噷銆?br>濡傛灉浣犲湪浣燗ction鐨勬柟娉曢噷浣跨敤浜唅sTokenValid錛岄偅涔圫truts浼氬皢浣犱粠浣犵殑request閲岄潰鍘昏幏鍙栬繖涓護鐗屽鹼紝鐒跺悗鍜孲ession閲岀殑浠ょ墝鍊煎仛姣旇緝錛屽鏋滀袱鑰呯浉絳夛紝灝變笉鏄噸澶嶆彁浜わ紝濡傛灉涓嶇浉絳夛紝灝辨槸閲嶅鎻愪氦浜嗐?br>
鐢?
浜庢垜浠」鐩殑鎵鏈堿ction閮芥槸緇ф壙鑷狟aseDispatchAction榪欎釜綾伙紝鎵浠ユ垜浠熀鏈笂閮芥槸鍦ㄨ繖涓被閲岄潰鍋氫簡琛ㄥ崟閲嶅鎻愪氦鐨勬帶鍒訛紝榛樿鏄帶
鍒禷dd鏂規硶鍜宨nsert鏂規硶錛屽鏋滈渶瑕佹帶鍒跺叾瀹冪殑鏂規硶錛屽氨鑷繁鎵嬪姩鍐欎笂闈㈣繖浜涗唬鐮侊紝鍚﹀垯鏄笉闇瑕佹墜鍐欑殑錛屾帶鍒剁殑浠g爜濡備笅錛?br>public
abstract class BaseDispatchAction extends BaseAction {
protected
ActionForward perform(ActionMapping mapping, ActionForm
form,
聽聽聽聽HttpServletRequest request, HttpServletResponse
response)
聽聽聽聽throws Exception {
聽聽聽聽聽聽聽聽String parameter =
mapping.getParameter();
聽聽聽聽聽聽聽聽String name =
request.getParameter(parameter);
if (null == name) { //濡傛灉娌℃湁鎸囧畾 method 錛屽垯榛樿涓?
list
聽聽聽聽聽聽聽聽聽聽聽聽name = "list";
聽聽聽聽聽聽聽聽}
聽聽聽聽聽聽聽聽if
("add".equals(name)) {
聽聽聽聽聽聽聽聽聽聽聽聽if ("add".equals(name))
{
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽saveToken(request);
聽聽聽聽聽聽聽聽聽聽聽聽}
聽聽聽聽聽聽聽聽} else if
("insert".equals(name)) {
聽聽聽聽聽聽聽聽聽聽聽聽if (!isTokenValid(request, true))
{
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽resetToken(request);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽saveError(request,
new
ActionMessage("error.repeatSubmit"));
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽log.error("閲嶅鎻愪氦錛?);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽return
mapping.findForward("error");
聽聽聽聽聽聽聽聽聽聽聽聽}
聽聽聽聽聽聽聽聽}
聽聽聽聽聽聽聽聽return
dispatchMethod2(mapping, form, request, response,
name);
聽聽聽聽}
}