gistfile1.txt Jsp的内置对象:request:客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求, 然后做出响应。它是HttpServletRequest类的实例。request 对象是 javax.servlet.httpSer
Jsp的内置对象: request: 客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求, 然后做出响应。 它是HttpServletRequest类的实例。 request 对象是 javax.servlet.httpServletRequest类型的对象。 该对象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的数据(包括头信息、系统信息、请求方式以及请求参数等)。request对象的作用域为一次请求。 response: response对象包含了响应客户请求的有关信息,但在JSP中很少直接用到它。 它是HttpServletResponse类的实例。 response 代表的是对客户端的响应,主要是将JSP容器处理过的对象传回到客户端。response对象也具有作用域,它只在JSP页面内有效。 response对象的主要使用 1.设置HTTP头信息、重定向、设置COOKie (1).Web服务器收到一个http请求,会针对每个请求创建一个HttpServletRequest和HttpServletResponse对象,向客户端发送数据找HttpServletResponse,从客户端取数据找HttpServletRequest; (2).HttpServletResponse对象可以向客户端发送三种类型的数据: a.响应头 b.状态码 c.数据 out: out对象是JspWriter类的实例,是向客户端输出内容常用的对象 out对象用于在Web浏览器内输出信息,并且管理应用服务器上的输出缓冲区。在使用out对象输出数据时,可以对数据缓冲区进行操作,及时清除缓冲区中的残余数据,为其他的输出让出缓冲空间。待数据输出完毕后,要及时关闭输出流。 pageContext: pageContext 对象的作用是取得任何范围的参数,通过它可以获取 JSP页面的out、request、reponse、session、application 等对象。pageContext对象的创建和初始化都是由容器来完成的,在JSP页面中可以直接使用 pageContext对象。 这个对象代表页面上下文,该对象主要用于访问JSP之间的共享数据。 pageContext是PageContext类的实例 使用pageContext可以访问page、request、session、application范围的变量。 getAttribute(String name):取得page范围内的name属性。 getAttribute(String name,int scope):取得指定范围内的name属性, 其中scope可以是如下4个值: PageContext.PAGE_SCOPE:对应于page范围。 PageContext.REQUEST_SCOPE:对应于request范围。 PageContext.SESSION_SCOPE:对应于session范围。 PageContext.APPLICATION_SCOPE:对应于application范围。 session(会话级别,可存放 对象): session 对象是由服务器自动创建的与用户请求相关的对象。服务器为每个用户都生成一个session对象,用于保存该用户的信息,跟踪用户的操作状态。session对象内部使用Map类来保存数据,因此保存数据的格式为 “Key/value”。 session对象的value可以使复杂的对象类型,而不仅仅局限于字符串类型。 (1)session(会话)对象是类javax.servlet.Httpsession的一个对象。session是从客户端连接服务器开始,到与服务器断开为止。 (2)session对象用于保存每个与服务器建立连接的客户端的信息,session的ID保存于客户端的Cookie中,这个session ID标识唯一和用户,与其他用户的session ID不同。 (3)session对象的ID: 当一个客户端访问服务器的一个JSP页面时,JSP引擎产生一个session对象,同时分配一个String类型的ID号,并发给客户端。客户端将其存储于Cookie.a其标志了一个唯一的ID;采用getID()方法返回session对象在服务器端的编号。服务器端通过此ID,唯一地识别一个用户,并提供特殊的服务。 (4)session对象的有效期: 存在以下几个情况时,session对象和其存储的数据会消失,情况有: 当用户关闭当前正在使用的浏览器时; 关闭网页服务器。 用户未向服务器提出请求超预设时,Tomcat服务器预设为30分钟; 运行程序结束session. 出现以上四种情况时,session对象会消失。 application(服务器级别):全局共享 它是ServletContext类的实例。 application 对象可将信息保存在服务器中,直到服务器关闭,否则application对象中保存的信息会在整个应用中都有效。与session对象相比,application对象生命周期更长,类似于系统的“全局变量”。 运用实例:网页访问计数器 application的存活范围比request和session都要大。只要服务器没有关闭,application对象中的数据就会一直存在,在整个服务器的运行过程当中,application对象只有一个,它会被所有的用户共享。其中getRealPath这个方法可以获取资源在服务器上的物理路径(绝对路径),常用来获取上传文件时要存储文件的路径。 config: config 对象的主要作用是取得服务器的配置信息。通过 pageConext对象的 getServletConfig() 方法可以获取一个config对象。当一个Servlet 初始化时,容器把某些信息通过 config对象传递给这个 Servlet。 开发者可以在web.xml 文件中为应用程序环境中的Servlet程序和JSP页面提供初始化参数。 config 对象代表当前JSP 配置信息,但JSP 页面通常无须配置,因此也就不存在配置信息。该对象在JSP 页面中非常少用,但在Servlet 则用处相对较大。因为Servlet 需要配置在web.xml 文件中,可以指定配置参数。 page: page 对象代表JSP本身,只有在JSP页面内才是合法的。 page隐含对象本质上包含当前 Servlet接口引用的变量,类似于Java编程中的 this 指针。 1 、什么是page对象 ? (1) page对象代表JSP页面本身 page对象是当前JSP页面本身的一个实例,page对象在当前JSP页面中可以用this关键字来替。 (2) 在JSP页面哪些地方可以使用page对象 在JSP页面的Java程序片中可以使用page对象 在JSP页面的JSP表达式中可以使用page对象 (3) page对象的基类是:java.lang.Object类。 注意:如果直接通过page对象来调用方法,就只能调用Object类中的那些方法。 (4) javax,servlet.jsp.JspPage接口 JspPage接口继承于javax.servlet.Servlet接口。 我们可以使用JspPage接口对page对象进行强制类型转换,再调用JspPage接口中的各种方法。 (5) javax,servlet.jsp.HttpJspPage接口 HttpJspPage接口继承于: javax.servlet.jsp.JspPage接口和javax.servlet.Servlet接口。 我们可以使用HttpJspPage接口对page对象进行强制类型转换,再调用HttpJspPage接口中的各种方法。 (6) 在JSP页面中使用this关键字,可调用哪些方法? 在JSP页面中,this关键字表示当前JSP页面这个对象,可以调用的常见方法,如下所示: exception: Exception对象是用来处理Jsp页面文件在执行时所有发生的错误和异常; Jsp页面文件必须在isErrorPage=true的情况下才可以使用该对象; 该对象一般配合Page指令一起使用,通过指定某个页面为错误处理页面,把所有的错误都集中到那个页面进行处理,可以使整个系统的性能得到加强;常用方法如下 getMessage():返回错误信息 toString:以字符串的形式返回一个对异常的描述 printStackTrace():以标准错误的形式输出一个错误和错误的堆栈 (1) 可能出错的页面: 在有可能产生异常或错误的JSP页面中,使用page指令设置errorPage属性,属性值为能够进行异常处理的某个JSP页面。 简单来说,只要在当前JSP页面中产生了异常,就交给另外一个专门处理异常的JSP页面。 (2) 专门处理错误的页面: 在专门负责处理异常的JSP页面中,使用page指令设置isErrorPage属性为true,并使用exception对象来获取出错信息。 注意: application、session、request------>都与要跨多个页,属性保存是有内存开销的,设置过多的application或每一个session保存过多的对象,性能就降低了。 原则:能用request就不要用session,能用session就不要用application application应用:在线人员统计、在线人员名单列表,要释放application资源,只能重新启动服务器. 使用application缓存数据库的连接,每次使用时,从缓冲中取出,用完就返回