如题。求解

解决方案 »

  1.   

    struts2中,request和session都被隐藏了
    struts提供两种方式访问session和request,其中比较常用的是利用SPRING里面所说的IOC即控制反转
    IOC方式:
    action类实现ServletRequestAware接口,并新建一个HttpServletRequest request
    public class UserLoginAction extends ActionSupport implements ServletRequestAware{
       public void setServletRequest(HttpServletRequest request) {
         this.request=request;
      }
     然后可以生成的request得到对象,如request.getRemoteAddr()
      

  2.   

    当然可以
    而且很灵活
    呵呵//action中用这个得到request
    HttpServletRequest request = ServletActionContext.getRequest();
    request.setAttribute("list", list);//取list
     <s:iterator id="objs" value="%{#request.list}" >
         
    </s:iterator> 
      

  3.   

    取原有request对象可以试试
    <s:property  value="%{#request.remoteAddr}"  />
      

  4.   


    用他说的这种方式取 不过建议LZ别用request 因为struts2 封装到基本不用request了 对象传递的方式已经彻底改换了(通过get/set request被封装到里面了)
      

  5.   

    例如:request.setAttribute(名字,对象);然后提交action.
    action中request.getAttribute(名字). 在struts 1中可以取到的.但在struts 2中取不到.
      

  6.   

    提供三种方式:1>.ActionContext2>.ServletActionContext3>.IOC
      

  7.   

    struts2public class UserLoginAction extends ActionSupport implements ServletRequestAware{
       public void setServletRequest(HttpServletRequest request) {
         this.request=request;
      }
     然后可以生成的request得到对象,如request.getRemoteAddr()
      

  8.   

    意思是:生成HttpServletRequest对象的set和get方法,然后实现ServletRequestAware接口,然后在execute方法中直接用request对象就能取到了,是么?
    有更简单的方法么
      

  9.   

    不好用啊!
    public void setServletRequest(HttpServletRequest arg0) {
    System.out.println(arg0.getAttribute("point") + "****");
    }
    我在这里打印这个对象,结果什么都没有,point是页面对象的名字,接口也实现了
      

  10.   

    package aware;import javax.servlet.http.HttpServletRequest;
    import org.apache.struts2.interceptor.ServletRequestAware;
    import com.opensymphony.xwork2.ActionSupport;public class TestServletRequestAware extends ActionSupport implements ServletRequestAware{ private static final long serialVersionUID = 1L;
    private String name;
    private HttpServletRequest request;
    public String getName() {
    return name;
    }
    public void setName(String name) {
    this.name = name;
    }
    public HttpServletRequest getRequest() {
    return request;
    }
    @Override
    public void setServletRequest(HttpServletRequest request) {
    this.request = request;
    }

    public String execute() throws Exception{
    request.setAttribute("name", name);
    return SUCCESS;
    }


    }
    前台获取
    <s:iterator value="#request.name">
        <s:property />
    </s:iterator>
      

  11.   

    都理解错了!!!
    我在页面request.setAttribute("name", 对象);,然后到提交到action.
    在action中取这个对象.@Override
        public void setServletRequest(HttpServletRequest request) {
            this.request = request;
        }
    为什么我重写会提示错误,不能重写呢
      

  12.   

    我的那代码经测试是可以通过的, 在action里获得了request, 你想怎么使用都可以. 把我代码的request.setAttribute换成 getAttribute就行啦
      

  13.   

    当然可以 request.getParameter(" ");
      

  14.   

    public class LoginAction extends ActionSupport implements ServletRequestAware { private HttpServletRequest request;

    public void setServletRequest(HttpServletRequest arg0) {
    this.request=arg0;
    } public String execute() throws Exception {
    System.out.println(request.getAttribute("point")+"************");
    return "";
    }

    }
    显示对象为null.你的确定好用么?
      

  15.   

    大哥你这样写不报错么?我加@Override时报错
    @Override
        public void setServletRequest(HttpServletRequest request) {
            this.request = request;
        }
      

  16.   

    @Override可不写啊, 我用eclipse的, 编译没出错...测试过代码结合JSP使用可以获得request值的
      

  17.   


    private HttpServletRequest request;public HttpServletRequest getRequest() {
        return request;
    }public void setServletRequest(HttpServletRequest request) {
        this.request = request;
    }
    楼主是不是漏掉getRequest()
      

  18.   

    getRequest()是获得对象,我在action本类中直接使用变量就可以.
    可是取的对象为空.
      

  19.   

    受教了~~~ 正在学习struts2!