在我的Web應用程序中,我收到來自客戶端的請求。我在我的jsp頁面或servlet(曾經被調用過)中處理請求,並相應地轉發給其他jsp或servlet。
但在轉發之前,我想設置一些參數,然後用這些新參數轉發它。轉發時,舊參數不應存在。只有新的參數應該存在。如何才能做到這一點?
我可以從一個servlet轉發到jsp,反之亦然嗎?
請告訴如何完成上述工作?在jsp和servlets中設置參數
1
A
回答
3
您可以根據需要和要求使用請求調度程序並重定向。
ServletContext sc = getServletContext();
RequestDispatcher rd = sc.getRequestDispatcher("url");
rd.forward(request,response);
或
response.sendRedirect("url");
的sendRedirect()發送的報頭返回到瀏覽器,它包含將被重定向至該資源的名稱。所以這將是一個新請求來自瀏覽器的資源。
forward()操作發生在服務器內部,而沒有瀏覽器的知識。
3
是的,您可以將參數servlet轉發到jsp和jsp到servlet。
當您可以在請求中設置屬性時,它會在destination.means上丟失,您無法訪問第三個資源上的屬性。
request.setAttribute(attribute name,attribute value)
你也可以在會話中做同樣的事情。
0
使用
ServletRequest.removeAttribute(name of your old attribute)
ServletRequest.setAttribute(name , value)
設置屬性後,得到了使用
getRequestDispatcher(url)
然後用向前RequestDispatcher的()方法
0
你要轉發給JSP/Servlet使用RequestDisptcher。坐落在請求的請求屬性使用
request.setAttribute(name, value)
進行參數設置轉發的JSP可以讀取使用
request.getAttribute(name)
但是,你cannot hide the attribute existing before forward by default
參數。您可以使用Request Wrapper來實現此目的。在轉發之前包裝請求覆蓋set和get屬性方法。
下面的代碼說明
RequestDisptcher dispatcher = req.getRequestDispatcher("url");
HideExistingRequestWrapper requestWrapper =
new HideExistingRequestWrapper(request);
requestWrapper.setAtribute("forwarded", "forwarded value");
dispatcher.forward(requestWrapper, response);
這裏是封裝器實現的代碼:
class HideExistingRequestWrapper extends HttpServletRequestWrapper {
private Map localattributes = new HashMap();
public HideExistingRequestWrapper (HttpServletRequest orignialRequest) {
super(orignialRequest);
}
public Object getAttribute(java.lang.String name) {
return localattributes.get(name);
}
public Object setAttribute(java.lang.String name, java.lang.String value) {
return localattributes.put(name, value);
}
}
2
如果您有沒有用請求參數和你的jsp/servlet有沒有寫任何東西的響應,那麼我想可以使用重定向而不是轉發,因爲重定向會丟棄請求和參數。
當你重定向,你可以動態創建和設置查詢字符串,像這樣:
response.sendRedirect("url?a=" + var1 +"&b=" + var2);
注意到,這將是一個GET方法的URL。如果url將被解析爲一個servlet,那麼可以實現doGet方法來調用doPost。
請注意,如果在jsp/servlet有寫在響應已經不錯了重定向將被忽略...
相關問題
- 1. 在KendoUI JSP Servlets接收參數爲JSON
- 2. JSP和servlets中的設計問題
- 3. JSP和Servlets的MailScheduler
- 4. Servlets和JSP或Android?
- 5. Json usng jsp和servlets
- 6. Servlets和JSP空白
- 7. 使用Servlets和JSP的最佳設計?
- 8. 在jsp頁面和servlets之間傳遞參數
- 9. 上傳文件jsp和servlets
- 10. Java EE和Servlets以及JSP
- 11. Servlets Jsp和Null指針
- 12. Servlets/JSP和多個數據庫插入
- 13. 在servlets之間共享配置參數
- 14. 幫助JSP/Servlets ...?
- 15. Servlets,JSP,Java?
- 16. jsp和servlets中的ajax錯誤
- 17. Jsp和Servlets在同一個HTML頁面
- 18. Java Servlets從數據庫中設置urlPattern
- 19. JSP/Servlets中的倒數計時器
- 20. 設計/實現問題 - Java/JSP/Servlets
- 21. Spring和MVC之前的JSP和servlets
- 22. JSP,Servlets,Spring,休眠
- 23. JSP <c:foreach>選擇參數設置
- 24. 使用Servlets的全局配置參數
- 25. 如何在jsp servlets中使用form bean
- 26. 在JSP中設置會話和servlet的
- 27. 最佳資源學習JSP和Servlets?
- 28. 如何使用JSP和Servlets導出CSV
- 29. 設置參數在JSP頁面中的瓦片
- 30. struts taglib:在jsp中設置請求參數
你留下一個非常重要的要求了你的問題:你需要「前進」到一個新的領域(見Rakesh的回答評論)。 – BalusC 2012-03-21 14:37:13