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

來自:http://www.cnblogs.com/hgfrzh/p/3401658.htmlhtml

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

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

  • 使用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裏面。session

(1)放在request裏面:spa

a. 直接調用ActionContext提供的put方法:code

ActionContext.getContext().put(key, value);

此時的取值方式有:htm

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

b. 使用ActionContext提供的get方法:
 blog

Map request = (Map)ActionContext.getContext().get("request");

request.put(key, value);

此時的取值方式有:get

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

c. 使用ServletActionContext訪問HttpServletRequest獲得Servlet中的request:
 io

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():

這種方式取值與上面的徹底同樣,再也不贅述。

相關文章
相關標籤/搜索