struts2 servlet前后台数据交互

1.通过ActionContext:

//Demo5Action.java

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class Demo5Action extends ActionSupport{
    @Override
    public String execute() throws Exception {
        
        //request域
        //不推荐
        Map<String, Object> requestScope = (Map<String, Object>) ActionContext.getContext().get("request");
        //推荐
        ActionContext.getContext().put("name","request");
        
        
        
        //session域
        Map<String, Object> sessionScope = ActionContext.getContext().getSession();
        sessionScope.put("name", "session");
        
        //application域
        Map<String, Object> applicationScope = ActionContext.getContext().getApplication();
        applicationScope.put("name", "application");
        
        return "SUCCESS";
    }
}

//struts.xml

<struts>
	<package name="api" namespace="/" extends="struts-default" >
		<action name="api" class="com.struts.a_result.Demo5Action" method="execute" >
			<result name="SUCCESS" type="dispatcher" >/api.jsp</result><!-- type="dispatcher" 默认为转发  redirect:重定向-->
		</action>
	</package>
</struts>

结果:

2.通过原生servlet:

package com.struts.b_api;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

/*
 * 
 * 	如何在Action中获得原生servletAPI
 * 
 */
public class Demo5Action extends ActionSupport{
	//并不推荐
	@Override
	public String execute() throws Exception {
		//原生request
		HttpServletRequest request = ServletActionContext.getRequest();
		//原生session
		HttpSession session = request.getSession();
		
		//原生response
		HttpServletResponse response = ServletActionContext.getResponse();
		
		//原生servletContext
		ServletContext servletContext = ServletActionContext.getServletContext();
		
		return "SUCCESS";
	}
}

3.通过实现ServletRequestAware的接口来实现:

//Demo6Action.java

package com.struts.b_api;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.interceptor.ServletRequestAware;

import com.opensymphony.xwork2.ActionSupport;

/**
 * 		方式三
 * @author taoyulong
 *
 */
public class Demo6Action extends ActionSupport implements ServletRequestAware{

	private HttpServletRequest request;
	@Override
	public String execute() throws Exception {
		System.out.println("这是原生的request:"+request);	
		return "SUCCESS";
	}
	@Override
	public void setServletRequest(HttpServletRequest request) {
		this.request = request;
		
	}

}

  

猜你喜欢

转载自www.cnblogs.com/Terlong/p/9231292.html
今日推荐