setAttribute

今天在学习javaweb过程中发现一个很有意思的现象,setAttribute,session和request都有这个方法
setAttribute这个方法,这个方法作用就是保存数据,然后还可以用getAttribute方法来获取出来。
例如:有个User对象,User users=new User(“hong”,“男”);

1, request.setAttribute(“users”,users)这个方法是将users这个对象保存在
request作用域中,然后在转发进入的页面就可以获取到你的值,如果你会一些框架的,那些框架标签也可以获取到,比如struts标签,还有jstl。

如果这你都不会的话,那么你可以在jsp页面编写java小脚本来获取:<%User user=(User)request.getAttribute(“users”)%>,在jsp页面显示值:<%=user.getName()%>。

2,session.setAttribute(“users”,users)。这个方法和上面唯一的区别就是作用域,就是在你整个程序启动的时候,如果在session中保存了数据,那么在你这个无论你在哪个页面,在什么时候都可以获取到这个值,全局的,只要你的这个程序是启动的。session默认的过期时间是30分钟,过期无效,可以去修改这个值。

request.getSession().setAttribute(“绑定名”,绑定值); 这段代码的意思就是:获取session对象,然后把要绑定对象/值 帮定到session对象上 用户的一次会话共享一个session对象。

setattribute和setattributenode的区别
方法设置或更新当前元素属性为指定的属性节点(也就是setAttributeNode的参数)
VS2010上setAttributeNode 方法的注释为:添加指定SYSTEM.XML.ATTRIBUTENODE。
VS2010上setAttribute方法的注释为:设定具有指定名称的属性的值。
示例:

@WebServlet(name = "SDemo01", value = "/SDemo01")
public class
SDemo01 extends HttpServlet {
     
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     
        //获取HttpSession
        HttpSession hs = request.getSession();
        //设置session
        hs.setAttribute("set","123");
        System.out.println(hs);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     

    }
}
@WebServlet(name = "SDemo02", value = "/SDemo02")
public class SDemo02 extends HttpServlet {
     
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     
        //获取HttpSession
        HttpSession hs = request.getSession();
        Object ms = hs.getAttribute("set");
        System.out.println(ms);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     

    }
}

你可能感兴趣的:(java,java)