账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    在Action中通过两种方式往session中存取数据的一个问题
    56
    0

    在研究ServletActionContext.getRequest().getSession()和ActionContext.getcontext().getSession()两者的区别和联系时发现个问题,就是第10句的输出,这里还有test=testValue这个键值对,参考第15句的输出,这个地方该怎么理解呢?我感觉没完全想明白,还请各位给分析一下,先谢谢了。
    xxxAction.java

    
    1  Map session1 = ActionContext.getContext().getSession();
    2  HttpSession session0 = ServletActionContext.getRequest().getSession();
    3  session0.setAttribute("test", "testValue");
    
    4  System.out.println("ServletActionContext.getRequest().getSession():" + session0);
    5  System.out.println("ActionContext.getContext().getSession():" + session1);
    6  System.out.println("session1.get(test):" + session1.get("test"));
    7  System.out.println("session0.getAttribute(test):" + session0.getAttribute("test"));
    
    8  ServletActionContext.getRequest().getSession().removeAttribute("test");
    9  System.out.println("ServletActionContext.getRequest().getSession().removeAttribute(test) complete.");
    
    10 System.out.println("ActionContext.getContext().getSession():" + session1);
    11 System.out.println("session1.get(test)" + session1.get("test"));
    12 System.out.println("session0.getAttribute(test):" + session0.getAttribute("test"));
    
    13 session1.remove("test");
    14 System.out.println("ActionContext.getContext.getSession.remove(test) complete.");
    15 System.out.println("ActionContext.getContext().getSession():" + session1);

    输出:

    ServletActionContext.getRequest().getSession():org.apache.catalina.session.StandardSessionFacade@16023aaa
    ActionContext.getContext().getSession():{test=testValue}
    session1.get(test):testValue
    session0.getAttribute(test):testValue
    
    ServletActionContext.getRequest().getSession().removeAttribute(test) complete.
    ActionContext.getContext().getSession():{test=testValue}
    session1.get(test)null
    session0.getAttribute(test):null
    
    ActionContext.getContext.getSession.remove(test) complete.
    ActionContext.getContext().getSession():{}
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 小萌货- 普通会员 1楼

      在Action中,我们可以通过两个方式往session中存取数据:

      1. 使用HttpSession接口:这是最常用的方法,可以获取、设置和删除session中的数据。

      java HttpSession session = request.getSession(); session.setAttribute("key", "value"); session.setAttribute("key2", "value2");

      1. 使用JavaScriptession接口:这是一种轻量级的session,比HttpSession接口更简单,但功能较少。

      javascript var session = document.createElement("script"); session.setAttribute("type", "text/javascript"); session.setAttribute("src", "script.js"); document.getElementsByTagName("head")[0].appendChild(session);

      在Action中,我们可以通过使用HttpSession接口来获取和设置session中的数据。然后,我们可以将这些数据保存在JSP页面中,供用户使用。在JSP页面中,我们可以通过EL(Event Log)来访问和操作这些数据。

      例如,如果我们想要从HttpSession中获取用户的用户名,我们可以这样写:

      jsp <% String username = (String) request.getSession().getAttribute("username"); %>

      如果我们想要将用户的用户名保存在JSP页面中,我们可以这样写:

      jsp <% String username = request.getParameter("username"); %> <% request.getSession().setAttribute("username", username); %>

      这样,用户就可以在JSP页面中通过EL访问和操作他们从HttpSession中获取的数据了。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部