Servlet接口作用域有三种:request、session、application
这些作用域的使用可以让我们传递数据和存储数据,在使用作用域传递数据的时候,必须掌握作用域对应的周期和作用范围。
通过eclipse里边代码的展示体现作用域的生命周期:
LoginServlet.java
request.setAttribute("name", "111");//request设置name值
HttpSession httpSession=request.getSession();
httpSession.setAttribute("name", "222");//创建session作用域设置属性值
ServletContext context = this.getServletContext();
context.setAttribute("name", "333");
request.getRequestDispatcher("OtherServlet").forward(request, response);//内部转发跳转
OtherServlet.java
String name=(String)request.getAttribute("name");
System.out.println(name);
String name1=(String)request.getSession().getAttribute("name");
System.out.println(name1);
String name2=(String)getServletContext().getAttribute("name");
System.out.println(name2);
创建了两个servlet文件,其中在LoginServlet中设置不同作用域下的name属性的值,name属性的值为string类型,然后再通过内部转发跳转到OtherServlet中处理获得不同作用域下的值,具体操作时:通发起不同请求、通过更换浏览器发起请求来测试作用域的生命周期。
1.先运行LoginServlet设置name的属性值,程序自己跳转到OtherServlet,这样的话三个作用域都是有效的,所以会获得三个name属性的值。
2.先运行LoginServlet设置name的属性值,程序自己跳转到OtherServlet,然后再请求OtherServlet,输入url:
http://localhost:8080/ServletTest/OtherServlet
这时候输出会发现只有两个有效值,request作用域失效。
3.关掉第一次运行程序的浏览器,再重新换一个浏览器打开,请求OtherServlet的url,会发现只有最后一个有效。
总结:
request:只限于一次请求 可用于项目中当前操作功能相关
session:一次会话(多次请求) 开始 (用户向服务器发送请求的时候 ) 结束(丢失JsessionId值的时候(关闭浏览器)) 可用于项目中跟用户信息相关
application:tomcat启动时创建,tomcat关闭时销毁 可用于项目中与全局信息有关 比如快递配送地址
jsp的九大内置对象:
pageContext(pageContext)也包含了另外八大对象的引用
request(HttpServletRequest)
session(HttpSession)
application(ServletContext)
response(HttpResponse)
config(ServletConfig)
out(JspWriter)
page(Object)
exception(Throwable)