学习Struts的心得1
- 在Action中如何得到Servlet中的一些对象如,request,session,application,response
- 在MyEclipse中如何Install struts2,以及一些技巧
- ModelDriver如何简化开发
- Struts2如何异常处理
其实对于Action来说,其就相当于可以和jsp,模型java类打交道的Servlet,可以通过注入数据来获取jsp的请求数据,然后也可以在他的方法中使用Servlet中的一些API,来setAttribute啥的,不过他不像Servlet中有方法参数,他必须要获取,最后通过一些业务逻辑控制来return Result,是把,交给对应的物理视图
- 在Action类中直接通过ActionContext处理
package study.servlet;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class StrutsServletAction extends ActionSupport {
/**
*
*/
private static final long serialVersionUID = 1L;
/**
* @return
*/
public String execute() {
//通过ActionContext对象来处理Servlet的对象;此时得不到具体的request,session,application对象。
ActionContext actionContext = ActionContext.getContext();
actionContext.put("request", "request:hello");
actionContext.getSession().put("session", "session:hello");
actionContext.getApplication().put("application", "application:hello");
return SUCCESS;
}
}
2.
package study.servlet;
import javax.servlet.ServletContext;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import org.apache.struts2.util.ServletContextAware;
import com.opensymphony.xwork2.ActionSupport;
/*
* 通过实现相关接口来获取实例对象
* 必须实现对应的set方法,一调用该action自动完成set注入,然后执行execute
*/
public class ServletAPI2Action extends ActionSupport implements ServletContextAware,ServletRequestAware,ServletResponseAware{
/**
*
*/
private static final long serialVersionUID = 1L;
ServletContext application;
ServletRequest request;
ServletResponse response;
/**
* @return
*/
public String execute() {
application.setAttribute("application", "application:hello2");
request.setAttribute("request","request:hello2");
response.setBufferSize(10000);
return SUCCESS;
}
@Override
public void setServletContext(ServletContext application) {
this.application=application;
}
@Override
public void setServletResponse(HttpServletResponse arg0) {
// TODO Auto-generated method stub
response=arg0;
}
@Override
public void setServletRequest(HttpServletRequest arg0) {
// TODO Auto-generated method stub
request=arg0;
}
}
3.
package study.servlet;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
/*
* 通过ServletActionContext对象直接获取Servlet对象实例
*/
public class GetServletObjectMethodAction3 extends ActionSupport {
/**
*
*/
private static final long serialVersionUID = 1L;
/**
* @return
*/
public String execute() {
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
ServletContext application = ServletActionContext.getServletContext();
request.setAttribute("request", "request:hello3");
response.setBufferSize(20000);
application.setAttribute("application", "application:hello3");
return SUCCESS;
}
}