Struts2笔记 – Struts2中访问Web元素的3中方法
本文由发表于6年前 | J2EE | 暂无评论 |  被围观 8,332 views+
1、通过RequestAware,SessionAware,ApplicationAware获取:2、通过ActionContext获取Map类型的元素:3、通过ServletActionContext获取原始的web元素类型:
1、通过RequestAware,SessionAware,ApplicationAware获取:

在Struts2中不能直接访问Request,Session,Application元素,但是可以使用Struts2中提供的RequestAware,SessionAware,ApplicationAware。在这里要分别为三个对象提供setter方法,以便让struts自动执行,使用IoC(控制反转)进行赋值。

下面的LoginAction使用ModelDriven获取User,放入Session中,并在request和application中分别放入“test1”和“test2”。

LoginAction:

public class LoginAction extends ActionSupport implements ModelDriven<User>,RequestAware,SessionAware, ApplicationAware {
    private Map<String, Object> request;
    private Map<String, Object> session;
    private Map<String, Object> application;
    private User user = new User();

    public void setSession(Map<String, Object> session) {
        this.session = session;
    }
    public void setRequest(Map<String, Object> request) {
        this.request = request;
    }
    public void setApplication(Map<String, Object> application) {
        this.application = application;
    }
    public void setUserService(UserServiceImpl userService) {

        this.userService = userService;
    }
    public String execute() {
        session.put("user", userRe);
        request.put("req", "test1");
        application.put("app", "test2");
        return "result";
    }
}

在页面中读取保存的数据可以用HttpServletRequest,HttpSession,ServletContext等直接访问,也可以使用Struts标签通过Stack Context访问。

在页面中可以按照以下方式读取保存的数据:

<img class="user_photo" src="<s:property value="#session.user.userPhoto" />" />
<!-- userPhoto为User的一个属性 -->

<!--使用标签OGNL表达式的方式访问Stack Context中的值,需要加“#” -->
<s:property value="#request.req"/>
<!--使用HttpServletRequest方式访问 -->
<%=request.getAttribute("req") %> <br />

<s:property value="#application.app"/> <%=application.getAttribute("app") %> <br />

<!--使用OGNL表达式访问Stack Context中的attr获取具体的数据-->
<s:property value="#attr.user.userPhoto"/><br />
<s:property value="#attr.req"/><br />
<s:property value="#attr.app"/><br />
2、通过ActionContext获取Map类型的元素:
private Map request;
    private Map session;
    private Map application;
    //可以在构造方法中取值
    public LoginAction1() {
        request = (Map)ActionContext.getContext().get("request");
        session = ActionContext.getContext().getSession();
        application = ActionContext.getContext().getApplication();
    }
    public String execute() {
        request.put("r1", "r1");
        session.put("s1", "s1");
        application.put("a1", "a1");
        return SUCCESS; 
    }
3、通过ServletActionContext获取原始的web元素类型:
private HttpServletRequest request;
    private HttpSession session;
    private ServletContext application;
    public LoginAction3() {
        request = ServletActionContext.getRequest();
        session = request.getSession();
        application = session.getServletContext();
    }
除了文章中有特别说明,均为IT宅原创文章,转载请以链接形式注明出处。
本文链接:http://www.itzhai.com/visit-the-web-element-using-struts2-ioc-assignment-requestaware-sessionaware-applicationaware.html
arthinking Java技术交流群:280755654,入门群:428693174 more
分享到:
 
2011 6/19
如果您有更好的原创技术博文或者观点,欢迎投稿:admin@itzhai.com,或者关注订阅左侧浮动面板的微信号订阅IT宅itread)发送消息。
文章评论
    没有评论
给我留言

有人回复时邮件通知我
J2EE的相关文章
随机文章 本月热门 热评
1 Java Web笔记 – 客户化JSP标签库 自定义标签 2011/11/12
2 Callable 和 Future实现线程等待 2012/7/30
3 8253/8254的编程约定 2011/4/26
4 MongoDB在Java中的更新数据操作 2012/2/7
5 Javascript笔记 – Javascript中的变量 2012/5/22
6 密码保护:2014年计划和执行情况 2014/1/1
友情推荐 更多
破博客 文官洗碗安天下,武将打怪定乾坤。多么美好的年代,思之令人泪落。
Mr.5's Life 白天是一名程序员,晚上就是个有抱负的探索者
行知-追寻技术之美 关注大数据,分布式系统
我爱编程 编程成长轨迹
Cynthia's Blog 学习笔记 知识总结 思考感悟
 
猜您喜欢
欢迎关注我的公众号 IT宅
关于IT宅 文章归档

IT宅中的文章除了标题注明转载或有特别说明的文章,均为IT宅的技术知识总结,学习笔记或随笔。如果喜欢,请使用文章下面提供的分享组件。转载请注明出处并加入文章的原链接。 感谢大家的支持。

联系我们:admin@itzhai.com

Theme by arthinking. Copyright © 2011-2015 IT宅.com 保留所有权利.