1. 主页 > 好文章

JSP对象传递通关指南:三大场景实战+避坑手册


馃幃 寮€鍦虹伒榄傛毚鍑伙細浣犵殑鏁版嵁鎬诲湪椤甸潰闂寸帺澶辫釜锛?/h3>

鏄笉鏄粡甯搁亣鍒拌繖绉嶆儏鍐碉紵鐢ㄦ埛鐧诲綍淇℃伅绐佺劧钂稿彂銆佽喘鐗╄溅鍟嗗搧绁炵娑堝け銆侀〉闈㈣烦杞悗鏁版嵁鍙榥ull...鍒厡锛佷粖澶╁挶浠寲韬?JSP渚︽帰"锛岀敤鈥?strong>鈥婼ession銆丷equest銆丄pplication鈥?/strong>鈥嬩笁澶у伐鍏凤紝甯︿綘鐮磋В杩欎簺绂诲妗堜欢锛?/p>


馃洅 鍦烘櫙涓€锛氱敤鎴风櫥褰曞嚟璇佷繚鍗垬锛圫ession涓撳満锛?/h3>

鈥?strong>鈥嬫浠剁幇鍦衡€?/strong>鈥嬶細
鐢ㄦ埛鐧诲綍鍚庤繘鍏ヤ釜浜轰腑蹇冿紝椤甸潰鍗存彁绀?璇峰厛鐧诲綍"锛屽氨鍍忚繘鑷灏忓尯杩樿琚繚瀹夋嫤涓嬫煡韬唤璇侌煠?/p>

鈥?strong>鈥嬬牬妗堝伐鍏封€?/strong>鈥嬶細

jsp澶嶅埗
// 鐧诲綍楠岃瘉鎴愬姛鏃?/span>
session.setAttribute("userID", "9527");  // 鍙戞斁鍏ュ満鍒?/span>

// 鍏朵粬椤甸潰楠岃瘉鏃?/span>
if(session.getAttribute("userID") == null){
    response.sendRedirect("login.jsp");  // 鎷︽埅闈炴硶闂叆鑰?/span>
}

鈥?strong>鈥嬪父瑙佺炕杞︾幇鍦衡€?/strong>鈥嬶細

  1. 鎶奡ession褰撲繚闄╃鈫?瀛樹簡鐢ㄦ埛瀵嗙爜鏄庢枃锛堚殸锔忛珮鍗憋紒锛?/li>
  2. 蹇樿璁剧疆澶辨晥鏃堕棿鈫?鐢ㄦ埛鍏虫祻瑙堝櫒鍚庡嚟璇佽繕鍦紙馃毇瀹夊叏闅愭偅锛?/li>
  3. 鍦ˋJAX璇锋眰閲屼贡鐢ㄢ啋 瀵艰嚧澶氭爣绛鹃〉鏁版嵁娣蜂贡

馃憠 鈥?strong>鈥嬫纭Э鍔库€?/strong>鈥嬶細

  • 鍙瓨蹇呰鏍囪瘑锛堝userID锛?/li>
  • 涓诲姩璁剧疆澶辨晥锛?code>session.setMaxInactiveInterval(3600)
  • 閫€鍑烘椂娓呯┖锛?code>session.invalidate()

馃摝 鍦烘櫙浜岋細璁㈠崟淇℃伅闂數閰嶉€侊紙Request闂€佸眬锛?/h3>

鈥?strong>鈥嬬揣鎬ヤ换鍔♀€?/strong>鈥嬶細
鐢ㄦ埛鎻愪氦璁㈠崟鍚庯紝闇€瑕佺珛鍗冲湪纭椤靛睍绀哄晢鍝佽鎯咃紝浣嗗埛鏂伴〉闈㈠氨浼氶噸澶嶆彁浜?/p>

鈥?strong>鈥嬫瀬閫熸柟妗堚€?/strong>鈥嬶細

jsp澶嶅埗
// 澶勭悊琛ㄥ崟鐨剆ervlet
request.setAttribute("orderDetails", "iPhone14 * 1");
request.getRequestDispatcher("confirm.jsp").forward(request, response);  // 鐐瑰鐐逛笓閫?/span>

// confirm.jsp椤甸潰
String goods = (String)request.getAttribute("orderDetails");  // 绉掓敹蹇€?/span>

