1.Strust2获取Servlet常用对象有两种方式。
方式一:通过ServletActionContext类来获取Servlet常用对象。
方式二:通过实现接口,例如ServletContextAware,ServletRequestAware,ServletResponseAware
例子:
第一步:struts.xml中添加
<package name="webObj" namespace="/webObj" extends="mypackage">
<action name="webAction1" class="cn.hhtc.action.WebObjectAction" method="execute2">
<result name="success">/web.jsp</result>
</action>
</package>
第二步:web.jsp(没有用到,里面随意写)
第三步:编写WebObjectAction类
package cn.hhtc.action;
import java.io.Serializable;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.jsp.PageContext;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import org.apache.struts2.util.ServletContextAware;
import com.opensymphony.xwork2.ActionSupport;
public class WebObjectAction extends ActionSupport implements Serializable,ServletContextAware,ServletRequestAware,ServletResponseAware {
private ServletContext context;
private HttpServletRequest request;
private HttpServletResponse response;
//方式一
public String execute1()
{
ServletContext sc = ServletActionContext.getServletContext();
System.out.println("application ="+sc);
HttpServletRequest request = ServletActionContext.getRequest();
System.out.println("request ="+request);
HttpServletResponse response = ServletActionContext.getResponse();
System.out.println("response ="+response);
return SUCCESS;
}
//方式二
public String execute2()
{
System.out.println(context);
System.out.println(request);
System.out.println(response);
return SUCCESS;
}
public void setServletContext(ServletContext context) {
this.context = context;
}
public void setServletRequest(HttpServletRequest request) {
this.request = request;
}
public void setServletResponse(HttpServletResponse response) {
this.response = response;
}
}
2.在域对象中存取值。
用简单的例子操作:
第一步:在struts.xml文件中,定义一个package和action
<!-- 各大域对象 -->
<package name="scope" namespace="/scope" extends="mypackage">
<action name="ScopeAction" class="cn.hhtc.action.ScopeAction" method="execute">
<result name="success">/scope.jsp</result>
</action>
</package>
第二步建scope.jsp
<body>
application: ${applicationScope.p }<br/>
session: ${sessionScope.p }<br/>
request: ${requestScope.p }
</body>
第三步编写ScopeAction类
import java.io.Serializable;
import java.util.Map;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class ScopeAction extends ActionSupport implements Serializable {
@Override
public String execute() throws Exception {
ActionContext ac = ActionContext.getContext();
Map<String, Object> applicationMap = ac.getApplication();
applicationMap.put("p", "application p"); //application.setAttribute();
Map<String, Object> sessionMap = ac.getSession();
sessionMap.put("p", "session p"); //session.setAtrribute();
ac.put("p", "request p");//相当于 request.setAtrribute();
return SUCCESS;
}
}