`

session.setAttribute()之问题

阅读更多

HTTPSession在setAttribute时,保存的对象是否需要序列化?

查看StandardSession源码中,在setAttribute()中有如下代码

 if ((manager != null) && manager.getDistributable() &&
          !isAttributeDistributable(name, value))
            throw new IllegalArgumentException
                (sm.getString("standardSession.setAttribute.iae", name));

 protected boolean isAttributeDistributable(String name, Object value) {
        return value instanceof Serializable;
 }

 manager接口:
	
    /**
     * Return the distributable flag for the sessions supported by
     * this Manager.
     */
    public boolean getDistributable();
	
    /**
     * Set the distributable flag for the sessions supported by this
     * Manager.  If this flag is set, all user data objects added to
     * sessions associated with this manager must implement Serializable.
     *
     * @param distributable The new distributable flag
     */
    public void setDistributable(boolean distributable);

 

在web.xml配置<distributable/>后, manager中的distributable变量为true,在setAttribute时会检查对象是否序列化。

 因此,session中的对象需不需要实现序列化,取决于是否支持分布式session。

分享到:
评论

相关推荐

    session.getAttribute

    session.setAttribute("loggedinUser", username); } ``` 接下来,在其他需要验证用户身份的页面中,可以通过 `session.getAttribute()` 来获取用户信息: ```java String loggedInUser = (String) session....

    struts乱码问题

    HttpServletRequest request=... session.setAttribute("bookName", this.bookName); session.setAttribute("bookPrice", this.bookPrice); session.setAttribute("bookPress", this.bookPress); return SUCCESS;

    在JSP中使用Session制作简单的登录模块

    &lt;br&gt;if (Name.equals("mike") && Password.equals("1234")) { session.setAttribute("Login", "OK"); response.sendRedirect("Member.jsp"); } else { out.println("登录错误,请输入正确名称...

    JSP 在servlet中使用session

    session.setAttribute("username", "John"); // 获取session属性 String用户名 = (String) session.getAttribute("username"); } ``` 在这个猜数字游戏中,我们可以利用session来存储用户的猜测记录和正确答案...

    很经典的登录回选。

    // session.setAttribute("redirectUrl", request.getRequestURL().append("?").append(request.getQueryString()).toString()); String url = request.getParameter("url"); URLEncoder.encode(URLDecoder....

    jsp中Session对象源码

    session.setAttribute("username", "John Doe"); %&gt; ``` 然后在其他页面: ```jsp String username = (String) session.getAttribute("username"); out.println("欢迎," + username); %&gt; ``` 值得注意的是,...

    java小项目

    基于MVC的小项目 ... session.setAttribute("userName", name); session.setAttribute("pwd", pwd); session.setAttribute("msgList", msgList); response.sendRedirect("jspPages/index.jsp"); } } }

    session.会话实例源码

    - 大量并发情况下,Session复制(在集群环境中)可能导致性能问题,可以考虑使用Session Sticky或者Session Replication来解决。 - 对于敏感信息,不要直接存入Session,而应存储在数据库或其他安全的地方,并在...

    访问或添加三个范围的属性与获取Request-Session-ServletContext-Response对象.rar

    当需要跨多个页面共享用户状态时,可以使用`session.getAttribute()`和`session.setAttribute()`方法。每个用户的Session都是独立的,确保了数据的安全性。不过要注意,长时间保持Session会占用服务器资源,因此需...

    猜数题,JSP,全是JSP页面,没有SERVLET和BEAN

    session.setAttribute("count", new Integer(0)); session.setAttribute("save", new Integer(num)); session.setAttribute("max",new Integer(100)); session.setAttribute("min",new ...

    session的用法

    - **设置和获取数据**:使用`setAttribute(String name, Object value)`和`getAttribute(String name)`方法,分别用于设置和获取Session中的数据。 - **移除数据**:`removeAttribute(String name)`方法用于从...

    8.session机制.doc

    还可以使用`session.getAttribute()`和`session.setAttribute()`来获取和设置Session中的数据,以及`session.invalidate()`来结束Session。 总的来说,Session机制是Web开发中不可或缺的一部分,它帮助开发者在无...

    登陆jsp数据库验证的代码

    session.setAttribute("upassword",rs.getString(2)); session.setAttribute("userjb",rs.getString(3)); response.sendRedirect("sgly/gg-index.jsp"); rs.close(); stmt.close(); conn.close(); } ...

    关于session.doc

    - **Session复制**:在集群环境中,需要解决Session复制的问题,以确保各个服务器节点之间的数据一致性。 #### 七、跨应用程序的Session共享 在某些情况下,可能需要在不同的应用程序之间共享Session信息。这通常...

    session的使用

    6. **使用Session scoped bean**:在Spring框架中,可以创建Session级别的Bean,这样每个用户都有自己的Bean实例,避免了全局变量带来的问题。 综上所述,Session是Web开发中保持用户状态的关键工具。正确理解和...

    JAVAWEB-10:会话技术之session&JSP

    - 通过`session.setAttribute("key", "value");`将数据存入Session,其中"key"为键,"value"为值。 - 要获取Session中的数据,使用`Object value = session.getAttribute("key");`。 - 如果不再需要Session,应调用`...

    会话跟踪技术

    session.setAttribute("lastVisitTime", new Date()); session.setAttribute("visitCount", 1); // 检索属性 Date lastVisitTime = (Date) session.getAttribute("lastVisitTime"); int visitCount = (int) ...

    JAVA100例之实例82Session的运用

    本例"JAVA100例之实例82Session的运用"着重于展示如何在实际开发中使用Session。下面将详细解释Session的工作原理、常见操作以及其在Java Web中的应用。 1. **Session的工作原理:** - **创建:** 当用户首次访问...

    JSP request.setAttribute()详解及实例

    而`session.setAttribute()`则是在会话(session)级别存储数据,其生命周期比请求更长,适用于跨多个页面甚至整个用户会话的数据共享。 `request.getRequestDispatcher().forward()`和`response.sendRedirect()`是...

    session_test.zip

    除了`setAttribute()`用于设置Session属性,还有`getAttribute()`用于获取属性,`removeAttribute()`用于移除属性,以及`invalidate()`用于废弃整个Session。 在实际开发中,需要注意Session的一些优化和管理策略:...

Global site tag (gtag.js) - Google Analytics