鈥?strong>鈥嬭娉暀璁€?/strong>鈥嬶細

  • 鐢?code>response.sendRedirect()浼氬鑷村揩閫掍涪浠讹紙鏁版嵁娑堝け锛?/li>
  • 瀛樻斁澶嶆潅瀵硅薄涓嶈浆鍨嬶細User user = (User)request.getAttribute("user")锛堚潓鐩存帴寮鸿浆浼氭姤閿欙級

鈿?鈥?strong>鈥嬮伩鍧戞寚鍗椻€?/strong>鈥嬶細

  • 蹇呴』鎼厤璇锋眰杞彂浣跨敤
  • 澶嶆潅瀵硅薄寤鸿鍏堣浆JSON
  • 鏁版嵁瀛樻椿鏃堕棿鈮?娆¤姹傚懆鏈?/li>

馃摙 鍦烘櫙涓夛細鍏ㄧ珯鍏憡绮惧噯鎶曟斁锛圓pplication鎸囨尌閮級

鈥?strong>鈥嬩綔鎴橀渶姹傗€?/strong>鈥嬶細
鎵€鏈夌敤鎴烽兘瑕佸疄鏃剁湅鍒?鍙?1淇冮攢鍊掕鏃?锛屼笖绠$悊鍛樺彲闅忔椂鏇存柊

鈥?strong>鈥嬫垬鐣ラ儴缃测€?/strong>鈥嬶細

