1. 程式人生 > >實現xxxAware介面直接訪問Servlet API

實現xxxAware介面直接訪問Servlet API

         雖然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物件。
示例如下:

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>