Struts2獲取request三種方法

複習啊..html

     struts2裏面有三種方法能夠獲取request,最好使用ServletRequestAware接口經過IOC機制注入Request對象。
  • 在Action中獲取request方法一:
 
在Action中的代碼:
Map request = (Map)ActionContext.getContext().get("request");
List<Task> tasks = taskManager.findAll();
request.put("tasks", tasks);


 
在JSP頁面中獲取其中的值:

<s:iterator id="task" value="#request.tasks">
       <tr class="table_header">
        <td><s:property value="#task.tname"/></td>
        <td><s:property value="#task.tuid"/></td>
        <td><s:property value="#task.tstartTime"/></td>
        <td><s:property value="#task.tendTime"/></td>
        <td><s:property value="#task.tstate"/></td>
        <td><input type="radio" id="choose" name="choose" onclick="getId(this.value)" value="<s:property value='#task.tid'/>"/></td> 
       </tr>
</s:iterator>


--------------------------------------------------------------------------------------------
  • 方法二:經過ServletActionContext類來獲取,使用struts2經驗若是處理get傳參是中文,只能使用該方法進行處理亂碼問題
 
Action中代碼:
HttpServletRequest request = ServletActionContext.getRequest();
request.setAttribute("username", "zhangsan");


 
在jsp中獲取其中的值
 
<s:property value="#request.username">或者${requestScope.req}

-------------------------------------------------------------------------------------------- 
  • 方法三:經過ServletRequestAware接口經過IOC機制注入Request對象
Action中的代碼:
Action實現ServletRequestAware接口,實現接口中的方法
     
private HttpServletRequest request;
     //實現接口中的方法
     public void setServletRequest(HttpServletRequest request){
      this.request = request;
     }
     //而後在execute()方法中就能夠使用了
     public String execute(){
      request.setAttribute("username", "zhangsan");
      request.getSession().getServletContext().getApplication(); //獲得Application
     }

     該方法必需要實現,並且該方法是自動被調用
     這個方法在被調用的過程當中,會將建立好的request對象經過參數的方式傳遞給你,你能夠用來賦給你本類中的變量,而後request就能夠使用了
      注意:setServletRequest()方法必定會再execute()方法被調用前執行
 
在jsp頁面中獲取其中的值
<s:property value="#request.task.tname"/>


在上面的代碼中, 在Action實現了一個 ServletRequestAware接口,而且實現了 setServletRequest方法。java

若是一個動做類實現了 ServletRequestAware接口, Struts2在調用 execute方法以前,就會先調用setServletRequest方法,並將Request參數傳入這個方法。若是想得到 HttpServletResponse、HttpSession和 Cookie等對象,動做類能夠分別實現 ServletResponseAware、 SessionAware和CookiesAware等接口。這些接口都在 org.apache.struts2.interceptor包中。apache

struts2超連接傳值: <s:a href="info.action?id=%{#list.id}"> <s:property value="#list.title"/></s:a>
相關文章
相關標籤/搜索