您的位置:首页 > 编程语言 > Java开发

Struts2对常用Servlet对象的获取

2014-11-16 16:41 253 查看
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;
	}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: