Struts2与Servlet是低耦合的,这可使项目不依赖于具体的容器。如可方便做单元测试。
1,如需在struts2中使用servlet,可通过com.opensymphony.xwork2.ActionContext类来调用。
此类中有很多方法,可以取得session,application等参数。
2,也可以通过实现ServletRequestAware接口来实现:
首先定义一个变量request,在实现接口的setServletRequest方法中,为此变量赋值(由框架实现),这样就可以在此类中使用request了。
package com.test.action; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.interceptor.ServletRequestAware; public class RegisterAction3 implements ServletRequestAware { private HttpServletRequest request; public void setServletRequest(HttpServletRequest request) { this.request = request; } }
struts2相应的还提供了ServletResponseAware,ServletContextAware。
3,还可以使用org.apache.struts2.ServletActionContext类
这个类中提供了很多静态方法,可以取得request,response等。
推荐使用第一种方法,耦合度最底,最不推荐第二种方法,繁琐。
4,通过JSP页面调用指定action中的方法,除了前面章节介绍的在struts.xml文件中配置外,还可以在form中配置指定,如:
<s:form action ="register2!someMethod.action">
someMethod即对应的是register2这个action中的方法。