struts2裏面有三種方法能夠獲取request,最好使用ServletRequestAware接口經過IOC機制注入Request對象。apache
在Action中獲取request方法一:jsp
Action中的代碼:ide
Map request=(Map)ActionContext.getContext().get("request");ui
List<Task> Lasks = taskManager.findAll();this
request.put("tasks",tasks);對象
在JSP頁面中獲取其中的值:接口
<s:iteratorid="task"value="#request.tasks">get
<trclass="table_header">input
<td><s:propertyvalue="#task.tname"/></td>it
<td><s:propertyvalue="#task.tuid"/></td>
<td><s:propertyvalue="#task.tstartTime"/></td>
<td><s:propertyvalue="#task.tendTime"/></td>
<td><s:propertyvalue="#task.tstate"/></td>
<td><inputtype="radio"id="choose"name="choose"onclick="getId(this.value)"v
alue="<s:property value='#task.tid'/>"/></td>
</tr>
</s:iterator>
方法二:經過ServletActionContext類來獲取,使用struts2經驗若是處理get傳參是中文,只能使用該方法進行處理亂碼問題
Action中代碼:HttpServletRequest request = ServletActionContext.getRequest();
request.setAttribute("username","zhangsan");
在jsp中獲取其中的值
<s:propertyvalue="#request.username">或者${requestScope.req}
方法三:經過ServletRequestAware接口經過IOC機制注入Request對象
Action中的代碼:
Action實現ServletRequestAware接口,實現接口中的方法
privateHttpServletRequest request;
實現接口中的方法
publicvoidsetServletRequest(HttpServletRequest request){
this.request = request;
}
//而後在execute()方法中就能夠使用了
publicString execute(){
request.setAttribute("username",
"zhangsan");
request.getSession().getServletContext().getApplication();
//獲得Application
}
該方法必需要實現,並且該方法是自動被調用這個方法在被調用的過程當中,會將建立好的request對象經過參數的方式傳遞給你,你能夠用來賦給你本類中的變量,而後request就能夠使用了
注意:
setServletRequest()方法必定會再execute()方法被調用前執行在jsp頁面中獲取其中的值
1<s:propertyvalue="#request.task.tname"/>
在上面的代碼中,在Action實現了一個ServletRequestAware接口,而且實現了setServletRequest方法。
若是一個動做類實現了ServletRequestAware接口,Struts2在調用execute方法以前,就會先調用setServletRequest方法,並將Request參數傳入這個方法。若是想得到HttpServletResponse、HttpSession和Cookie等對象,動做類能夠分別實現ServletResponseAware、SessionAware和CookiesAware等接口。這些接口都在org.apache.struts2.interceptor包中。
struts2超連接傳值:<s:a href="info.action?id=%{#list.id}"><s:propertyvalue="#list.title"/></s:a>