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;
}
}
浙公网安备 33010602011771号