Jsp的四个作用域 :page、request、session和application

1、什么是JSP?

JSP(Java Server Pages):是以Java语言为基础的动态网页开发技术,
 特点:
 Servlet特点:在Java源码中嵌入html源码
 JSP特点:在html源码中嵌入java代码

2、JSP的四大作用域: page、request、session和application

这四大作用域,其实就是其九大内置对象中的四个,为什么说他们也是JSP的四大作用域呢?因为这四个对象都能存储数据,比如request.setAttribute()注意和request.setParameter()区分开来,一个是存储在域中的、一个是请求参数,session.setAttribute()、application其实就是SerlvetContext,自然也有setAttribute()方法。而page作用域的操作就需要依靠pageContext对象来进行了。

(1)page作用域:代表变量只能在当前页面上生效
(2)request:代表变量能在一次请求中生效,一次请求可能包含一个页面,也可能包含多个页面,比如页面A请求转发到页面B

【1】生命周期:在service 方法调用前由服务器创建,传入service方法。整个请求结束,request生命结束。

【2】HttpServletRequest 请求:

  1. 获取请求行中的信息:
    getMethod() 获取请求方式
    getRequestURL() 获取客户端发送请求时的完整的URL
    getRequestURI() 获取请求行中的资源名部分
    getContextPath() 获取当前应用的虚拟目录
    getQueryString() 获取请求行中的参数部分
  2. 获取请求头中的信息:
    String getHeader(String name) 根据头名称 得到头信息值
    Enumeration getHeaderName() 得到所有头信息
    Enumeration getHeaders(String name)根据头名称 得到信息
  3. 获取请求正文的信息:
    String getParameter(String name)根据表单中name属性名 获取表单项value的值
    String[] getParameterValues(String name) 根据表单中的复选框名字 提取值
    Map<String,String[]> getParameterMap() 得到表单提交的所有值的方法
    Enumeration getParameterNames() 得到表单提交的所有name 的方法
    ServletInputStream getInputStream() 以字节流的方式得到所有的表单数据

【3】作用域:request可以在一个请求中共享数据

(3)session:代表变量能在一次会话中生效,基本上就是能在web项目下都有效,session的使用也跟cookie有很大的关系。一般来说,只要浏览器不关闭,cookie就会一直生效,cookie生效,session的使用就不会受到影响。

【1】session的生命周期包括三个阶段:创建、活动、销毁
创建:
当客户端第一次访问某个jsp或者servlet的时候,服务器会为当前会话创建一个SessionId,每次客户端向服务器发送请求时,都会将此sessionId携带过去,服务端会对此sessionId进行校验。
活动:
某次会话当中通过超链接打开的新页面属于同义词会话。
只要当前页面没有全部关闭,重新打开新的浏览器窗口访问同一项目资源时属于同一次会话。

本次会话的所有页面都关闭后再重新访问某个Jsp或者Servlet将会创建新的会话。

注意事项:注意原有会话还存在,只是这个旧的SessionID任然存在服务端,只不过再也没有客户端会携带它然后交予服务端校验。
销毁:
Session的销毁:关闭浏览器,更换浏览器,服务器宕机/重启,session默认时间,session手动销毁
session.invalidate();// 销毁当前session
session.removeAttribute(string key);移除session中指定键值

Tomcat默认session超时时间为30分钟。
【2】session重用方法
setAttribute()存储数据
getAttribute() 获取数据
removeAttribute() 移除数据
invalidate() 销毁session
request.getSession()初始化session

(4)application:代表变量能一个应用下(多个会话),在服务器下的多个项目之间都能够使用。比如baidu、wenku等共享帐号。

Application 的作用范围在服务器一开始执行服务,到服务器关闭为止。Application 的范围最广,停留的时间也最久,所以使用时要特别注意不然可能会造成服务器负载越来越重的情况。只要将数据存入application对象,数据的范围范围 (Scope) 就为Application。

具有application范围的对象被绑定到javax.servlet.ServletContext中。在Web应用程序运行期间,所有的页面都可以访问在这个范围内的对象。

application对象的主要方法:
1、 getAttribute(String name) return Object
2、 getAttributeNames() return Enumeration
3、 getInitParameter(String name)
4、 getServletInfo()
5、 setAttribute(String name , Object object)

四大作用域的总结

   四大作用域:pageContext,request,session,application
   对应的类:PageContext,HttpServletRequest,HttpSession,ServletContext
         
    如果一个数据只在当前jsp页面使用,可以使用pageContext域存储
    如果一个数据,除了在当前Servlet中使用,还要在请求转发时带到其他Servlet处理或jsp中显示,这个时候用request域
    如果一个数据,除了现在我自己要用,过一会我自己还要用,存在session域
    如果一个数据,除了现在我自己要用过一会其他人也要用,存在ServletContext域中
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值