JSP学习总结
每一个JSP都被翻译成一个Servlet,然后再编译执行
一个JSP翻译之后继承HttpJspBase类,实现JspSourceDependent接口
Jsp生命周期
1.翻译
2.编译
3.加载类 ü
4.实例化类 ü
5.jspInit()调用 ü
6._jspService()调用 ü
7.jspDestroy()调用
JSP中共有9个内置对象,分别是:
request,response,session,out,application,pageContext,page, config,exception
查看jsp翻译后的代码可以发现这九个内置对象是在_jspService()方法中创建并初始化的
其中常用的内置对象有4个,下面重点介绍这四个内置对象
1.《请求级别》request获取请求信息,转发数据
在原位置保存数据,在转发目标位置来获取数据
所以request(请求转发)是两个页面之间共享数据的功能
request.setAttribute(“key”,”value”);
request.getRequestDispatcher(“Dream.jsp”).forward(request,response);
在目标页面可以获取请求级别共享的数据
方法一:Java代码获取共享数据
<%
String value=request.getAttribute(“key”).toString();
%>
方法二:EL表达式获取共享数据<requestScope表示取那个范围>
${requestScope.key}
方法三:EL表达式获取共享数据《会在所有范围中寻找key的参数,从小范围到大范围找pageContext-->request-->session-->application》
${key}
2.《页面级别》pageContext可以通过方法set/getAttribute方法来保存/获取数据。操作数据作用范围只在当前页面有效,当数据存储好后,任意位置可以使用该数据pageContext.setAttribute(“key”,”value”);
<%=pageContext.getAttribute(“key”)%>//太麻烦
<!--通过EL表达式访问更方便-->
${key}//很方便
3.《会话级别》Session。当一个客户端,连接服务器(对服务器发出请求),双方会建立一个会话。通过会话,服务器才能辨认出每一个客户端。
服务器会为每一个客户端分配一个ID,根据时间形成,不会重复。在客户端也会保存一个文件(cookie)里面保存这个ID
当客户端离开会话,或者关闭浏览器,会话就会结束,
会话默认持续20分钟会关闭
使用session,主要在连接与断开这个期间,使服务器与客户端之间共享数据
Session ID会话期间ID是不变的(每个电脑是一个客户端,而不是每个浏览器)
电脑(客户端)连接上服务器,电脑上(客户端)会生成一个Cookie,服务器端会有一个Session ID
一般用于存储用户名
4.《应用级别》application
当服务器启动,就可以向appliaction范围来存储数据,该范围内的数据,服务器和所有的用户共享。
服务器关闭,这些数据才会消失,也可以通过函数删除这些数据
常用于网站计数器
5.out输出信息(out.print()在页面输出信息)
6.response对象:当前响应对象
7.page:指向页面自身的方式,相当于this关键字
8.config:与当前JSP页面的Servlet对应的ServletConfig对象
9.exception:其他地方抛出的Throwable对象,仅当<%@ page isErrorPage=”true”%>时有效