今天下午我发了一文
遇到一个吐血小问题!!!
通过jQuery从视图没有得到Action中response返回的信息,
其根本原因可能是因为response本身就是null,response是从如下的BaseAction中得到的,
现在请问,为什么response会是null?环境struts2+spring+hiberpackage test.s2sh.action;import java.util.Map;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;public class BaseAction extends ActionSupport {
private static final long serialVersionUID = 7620009925942346125L;
ActionContext context = ActionContext.getContext();
HttpServletRequest request = (HttpServletRequest) context.get(ServletActionContext.HTTP_REQUEST);
HttpServletResponse response = (HttpServletResponse) context.get(ServletActionContext.HTTP_RESPONSE);
//HttpServletResponse response = ServletActionContext.getResponse();
Map session = context.getSession();
}
遇到一个吐血小问题!!!
通过jQuery从视图没有得到Action中response返回的信息,
其根本原因可能是因为response本身就是null,response是从如下的BaseAction中得到的,
现在请问,为什么response会是null?环境struts2+spring+hiberpackage test.s2sh.action;import java.util.Map;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;public class BaseAction extends ActionSupport {
private static final long serialVersionUID = 7620009925942346125L;
ActionContext context = ActionContext.getContext();
HttpServletRequest request = (HttpServletRequest) context.get(ServletActionContext.HTTP_REQUEST);
HttpServletResponse response = (HttpServletResponse) context.get(ServletActionContext.HTTP_RESPONSE);
//HttpServletResponse response = ServletActionContext.getResponse();
Map session = context.getSession();
}
import java.io.IOException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;public class TestAction extends BaseAction
{
private String username;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String test() throws IOException
{
try{
response.setContentType("text/html; charset=utf-8");
}catch(java.lang.NullPointerException e){
System.out.println("response null");
}
// PrintWriter out=response.getWriter();
// out.write("dddddd"+username);
// catch (UnsupportedEncodingException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
return null;
}
}
import javax.servlet.http.HttpServletResponse;import com.opensymphony.webwork.interceptor.ServletRequestAware;
import com.opensymphony.webwork.interceptor.ServletResponseAware;
import com.opensymphony.webwork.interceptor.SessionAware;
import com.opensymphony.xwork.ActionSupport;public abstract class BasicActionSuport extends ActionSupport
implements ServletRequestAware,ServletResponseAware,SessionAware{protected String funccode;protected HttpServletRequest request;protected HttpServletResponse response;protected Map session;public String getFunccode() {
return funccode;
}public void setFunccode(String funccode) {
this.funccode = funccode;
}public void setServletResponse(HttpServletResponse response){
this.response=response;
}
public void setServletRequest(HttpServletRequest request) {
this.request = request;
}public void setSession(Map session) {
this.session = session;
}
}
http://mopishv0.blog.163.com/blog/static/544559322009111691715660/
希望对你有帮助
正解。
public class BaseAction extends ActionSupport implements ServletRequestAware, ServletResponseAware
{
private static final long serialVersionUID = -2890511714520633142L; private static final Log log = LogFactory.getLog(BaseAction.class);
protected HttpServletRequest request;
protected HttpServletResponse response;
protected HttpSession session; protected void ajaxPack(String retStr)
{
try
{
PrintWriter out = null;
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
out = response.getWriter();
out.write(retStr);
out.flush();
out.close();
}
catch (Exception e)
{
log.error("包装AJAX请求时异常", e);
}
} public void setServletRequest(HttpServletRequest request)
{
this.request = request;
this.session = request.getSession();
} public void setServletResponse(HttpServletResponse response)
{
this.response = response;
}
请问这里使用的是IOC吗?HttpServletRequest request和HttpServletResponse response从哪里得到的呢?请教
ServletRequestAware, ServletResponseAware只要实现这两个接口,Spring会自动注入的。