一、JSP运行原理
每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理。JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet) ,然后按照servlet的调用方式进行调用。
由于JSP第一次访问时会翻译成servlet,所以第一次访问通常会比较慢,但第二次访问,JSP引擎如果发现JSP没有变化,就不再翻译,而是直接调用,所以程序的执行效率不会受到影响。
JSP引擎在调用JSP对应的_jspServlet时,会传递或创建9个与web开发相关的对象供_jspServlet使用。JSP技术的设计者为 便于开发人员在编写JSP页面时获得这些web对象的引用,特意定义了9个相应的变量,开发人员在JSP页面中通过这些变量就可以快速获得这9大对象的引 用。
二、认识九个内置对象
- 1.pageContext javax.servlet.jsp.PageContext
- 2.request javax.servlet.http.HttpServletRequest
- 3.response javax.servlet.http.HttpServletResponse
- 4.session javax.servlet.http.HttpSession
- 5.application javax.servlet.ServletContext
- 6.config javax.servlet.ServletConfig
- 7.out javax.servlet.jsp.JspWriter
- 8.page java.lang.Object
- 9.exception java.lang.Throwable
这里面最常用的是request、response、session
1.request对象
request对象是javax.servlet.http.HttpServletRequest 类的实例。每当客户端请求一个JSP页面时,JSP引擎就会制造一个新的request对象来代表这个请求。request对象提供了一系列方法来获取HTTP头信息,cookies,HTTP方法等等。客户端的请求信息被封装在request对象中,通过它才能了解到用户的需求,然后做出响应。它是HttpServletRequest类的实例。request对象具有请求域,即完成客户端的请求之前,该对象一直有效。常用方法如下:
String getParameter(String name) 返回name指定参数的参数值
String[] getParameterValues(String name) 返回包含参数name的所有值的数组
void setAttribute(String, Object) 存储此请中的属性
object getAttribute(String, Object) 返回指定属性的属性值
String getContentType() 得到请求体的MIME类型
String getProtocol() 返回请求用的协议类型及版本号
String getServerName() 返回接受请求的服务器主机名
2.response对象
response对象是javax.servlet.http.HttpServletResponse类的实例。当服务器创建request对象时会同时创建用于响应这个客户端的response对象。同时response对象具有页面(Page)作用域,即访问一个页面时,该页面的response对象只对本次访问有效,其他页面的response对象对当前页面无效。
response对象也定义了处理HTTP头模块的接口。通过这个对象,开发者们可以添加新的cookies,时间戳,HTTP状态码等等。
常用方法:
String setCharacterEncoding()//设置响应字符编码格式
String getCharacterEncoding()//获取响应字符编码格式
void setContentType(String type)//设置响应MIME类型
sendRedirect([Java](http://lib.csdn.net/base/javase).lang.String location)//请求重定向
PrintWriter getWriter()//获取打印输出对象
3.Session对象
当用户打开浏览器,访问某个网站时,服务器就会在服务器的内存为该浏览器分配一个空间,改空间被这个浏览器独占。这个空间就是session空间,该控件中的数据默认存储时间为30min,可以修改。session.setMaxInactiveInterval(n秒);
如何使用Session:
1 得到session
在servlet中:HttpSession hs=request.getSession(true);
JSP中,session是一个内置对象,可以直接使用、
2 向session添加属性
servlet中:hs.setAttribute(String name,Object o)
JSP中 session.setAttribute(String name,Object o)
3 从session得到某个属性
servlet中:hs.getAttribute(String name);
JSP中: session.getAttribute(String name);
4 从session删除某个属性
servlet中:hs.removeAttribute(String name);
JSP中:session.removeAttribute(String name);
在实际开发中,这三个对象几乎处处用到,学习web开发的首要条件就是学会这三个对象的使用。
网友评论