zoukankan      html  css  js  c++  java
  • struts中获取域

      在struts的Action中,有三种方法可以得到request、session、servletContext域。

    1.通过ServletActionContext类获取对象

    HttpServletRequest request = ServletActionContext.getRequest();
    HttpSession session = request.getSession();
    ServletContext servletContext = ServletActionContext.getServletContext();
    //操作
    request.setAttribute("request_data","request_data_servlet");
    session.setAttribute("session_data","session_data_servlet");
    servletContext.setAttribute("servletcontext_data","servletcontext_data_servlet");

    2.通过ActionContext类获取Map

    ActionContext context = ActionContext.getContext();
    Map<String, Object> request = context.getContextMap();
    Map<String, Object> session = context.getSession();
    Map<String, Object> application = context.getApplication();
    //操作
    request.put("request_data","request_data_struts");
    session.put("session_data","session_data_struts");
    application.put("servletcontext_data","servletcontext_data_struts");

    3.通过实现接口,注入map对象

    public class DataAction extends ActionSupport implements RequestAware,
    SessionAware,ApplicationAware{ Map
    <String,Object> request; Map<String,Object> session; Map<String,Object> application; public String execute()throws Exception{ request.put("request_data","request_data_注入"); session.put("session_data","session_data注入"); application.put("servletcontext_data","servletcontext_data_注入"); return SUCCESS; } @Override public void setRequest(Map<String, Object> map) { this.request = map; } @Override public void setApplication(Map<String, Object> map) { this.application = map; } @Override public void setSession(Map<String, Object> map) { this.session = map; } }

    4.三者比较

    方法1:使用servlet API,需要额外引入servlet包,但是可以调用getContextPath()等对象方法;

    方法2:struts方式,使用解耦的方式实现对数据的操作,不需要引入额外的包,但是只能设置和获取值;

    方法3:比较复杂,但是可以在优化时使用;

      方法2需要使用ActionContext对象获取其他域,ActionContext无法放在构造函数中初始化。而方法3使用动态注入的方式获取其他域对象,一旦Action对象创建,域值也存在了。

  • 相关阅读:
    scrapy爬虫框架
    MongoDB分组查询,聚合查询,以及复杂查询
    mac重启iterm后不会自动加载.bash_profile
    Linux 之 2>&1
    linux下利用nohup后台运行jar文件包程序
    【intellij idea】汇总
    JAVA虚拟机体系结构
    JDK > JRE > JVM
    依赖注入(IOC) 详解
    mysql 忘记密码 登陆+修改密码
  • 原文地址:https://www.cnblogs.com/juaner767/p/5524399.html
Copyright © 2011-2022 走看看