1.什么叫做内置对象?
答:在jsp中,有一些对象即开发者不需要自己去创建对象(全部由系统创建好),就可以直接使用对象调用相应的方法,这些由系统创建的对象称为内置对象。
2.九大内置对象分别是哪些?
内置对象名 类型 对象名 作用域
四大作用域对象:
request javax.servlet.http.HttpServletRequest 请求对象 Request
session javax.servlet.http.HttpSession 会话对象 Session
application javax.servlet.ServletContext 应用程序对象 Application
pageContext javax.servlet.jsp.PageContext 页面上下文对象 Page
两个输出
out javax.servlet.jsp.JspWriter 输出对象 Page
response javax.servlet.http.HttpServletResponse 响应对象 Page
三个打酱油
page java.lang.Object 页面对象 Page
config javax.servlet.ServletConfig 配置对象 Page
exception java.lang.Throwable 例外对象 Page
对作用域的解释:
Page域:只能在当前jsp页面使用(当前页面)。
Request域:只能在同一请求中使用(转发)。
Session域:只能在同一会话(session会话)中使用(私有的)。
Context(Application)域:只能在一个web应用中使用(全局)。
3.一一解析各个内置对象
3.1 request 对象
该对象代表客户端的请求信息,主要用于接收通过HTTP协议传送到服务器的数据(包括请求头信息,系统信息,请求方法以及请求参数等)。request对象的作用域为一次请求。
3.1.1 常用方法:
getParameter(String name) :返回指定参数名称的数值,如果没有相对应的数值则返回null。
getParameterValues(String name):返回具有相同参数名称的数值的集合,返回String类型的数组。
getRequestDispatcher(String uripath):页面的转发,地址不会发生改变,因为针对客户端来说只发送一次请求。
3.2 session 对象
session对象是由服务器自动创建的与用户请求相关的对象。服务器为每个用户都生成一个session对象,用于保存该用户的信息,跟踪用户的操作状态。session对象内部使用Map类来保存数据的,因此保存数据的格式为“key/value”。
session对象的value可以使用复杂的对象类型,不仅仅局限于字符串类型。
3.2.1 session对象就做会话:即每次浏览器访问网站,服务器就会给这个请求创建一个会话,存储到服务器端,服务器根据每一个会话的ID区别每一个请求的用户。
3.2.2 常用方法:
setAttribute(String key,Object obj):以key/value形式保存数据。
getAttribute(String key:通过key获取数据。
getId:获取session id。
invalidate():设置session对象失效。
setMaxInactiveInterval(int interval):设置session对象的有效期。
removeAttribute(String key):移除session中的属性。
3.2.3 Session过期时间的三种设置方式:
a. 在tomcat服务器的web.xml文件中进行设置,tomcat默认时间为30分钟。
web.xml文件在conf文件夹下,具体设置如下:(单位为分钟)
<session-config>
<session-timeout>30</session-timeout>
</session-config>
b. 在项目中的web.xml文件中进行设置:
设置方法如a,优先顺序b>a,也就是说b设置了,a就无效了。
c. 在代码中设置:通过setMaxInactiveInterval()方法设置。
3.2.4 session 的销毁
a. 设置的时长到了以后自动销毁,常见的情况就是你在一个页面长时间不进行操作就要重新登录。
b. 调用invalidate()方法摧毁,常见的情况是注销登录。
3.2.5 注意事项
Session的存储类型可以是任意类型。存储位置在服务器端,安全性比较高。
在同一台电脑中,不同的浏览器也认为是不同的用户,也会分配一个session id。
session也会随着浏览器的关闭而失效。但请注意,session还会保留在服务器端,一直到设定的时间,才真正的被销毁。
3.3 application对象
application对象可以将信息保存在服务器中,知道服务器关闭,否则application对象中保存的信息会在整个应用中都有效。与session对象相比,application对象的生命周期更长,类似于系统的“全局变量”。
整个应用程序中只有一个,所有的用户都可以访问到,安全性较高。随应用程序启动就产生,一直保存在服务器端,通常用于存储一些所有用户都需要的数据。
3.4 pageContext 对象
pageContext对象的作用是取得任何范围的参数,通过它可以获取jsp页面的out,request,response,session,application等对象。pageContext对象的创建和初始化都是由容器来完成的,在jsp页面中可以直接使用pageContext对象。
3.4.1 使用场景:在自定义标签时会频繁的使用pageContext对象;或者是定义一个方法需要用到多个对象时,传一个pageContext对象
就能解决问题。
3.5 out对象
out对象用于在web浏览器内输出信息,并管理应用服务器上的输出缓存区。在使用out对象输出数据时,可以对数据缓存区进行操作,及时清理缓存区中的残余数据,为其他的输出让出缓存空间。待数据输出完毕后,要及时关闭输出流。
PrintWriter:writer("内容"); 直接向浏览器输出内容
JspWriter:writer("内容"); 向jsp缓存区写出内容
JspWriter当满足一下条件之一时,缓存区的内容写出:
a. 缓存区满了
b. 刷新缓存区
c. 关闭缓存区
d. jsp页面执行完毕
3.6 response 对象
response对象代表对客户端的响应,主要是将jsp容器处理过对象传回到客户端。response对象也有作用域,它只是在jsp页面内有效。
Response对象叫做响应,服务器端对客户端的请求作出响应。
常用方法:
response.sendRedirect ("index.jsp");
页面的重定向,地址会改变,因为针对客户端来说,一共发生了两次请求。
3.7 page 对象
page对象代表jsp本身,只有在jsp页面内才合法。page隐含对象本质上包含当前servlet接口引用的变量,类似于Java编程中的this指针。
3.8 config 对象
confige对象的主要作用于取得服务器的配置信息。通过pageContext对象的getServletConfig()方法可以获取一个
config对象。当一个Servlet初始化时,容器把某些信息通过config对象传达给这个servlet。开发者可以在web.xml文件中为应用程序环境中的servlet程序和jsp页面提供初始化参数。
3.9 exception 对象
exception对象的作用是显示异常信息,只有在包含isErrorPage="true"的页面中才可以使用的,一般的jsp页面中使用该对象将无法编译jsp文件。exception对象和Java的所有对象一样,都具有系统提供的继承结构。exception对象几乎定义了所有异常情况。在Java程序中,可以使用try/catch关键字来处理异常情况;如果在jsp页面中出现没有捕获到的异常,就会生成exception对象,并把exception对象传送到page指令中设定的错误页面中,然后在错误的页面中处理相应的exception对象。