Action访问Servlet API的对象

来源:互联网 发布:edius软件 编辑:程序博客网 时间:2024/05/20 06:31

1,Action访问ActionContext的方式:(request session application)

  Struts2中的Action与Servlet API完全分离,但是在实现业务逻辑处理是,经常需要访问Servlet中的一些对象,如request,session,application等,struts2提供ActionContext类,在Action中通过该类获取Servlet中的参数

创建ActionContext实例的方法如下:

ActionContext ac=ActionContext.getContext();

常用的方法如下:

1,Object get(Object key);//在ActionContext中查找key值2,Map getAppliCation();//返回一个application 对象,相当于jsp的application对象3,static ActionContext getContext()//获取当前线程的ActionContext对象4,Map getParameter()//返回一个Map类型所有HttpServletRequest  相当于jsp中的request对象5,Map getsession()//返回Map类型的HttpSession值,相当于jsp中的session对象6,void put(Object key,Object value)//向当前的ActionContext存入值7,void setApplication( Map application)//设置application对象的上下文8,void setSession(Map session)//设置session的值
package login;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;public class LoginAction extends ActionSupport {/** *  */private static final long serialVersionUID = 1L;private String userName;private String password;//属性要与jsp显示组件的那么值相同   public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String execute(){if(getUserName().equals("QQ")&&getPassword().equals("123")){//获取ActionContextActionContext ac=ActionContext.getContext();//把登录名放进application中ac.getApplication().put("useName",getUserName());//吧登录名放进session中ac.getSession().put("userName", getUserName());return SUCCESS;}else{return INPUT;}}     }


2,Action直接访问Servlet.(request response session)

  在struts2中通过IoC的方式把servlet对象注入到Action中,需要在Action中实现以下接口:

(1),ServletRequestAware:实现该接口的Action可以直接访问request对象,该接口中提供void setServletRequest(HttpServletRequest request);

(2),ServletResponseAware:实现该接口的Action可以直接访问response对象,该接口中提供void setServletResponse(HttpServletResponseresponse);

(3),SessionAware:实现该接口的Action可以直接访问session对象,该接口中提供void setSession(Map session);

package login;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSession;import org.apache.struts2.interceptor.ServletRequestAware;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;public class LoginAction extends ActionSupport implements ServletRequestAware{/** *  */private static final long serialVersionUID = 1L;private String userName;private String password;//属性要与jsp显示组件的那么值相同private HttpServletRequest request; //可以直接使用request   public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}@Overridepublic void setServletRequest(HttpServletRequest arg0) {// TODO Auto-generated method stubrequest=arg0;//实现该方法赋值}     public String execute(){if(getUserName().equals("QQ")&&getPassword().equals("123")){ //通过request对象获取session对象HttpSession session=request.getSession();//把用户名放入session中session.setAttribute("userName", getUserName());return SUCCESS;}else{return INPUT;}}}

3,非IOC的方式,辅助类ServletActionContext帮助获得servlet.

常用方法:

<span style="font-size:24px;">static getRequest();//获取request对象static getResponse();//获取response对象</span>

<span style="font-size:24px;">import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSession;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;public class LoginAction extends ActionSupport {/** *  */private static final long serialVersionUID = 1L;private String userName;private String password;//属性要与jsp显示组件的那么值相同   public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}   public String execute(){if(getUserName().equals("QQ")&&getPassword().equals("123")){//调用ServletActionContext的getRequest方法获得request对象HttpServletRequest request=ServletActionContext.getRequest(); //通过request对象获取session对象HttpSession session=request.getSession();//把用户名放入session中session.setAttribute("userName", getUserName());return SUCCESS;}else{return INPUT;}}}</span>



0 0
原创粉丝点击