1. 程式人生 > >五、Struts2框架中如何使用Servlet的API

五、Struts2框架中如何使用Servlet的API

有兩種方式,一種是呼叫框架提供的api間接的使用Servlet的api,也叫完全解耦的方式,另一種直接使用原生Servlet的API。

完全解耦合的方式

如果使用該種方式,Struts2框架中提供了一個類,ActionContext類,該類中提供一些方法,通過方法獲取Servlet的API,一些常用的方法如下:

  • static ActionContext getContext() :獲取ActionContext物件例項
  • java.util.Map<java.lang.String,java.lang.Object> getParameters() :獲取請求引數,相當於request.getParameterMap();
  • java.util.Map<java.lang.String,java.lang.Object> getSession() :獲取的代表session域的Map集合,就相當於操作session域。
  • java.util.Map<java.lang.String,java.lang.Object> getApplication() :獲取代表application域的Map集合
  • void put(java.lang.String key, java.lang.Object value) :向request域中存入值。

例如:

/**
 * 完全接耦合的方式
 * 
 * @author mChenys
 *
 */
public class Demo1Action extends ActionSupport { private static final long serialVersionUID = 1L; @Override public String execute() throws Exception { // 獲取ActionContext物件 ActionContext context = ActionContext.getContext(); // 獲取請求引數 Map<String, Object> map = context.getParameters();
for (String key : map.keySet()) { // 通過key獲取值 String[] values = (String[]) map.get(key); System.out.println(key + ":" + Arrays.toString(values)); } // request域 context.put("msg", "request域值"); // 操作session域 context.getSession().put("msg", "session域值"); // 操作application域 context.getApplication().put("msg", "application域值"); return SUCCESS; } }

使用原生Servlet的API的方式

Struts2框架提供了一個類,ServletActionContext,該類中提供了一些靜態的方法,具體的方法如下:

  • getPageContext():獲取PageContext物件
  • getRequest():獲取HttpServletRequest物件
  • getResponse():獲取HttpServletResponse物件
  • getServletContext():獲取ServletContext物件

例如:

/**
 * 使用原生api方式
 * @author mChenys
 *
 */
public class Demo2Action extends ActionSupport {

	private static final long serialVersionUID = 1L;

	@Override
	public String execute() throws Exception {
		PageContext pageContext = ServletActionContext.getPageContext();
		HttpServletRequest request = ServletActionContext.getRequest();
		HttpServletResponse response = ServletActionContext.getResponse();
		ServletContext servletContext = ServletActionContext.getServletContext();
		
		//然後就可以正常使用Servlet的api了...
		
		return SUCCESS;
	}
}