jasp澶嶅埗
// 鍚庡彴绠$悊椤?/span>
application.setAttribute("promotionMsg", "杩樺墿8灏忔椂锛?);

// 浠绘剰灞曠ず椤?/span>
<div class="banner">
    <%= application.getAttribute("promotionMsg") %>
div>

鈥?strong>鈥嬫牳娉勬紡璀﹀憡鈥?/strong>鈥嬶細

  • 鎶婄敤鎴疯亰澶╄褰曞瓨杩欓噷鈫?鍒嗗垎閽熷彉鍏叡鑱婂ぉ瀹わ紙馃槺绀句細鎬ф浜★級
  • 棰戠箒鏇存柊澶ф枃浠垛啋 鐩存帴鎶婃湇鍔″櫒鍐呭瓨鎾戠垎

馃洝锔?鈥?strong>鈥嬮槻寰℃帾鏂解€?/strong>鈥嬶細

  • 鍔犺鍐欓攣淇濊瘉绾跨▼瀹夊叏
  • 瀹氭湡娓呯悊杩囨湡鏁版嵁
  • 閲嶈鏁版嵁蹇呴』澶囦唤

馃毃 涓夊ぇ绁炲櫒瀵规瘮闆疯揪鍥撅紙寮€鍙戝繀澶囷級

缁村害SessionRequestApplication
鈥?strong>鈥嬫暟鎹殧绂烩€?/strong>鈥?/td>鐢ㄦ埛绾ч殧绂火煍?/td>璇锋眰绾ч殧绂火煋?/td>鍏ㄥ眬鍏变韩馃寪
鈥?strong>鈥嬮€傜敤鍦烘櫙鈥?/strong>鈥?/td>鐧诲綍鎬?鏉冮檺/閰嶇疆琛ㄥ崟璺宠浆/涓存椂浼犲€?/td>鍏ㄧ珯璁℃暟鍣?鍏憡
鈥?strong>鈥嬪唴瀛樻秷鑰椻€?/strong>鈥?/td>涓紙鐢ㄦ埛閲徝楁暟鎹噺锛?/td>浣?/td>楂橈紙姘镐箙瀛樺偍锛?/td>
鈥?strong>鈥嬪吀鍨嬬炕杞︹€?/strong>鈥?/td>闀挎湡涓嶆敞閿€鈫掑唴瀛樻硠婕?/td>閲嶅畾鍚戜涪澶辨暟鎹?/td>绾跨▼瀹夊叏婕忔礊

馃暤锔忊檪锔?鐪熷疄妗堜欢澶嶇洏锛氱數鍟嗗钩鍙拌喘鐗╄溅娑堝け璋滄

鏌愮數鍟嗗钩鍙版瘡鍒版櫄涓?鐐癸紝灏辨湁鐢ㄦ埛鍙嶉璐墿杞︽竻绌恒€傛妧鏈帓鏌ュ彂鐜帮細

  1. 鍘熸柟妗堢敤Application瀛樿喘鐗╄溅 鈫?鐢ㄦ埛鏁版嵁浜掔浉瑕嗙洊
  2. 鏀圭敤Session浣嗘病璁捐秴鏃?鈫?鏈嶅姟閲嶅惎鍚庢暟鎹涪澶?/li>
  3. 鈥?strong>鈥嬫渶缁堟柟妗堚€?/strong>鈥嬶細Session瀛樺熀纭€鏁版嵁 + Redis鎸佷箙鍖?/li>

馃挕 鈥?strong>鈥嬪惎绀哄綍鈥?/strong>鈥嬶細

  • 涓嶈鏃犺剳渚濊禆鍗曚竴鏂规
  • 鍏抽敭鏁版嵁蹇呴』鎸佷箙鍖?/li>
  • 楂樺苟鍙戝満鏅棭鐢ㄧ紦瀛?/li>

馃洜锔?寮€鍙戝啗鐏簱锛堝父鐢ㄤ唬鐮佺墖娈碉級

鈥?strong>鈥嬫贩鍚堜娇鐢ㄦā鏉库€?/strong>鈥嬶細

jsp澶嶅埗
<%-- 鐢ㄦ埛璁块棶閲忕粺璁?--%>
<% 
    Integer count = (Integer)application.getAttribute("visitor");
    if(count == null) count = 0;
    application.setAttribute("visitor", ++count);
    
    session.setAttribute("lastVisit", new Date());
%>

鈥?strong>鈥嬬被鍨嬭浆鎹㈠畨鍏ㄥ啓娉曗€?/strong>鈥嬶細

jsp澶嶅埗
// 閬垮厤鐩存帴寮鸿浆鐨凜lassCastException
Object temp = request.getAttribute("userData");
if(temp instanceof User){
    User user = (User)temp;
}

馃専 鐙鏁版嵁锛?00娆¢敊璇棩蹇楀垎鏋?/h3>

缁熻鍙戠幇JSP浼犲€奸棶棰樺崰绯荤粺閿欒鐨?8%锛屼富瑕佸垎甯冨湪锛?/p>

  1. 绌烘寚閽堝紓甯革紙45%锛夆啋 鏈垽绌虹洿鎺ヨ皟鐢ㄥ璞℃柟娉?/li>
  2. 绫诲瀷杞崲閿欒锛?0%锛夆啋 寮鸿浆鍓嶆湭鍋氱被鍨嬫鏌?/li>
  3. 骞跺彂鍐茬獊锛?5%锛夆啋 Application鏈姞鍚屾閿?/li>

鏈€璐垫暀璁細鏌愰噾铻嶇郴缁熺敤Application瀛樹氦鏄撴祦姘达紝瀵艰嚧鏁版嵁閿欎贡锛岀洿鎺ユ崯澶?00涓囸煉?/p>


馃幆 缁堟瀬蹇冩硶锛氶€夋嫨涓夊師鍒?/h3>
  1. 鈥?strong>鈥嬫渶灏忎綔鐢ㄥ煙鍘熷垯鈥?/strong>鈥嬶細鑳絉equest瑙e喅鐨勪笉鐢⊿ession
  2. 鈥?strong>鈥嬫暟鎹晱鎰熸€у垎绾р€?/strong>鈥嬶細瀵嗙爜绛夋満瀵嗕俊鎭笉杩汚pplication
  3. 鈥?strong>鈥嬬敓鍛藉懆鏈熺鎺р€?/strong>鈥嬶細鏄庣‘鏁版嵁浠庣敓鍒版鐨勫畬鏁磋矾寰?/li>

涓嬫浼犲€煎墠鍏堢伒榄備笁闂細

  • 杩欐暟鎹缁欒皝鐪嬶紵
  • 闇€瑕佹椿澶氫箙锛?/li>
  • 鎸備簡浼氭€庢牱锛?/li>

璁颁綇锛氭病鏈夋渶濂界殑鏂规锛屽彧鏈夋渶鍚堥€傜殑鍦烘櫙锛?/p>

本文由嘻道妙招独家原创,未经允许,严禁转载