Struts2中在Action里面向前端頁面傳值的方法總結


由於在Action中並不能直接誒訪問Servlet API,但它提供了相關類ActionContext來訪問HttpServletRequest、HttpSession和ServletContext,所以在向前端頁面傳值的方法就出現了多樣化。一般我們經常使用的就是通過request、session來傳值,至於Application范圍這一級別的基本上用的少。

1. 首先如果變量是Action的全局變量,並且定義了Setter方法,那么此時無須做任何更多工作,只要它有值在前端頁面就可以取到。此時取值的方法大概有這幾種:

  • 使用Java代碼:<%= request.getParameter(“str”)%>, <%=request.getAttribute(“str”)%> 這兩種方式通常不推薦,原則上html代碼不用摻雜Java代碼;
  • 使用EL表達式:${str};
  • 使用Struts2標簽:<s:property value=”str” /> ;
  • 使用OGNL表達式:<s:property value=”#request.str”/>.

2. 對應方法體內的局部變量,我們可以放在request里面,也可以放在session里面。但是,只有在必要的時候才放在session里面。

(1)放在request里面:

a. 直接調用ActionContext提供的put方法:ActionContext.getContext().put(key, value);此時的取值方式有:

  • 使用Java代碼:<%=request.getAttribute("str") %>,同樣不推薦;
  • 使用EL表達式:${str };
  • 使用Struts2標簽:<s:property value=”str”/>;
  • 使用OGNL表達式:<s:property value=’'#request.str”/>.

b. 使用ActionContext提供的get方法:Map request = (Map)ActionContext.getContext().get("request"); request.put(key, value);此時的取值方式有:

  • 使用Java代碼:<%=request.getAttribute("str") %>,同樣不推薦;
  • 使用EL表達式:${str };
  • 使用OGNL表達式:<s:property value=’'#request.str”/>.

c. 使用ServletActionContext訪問HttpServletRequest得到Servlet中的request:HttpServletRequest request = ServletActionContext.getRequest(); request.setAttribute(key, value);此時的取值方式有:

  • 使用Java代碼:<%=request.getAttribute("str") %>,同樣不推薦;
  • 使用EL表達式:${str };
  • 使用OGNL表達式:<s:property value=’'#request.str”/>.

(2)放在session里面:

a. 使用ServletActionContext訪問HttpServletRequest得到Servlet中的request,再由request得到session:HttpServletRequest request = ServletActionContext.getRequest();

    HttpSession session = request.getSession(); session.setAttribute(key, value);或session.putValue(key, value);(已過時,不推薦使用),此時的取值方式有:

  • 使用Java代碼:<%=session.getAttribute("str") %>或<%=session.getValue("sstr") %>(與putValue對應,已過時,不推薦使用);
  • 使用EL表達式:${str };
  • 使用OGNL表達式:<s:property value=’'#session.str”/>.

b.直接使用ActionContext.getContext().getSession():這種方式取值與上面的完全一樣,不再贅述。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM