struts中的Session有两个
一个是传统的servlet包下的HttpSession
另一个是Struts中自己定义的Session
传统的servlet包下的session的获取办法是:
ServletActionContext.getRequest().getSession();
使用该方法,需要在eclipse的项目中导入servlet-api.jar
新的Session的获取办法是
Map m = ActionContext.getContext().getSession();
这个session以Map类的形式出现,其中的值和HttpSession中的值是同步的
一个是传统的servlet包下的HttpSession
另一个是Struts中自己定义的Session
传统的servlet包下的session的获取办法是:
ServletActionContext.getRequest().getSession();
使用该方法,需要在eclipse的项目中导入servlet-api.jar
新的Session的获取办法是
Map m = ActionContext.getContext().getSession();
这个session以Map类的形式出现,其中的值和HttpSession中的值是同步的
- 在ProductAction的add方法中访问Session
在add方法中获取Struts定义的Session
然后把 name放进去Map m = ActionContext.getContext().getSession();
注:ActionSupport 提供了一些常量方便使用,以及对国际化的处理,所以不继承也是可以的。
package com.how2java.action; import java.util.Map; import com.how2java.bean.Product; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; public class ProductAction extends ActionSupport { private Product product; public String show() { product = new Product(); product.setName("iphone7"); return "show"; } public String add() { Map m = ActionContext.getContext().getSession(); m.put("name", product.getName()); return "show"; } public Product getProduct() { return product; } public void setProduct(Product product) { this.product = product; } }
- 在show.jsp中把通过EL表达式把session中的数据取出来
EL表达式可以直接从session中把数据取出来
<%@page isELIgnored="false"%> ${product.name} ${name}
- 效果
访问测试地址,提交数据:
http://127.0.0.1:8080/struts/addProduct.jsp
可以观察到从session中获取的name