web初学之request,session与application

本文详细解释了HTTP请求中的request, session及application三个对象的作用范围及其生命周期,并通过一个计数器示例展示了这三个对象的不同特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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对象。运行。此时服务器并没有关闭,启用两款浏览器,发现依然有效

                                                                                        

 

转载于:https://www.cnblogs.com/smithhan/p/5156159.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值