Struts2访问Web元素(RequestAware,SessionAware,ApplicationAware)

转载自:http://blog.163.com/fengzhisha0914@126/blog/static/150314785201071581310428



Struts2,动作类虽然继承ActionSupport,可以直接写我们自己定义的方法,但是却不能像在Struts1,reques/response/application/HttpServletRequest等等一些Web元素进行操作,所以Struts2提供了RequestAware,SessionAware,ApplicationAware/ServletRequestAware....接口.

实现这些接口就可以对其进行想要的操作了.

 

package actions;

import java.util.Map;

import org.apache.struts2.interceptor.ApplicationAware;

import org.apache.struts2.interceptor.RequestAware;

import org.apache.struts2.interceptor.SessionAware;

import com.opensymphony.xwork2.ActionSupport;

import com.opensymphony.xwork2.ModelDriven;

import enetitys.Student;

 

public class StudentAction extends ActionSupport implementsRequestAware,SessionAware,ApplicationAware,ModelDriven<Student>{

   

    private Student student=new Student();

 

    @Override

    public Student getModel() {

       return student;

    }

    //实现了RequestAware,SessionAware,ApplicationAware接口的类.

    //谁调用执行这个action,谁就来初始化这些值

private Map<String,Object> request;   

    private Map<String,Object> session;

    private Map<String,Object> application;

   

    @Override

    public void setApplication(Map<String, Object> application) {

       this.application=application;

    }

 

    @Override

    public void setRequest(Map<String, Object> request) {

       this.request=request;

    }

 

    @Override

    public void setSession(Map<String, Object> session) {

       this.session=session;

    }

   

    public String delete(){

       request.put("list""把一个集合的数据删掉");

       return "delete";

    }

}

Action中实现RequestAware,SessionAware,ApplicationAware接口,

实现这些接口,都会有相对应的setXXX()方法.就是说谁来执行这个action中的相应方法,

谁就对这些个对象进行初始化(Spring中的注入).也就是Struts2为我们进行了初始化,所以这三个值都不需要自己初始化.

 

Delete.jsp页面中通过el表达式访问request中存放的keylist的值

<body>

    ${request.list}

</body>

页面访问的时候:

Struts2访问Web元素(RequestAware,SessionAware,ApplicationAware) - 盡頭 - 深山憨娃

 

还有一种方法,但是需要依赖于Struts2.也就是上一篇日志中,访问栈中的Stack Context属性值,

只需要在action中定义相应名称的Map集合,在构造函数或一个什么方法中进行取值就行,在当前action的运行环境中取值:

private Map request;

private Map session;

private Map application;

   

    public UserAction(){

       request=(Map)ActionContext.getContext().get("request");

       session=ActionContext.getContext().getSession();

       application=ActionContext.getContext().getApplication();

    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值