[JSP ] 如何修改response的內容

看板java作者 (PTT新聞)時間10年前 (2014/10/17 15:16), 10年前編輯推噓4(4021)
留言25則, 4人參與, 最新討論串1/1
String style = (String)request.getParameter("style"); switch (new Integer(style)){ case 1: request.getRequestDispatcher("/index1.jsp").forward(request, response); break; case 2: request.getRequestDispatcher("/index2.jsp").forward(request, response); break; case 3: request.getRequestDispatcher("/index3.jsp").forward(request, response); break; default: request.getRequestDispatcher("/index1.jsp").forward(request, response); break; } /* 我想在這邊加一段Java Code 修改response(HttpServletResponse) 的html內容。 不更動jsp file */ 請問各位大師,該如何修改呢? 謝謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 125.227.131.127 ※ 文章網址: http://www.ptt.cc/bbs/java/M.1413530199.A.EB7.html

10/18 16:10, , 1F
打開你的編輯器 載入JSP 然後開始改
10/18 16:10, 1F

10/18 16:10, , 2F
改完記得存檔更新啊
10/18 16:10, 2F

10/18 16:12, , 3F
欸不是 做了 forward 之後不就轉向出去了嗎 後面能改喔?
10/18 16:12, 3F
不是說好不動jsp ? forward 之後沒轉出去,只是繞一圈又跑回來了 唉!沒人回,難道不能修改嗎? ※ 編輯: pttnews (220.135.143.146), 10/18/2014 21:31:37

10/19 02:04, , 4F
forward出去就預期接手的servlet/jsp會做到完了吧
10/19 02:04, 4F

10/19 02:06, , 5F
就算程式結構上繞回來,response應該也已經被commit不能改
10/19 02:06, 5F

10/19 02:07, , 6F
想改應該用include吧
10/19 02:07, 6F
m大說得對,的確是iscommit == true,內容不能改! 但是我壞壞,就是想改耶~

10/19 17:26, , 7F
HttpServletResponseWrapper
10/19 17:26, 7F
喔!關鍵字出現了,我試試看等下回報~ ※ 編輯: pttnews (125.227.131.127), 10/20/2014 10:00:50

10/20 10:28, , 8F
如果你等下就能回報,應該是找到範例可參考才會這麼快速XD
10/20 10:28, 8F

10/20 10:28, , 9F
這個是入口關鍵字,實際用起來需要像粽子一串東西
10/20 10:28, 9F

10/20 18:29, , 10F
原po掉進平行時空了嗎?
10/20 18:29, 10F
sorry ~ 正如b大所言,要配合filter,正合我的需求,謝謝您

10/21 09:03, , 11F
應該還在綁粽子XD
10/21 09:03, 11F
※ 編輯: pttnews (220.135.143.146), 10/22/2014 20:13:48

10/22 21:18, , 12F
呃,wrapper在filter中蠻常見,但你這題倒不見得需要filter
10/22 21:18, 12F

10/22 21:19, , 13F
畢竟filter主要是面對外界的request,而某些jsp有可能是純
10/22 21:19, 13F

10/22 21:20, , 14F
內部用或不經filter. 不過,若問題有急迫性先解決比較重要
10/22 21:20, 14F
請b大給一些提示, 若不用filter 難道是放在 jsp 或是 servlet 嗎? ※ 編輯: pttnews (125.227.131.127), 10/23/2014 10:11:56

10/23 11:00, , 15F
正規作法是在程式裏直接用wrapper給jsp(callee)一個像[VM
10/23 11:00, 15F

10/23 11:00, , 16F
]一樣的環境,然後用request dispatcher叫用該jsp,另外記
10/23 11:00, 16F

10/23 11:01, , 17F
得弄個自訂的output stream設給response wrapper,看是要
10/23 11:01, 17F

10/23 11:02, , 18F
output到byte array或file,另外要處理一些getWriter等的
10/23 11:02, 18F

10/23 11:02, , 19F
細節,呼叫完再從output stream的所在取出結果.這個作法正
10/23 11:02, 19F

10/23 11:03, , 20F
規. (現在沒有推文秒數限制,推起來爽多了 XD)
10/23 11:03, 20F

10/23 11:06, , 21F
這個弄好,以後很好用,例如你有個jsp是產生報表的,可以直
10/23 11:06, 21F

10/23 11:07, , 22F
接叫用取得報表輸出,而不用用http client去取得,有些jsp
10/23 11:07, 22F

10/23 11:07, , 23F
對外界隱藏,http client連不到,用這個方法都可以
10/23 11:07, 23F

10/23 11:08, , 24F
這概念簡單講,就是把jsp/servlet等,當成像unix的pipe小工
10/23 11:08, 24F

10/23 11:08, , 25F
具來叫用,把它輸出導向到自己所要的地方(ram or file)
10/23 11:08, 25F
謝謝b大解說! 感恩~ ※ 編輯: pttnews (125.227.131.127), 10/23/2014 13:58:42
文章代碼(AID): #1KGC9Nwt (java)
文章代碼(AID): #1KGC9Nwt (java)