smithhan

导航

web初学之request,session与application

request

(1)requestsetAttribute()getAttribute()方法一般都是成对出现,首先通过setAttribute()方法设置属性与属性值,然后通过getAttribute()方法根据属性获取到与该属性对应的对象值。setAttribute()getAttribute()方法都是在服务器端内部执行,客户端并不清楚。(注意:getAttribute()之后需要进行向下类型转换,将属性值转换为真正的对象)

(2)requestgetParameter()方法是获取到客户端通过表单或url请求参数所发送过来的参数值,是客户端与服务器之间的交互,服务器要想获取到客户端发送过来的数据,就需要使用getParameter()方法来获取。没有与之对应的setParameter()方法。

Session

(1)session也存在setAttribute()和与之对应的getAttribute()方法。但与request不同的是,session对象内数据的存活范围也就是session对象的存活范围(只要浏览器不关闭,session对象就会一直存在),因此,在同一个浏览器窗口中,无论向服务器端发送多少个请求,session对象只有一个。

(2)Request对象内数据的存活范围就是在request对象的存活范围内,当客户端向服务器端发送一个请求,服务器向客户端返回一个响应后,该请求对象就被销毁了;之后再向服务器发送新的请求时,服务器会创建新的request对象,该request对象与之前的request对象锁存放的对象无任何关系,因此也无法获得在它之前的request对象所存放的数据。

Application

(1)存活范围最大的对象,只要服务器没有关闭,application对象中的数据就会一直存在。在整个服务器运行过程中application只有一个。

联系与区别:requestsession以及application3个对象的范围是逐个增加的;request只在一个请求范围内;session是在浏览器串口的范围内;application则是在整个服务器的运行过程中。

 

示例:实现一个网页计数器来模拟三种对象作用范围。

request.jsp

<%
            if (request.getAttribute("counter") == null)
            {
               request.setAttribute("counter", "1");
            }
            else
            {
                System.out.println("else");
                String strnum = null;
                strnum = (String)request.getAttribute("counter");
                int icount = 0;
                icount = Integer.valueOf(strnum).intValue();
                icount++;
                
                request.setAttribute("counter", Integer.toString(icount));
            }
        %>
        
        您是第<%= request.getAttribute("counter") %> 位访问者!

 

request对象下,刷新网站,计数器保持不变。(每刷新一次request对象即请求一次,服务器返回一个响应后即销毁。)

将代码中的request对象统统改为session对象。再次运行。

关闭浏览器之前:                                                                         

                                                                                                 

    

    更换浏览器再此运行,session对象的存活范围在关闭浏览器或更换浏览器后便失效。

      

最后更改代码中session对象为application对象。运行。此时服务器并没有关闭,启用两款浏览器,发现依然有效

                                                                                        

 

posted on 2016-01-24 22:20  smithhan  阅读(1227)  评论(0编辑  收藏  举报