- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
request是表示一个请求,只要发出一个请求就会创建一个request 用处:常用于服务器间同一请求不同页面之间的参数传递,常应用于表单的控件值传递.
服务器会为每个会话创建一个session对象,所以session中的数据可供当前会话中所有servlet共享。 会话:用户打开浏览器会话开始,直到关闭浏览器会话才会结束。一次会话期间只会创建一个session对象。 用处:常用于web开发中的登陆验证界面(当用户登录成功后浏览器分配其一个session键值对).
Application属性范围值,只要设置一次,则所有的网页窗口都可以取得数据。 ServletContext在服务器启动时创建,在服务器关闭时销毁,一个JavaWeb应用只创建一个ServletContext对象,所有的客户端在访问服务器时都共享同一个ServletContext对象; 用处:ServletContext对象一般用于在多个客户端间共享数据时使用,
我写了一个小demo,大家可以看一下,下面这是代码.
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/getCount")
public class CountServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest requset, HttpServletResponse response) throws ServletException, IOException {
// super.service(req, resp);
Integer countRequset = (Integer) requset.getAttribute("count");
if (countRequset==null) {
countRequset = 0;
}
countRequset++;
requset.setAttribute("count",countRequset);
System.out.println("ok");
Integer countSession = (Integer) requset.getSession().getAttribute("count");
if (countSession==null) {
countSession = 0;
}
countSession++;
requset.getSession().setAttribute("count",countSession);
Integer countContext = (Integer) requset.getSession().getServletContext().getAttribute("count");
if (countContext==null) {
countContext = 0;
}
countContext++;
requset.getSession().getServletContext().setAttribute("count",countContext);
requset.getRequestDispatcher("WEB-INF/page/count_page.jsp").forward(requset,response);
}
}
我在代码中申明了三个变量,都是count,不同就在于不是同一个空间中的变量,我们来浏览器看看效果:
这是在一个浏览器中,第一次进入之后的效果.
我在这个浏览器中刷新8次: 可以看到,每次的请求都是1,其他的随着我的刷新次数而增加.
我在其他浏览器输入相同的访问网址: 可以看到,请求和会话都重置,只有服务器的次数是上一次的再加1.
requset,session,application三者存在的意义就是 前后端进行数据传输 。 三者使用各自的作用域进行传递数据和存储数据 。
getAttribute()与setAttribute() 。
后端要通过getAttribute()进行数据的获取以及通过setAttribute()进行设置属性,然后数据被前端使用。 所以三者都可以通过 setAttribute() 赋值和 getAttribute() 取值。 同时还有其他类如removesetAttribute()等属性,不做详解.
作用域大小为 。
requset(请求作用域)< session(会话作用域) < application(全局作用范围) 。
request
第一个作用域是request,他仅在当前请求中有效。 作用域:一次HTTP请求到服务器处理结束,返回响应的整个过程.
session
第二个作用域是session,他在当前会话有效。 作用域:当一台电脑上的同意浏览器对服务器进行多次访问的时候,在这多次访问之间传递信的信息就是session作用域的范围.
application:
第三个作用域是application,它所在的所有应用程序中都有效。 作用域:如果不进行手工删除,它们将一直可以使用,也就是当服务器开始到服务器结束的这段时间,application作用域中存储的数据都是有效的,所有用户均可使用.
request对象内数据存活范围是当客户端向服务器发送一个请求,服务器向客户端返回一个响应之后,该请求对象就被销毁了。之后再次发送的请求也无法获取之前request对象存放的任何数据.
session是服务器端对象,保存在服务器端。并且服务器可以将创建session后产生的sessionid通过一个cookie返回给客户端,以便下次验证。(session底层依赖于cookie) 它从浏览器发出第一个HTTP请求即可认为是会话的开始,但是会话结束的时间是不确定的,因为在浏览器关闭的时候并不会通知服务器,一般Tomcat设置的默认时间为120分钟,也可以进行设置,或者是强制结束当前会话.
这三者的setAttribute与getAttribute方法都是在服务器端内部执行的,客户端不知道服务器端是否执行过这两个方法.
最后此篇关于JavaWeb中requset,session,application的作用域及区别的文章就讲到这里了,如果你想了解更多关于JavaWeb中requset,session,application的作用域及区别的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!