實現xxxAware介面直接訪問Servlet API
阿新 • • 發佈:2019-01-24
雖然Struts2提供了ActionContex類來訪問Servlet API,但是這樣畢竟不能直接獲得Servlet API例項,為了使
Struts2能夠直接訪問到Servlet API的例項,Struts2還提供了介面:
ServletContextAware 實現該介面的Action,可以直接訪問Web應用中的ServletContext
ServletRequestAware 實現該介面的Action,可以直接訪問使用者請求的HttpServletRequest
ServletResponseAware 實現該介面的Action,可以直接訪問響應使用者請求的HttpServletResponse
實現這些介面只需要再實現一個方法。如實現ServletRequestAware介面則需要實現public setSetbletRequestAware(HttpServletRequest request)。這個方法有一個引數HttpServletRequest,這個方法就代表了使用者的請求。setSetbletRequestAware(HttpServletRequest request)訪問到了Web應用的請求物件,並將物件設定給Action的成員屬性,從而實現在Action中訪問Servlet物件。
示例如下:
import org.apache.struts2.interceptor.ServletRequestAware;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport implements ServletRequestAware{
private HttpServletRequest request;
@Override
public String execute() throws Exception {
request.setAttribute("success", "walking in the sun");
return SUCCESS;
}
@Override
public void setServletRequest(HttpServletRequest request) {
this.request=request;
}
}
success.jsp輸出
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>
${requestScope.success}
</body>
</html>
Struts2能夠直接訪問到Servlet API的例項,Struts2還提供了介面:
ServletContextAware 實現該介面的Action,可以直接訪問Web應用中的ServletContext
ServletRequestAware 實現該介面的Action,可以直接訪問使用者請求的HttpServletRequest
ServletResponseAware 實現該介面的Action,可以直接訪問響應使用者請求的HttpServletResponse
實現這些介面只需要再實現一個方法。如實現ServletRequestAware介面則需要實現public setSetbletRequestAware(HttpServletRequest request)。這個方法有一個引數HttpServletRequest,這個方法就代表了使用者的請求。setSetbletRequestAware(HttpServletRequest request)訪問到了Web應用的請求物件,並將物件設定給Action的成員屬性,從而實現在Action中訪問Servlet物件。
示例如下:
package com;
import javax.servlet.http.HttpServletRequest;import org.apache.struts2.interceptor.ServletRequestAware;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport implements ServletRequestAware{
private HttpServletRequest request;
@Override
public String execute() throws Exception {
request.setAttribute("success", "walking in the sun");
return SUCCESS;
}
@Override
public void setServletRequest(HttpServletRequest request) {
this.request=request;
}
}
success.jsp輸出
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>
${requestScope.success}
</body>
</html>