编程开发 > JAVA > 文章内容

java基础知识总结(162)

2016-9-26编辑:ljnbset

session技术

                   (1)什么是session?

                   浏览器访问服务器时,服务器会创建一个

         对象(该对象称为session对象,该对象有一个唯一

         的id号,称为sessionId),服务器在默认情况下,

         会将这个sessionId以set-cookie消息头的方式

         发送给浏览器(即使用cookie机制),浏览器会将

         sessionId保存到内存里。当浏览器再次访问服务

         器时,会将sessionId发送给服务器。服务器依据

         sessionId就可以找到之前创建的session对象。

                   (2) 如何获得一个session对象?

                   a, HttpSession session =

                   request.getSession(boolean flag);

                            当flag为true:

                                     服务器会检查请求中是否包含sessionId,

                            如果没有,服务器会创建一个session对象;

                            如果有,服务器依据sessionId去查找session

                            对象,如果找到了,则返回,找不到,创建

                            一个新的session对象。

                            当flag为false:

                                     服务器会检查请求中是否包含sessionId,

                            如果没有,返回null;

                            如果有,服务器依据sessionId去查找session

                            对象,如果找到了,则返回,找不到,返回

                            null。

                   b,HttpSession session =

                   request.getSession();

                                     该方法完全等价与request.getSession(true)。

                   (3) session的常用方法:

                            String session.getId(); //返回sessionId。

                            session.setAttribute(String name,

                            Object obj);

                            //name对应的值不存在,返回null。

                            Object session.getAttribute(String name);

                            session.removeAttribute(String name);

                   (4)session的超时

                            服务器会将空闲时间过长的session对象

                   删除掉,称之为session超时。

                            服务器会有一个缺省的超时限制(一般是

                            30分钟),这个缺省时间可以修改。

                                     比如tomcat可以修改 conf/web.xml

                                   

                                    30

                               

                       该修改会影响到所有部署在这个服务器上的

                       应用,一般不要修改。

                       可以对某个应用,在web.xml文件中,添加

                               

                                    30

                               

                       可以调用session.setMaxInactiveInterval(int

                       seconds)设置超时限制。

                   (5) session的删除

                             session.invalidate();   

案例:       

         session验证

                   step1 在登录成功之后,向session对象里

         绑订数据:

                   session.setAttribute("user",user);

                   step2 对于需要保护的资源(即必须要登录之

         后才能访问的资源),添加验证代码:

                   Object obj = session.getAttribute("user");

                   if(obj == null){

                            //没有登录

                            response.sendRedirect("login.jsp");

                   }else{

                            //正常访问

                   }

java基础知识总结(161)

热点推荐

登录注册
触屏版电脑版网站地图