out对象

向客户端浏览器输出信息

  1. <%
  2. out.println("out对象");
  3. out.newLine();
  4. out.println("<br>");
  5. out.flush();
  6. out.clearBuffer();//清空缓冲区的数据
  7. //out.clear();//也是清空缓冲区数据,不同的是如果之前调用flush,则会抛出异常。
  8. out.println("缓冲区大小:" + out.getBufferSize());//默认8K,可通过编译指令修改,如:<%@ page buffer="16kb" %>
  9. out.println("<br>");
  10. out.println("当前缓冲区剩余大小:" + out.getRemaining());
  11. %>

request对象

request对象封装了客户端提交到服务器的请求信息,表单、cookie等信息。

  1. 请求的方法名:<%=request.getMethod() %><br/>//GET
  2. 请求的资源:<%=request.getRequestURI() %><br/>
  3. 请求使用的协议:<%=request.getProtocol() %><br/>//HTTP/1.1
  4. 请求的服务器IP:<%=request.getServerName() %><br/>
  5. 请求的服务器端口:<%=request.getServerPort() %><br/>
  6. 客户端的IP地址:<%=request.getRemoteAddr() %><br/>
  7. 客户端的主机名:<%=request.getRemoteHost() %><br/>
  8. getRequestURL:<%=request.getRequestURL() %><br/>
  9. getScheme:<%=request.getScheme() %>//Http
  10. //request.getParameter() 用于从客户端请求获取表单信息
  11. request.setAttribute();
  12. request.getAttribute();
  13. 这两个方法用于在web组件间共享信息,比如JSP之间。
  14. 请求头信息;
  15. <%
  16. Enumeration<String> e = request.getHeaderNames();
  17. while(e.hasMoreElements()){
  18. String headerName = e.nextElement();
  19. out.println(headerName+":"+request.getHeader(headerName)+"<br/>");
  20. }
  21. %>

response对象

对客户端请求封装回复信息。

  1. response.setHeader("Cache-Control", "no-cache");//浏览器读到这个头信息,就不会将网页信息存到缓存。还有public,private等
  2. response.setIntHeader("Refresh", 2);//每隔2秒刷新一次
  3. //response.sendRedirect("index.jsp");//重定向到另一个JSP网页
  4. //设置Cookie
  5. Cookie cookie = new Cookie("ben","deng");
  6. cookie.setMaxAge(3600);//单位为s
  7. response.addCookie(cookie);

session对象

HTTP是无状态的。服务器使用session可以保存客户端浏览器的信息。

  1. <%! SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); %>
  2. sessionId= <%=session.getId() %></br>
  3. session创建时间= <%=sdf.format(new Date(session.getCreationTime())) %></br>
  4. session最后访问时间= <%=sdf.format(new Date(session.getLastAccessedTime())) %></br>
  5. session失效时间: <%= session.getMaxInactiveInterval()%>//默认1800s

session失效时间可以通过修改部署描述符来实现。

  1. <session-config>
  2. <session-timeout>10</session-timeout>
  3. </session-config>

如果不生效,需要删掉work目录的文件。

application对象

应用一启动就会生成application对象。web应用不关闭,application就一直存在。
servlet的环境通过调用getServletConfig().getContext()方法获得。作用域是application(整个程序运行期)。它提供了关于服务器版本,应用级初始化参数和应用内资源绝对路径,注册信息的方式。

  1. 服务器信息:<%=application.getServerInfo() %>
  2. 应用信息:<%=application.getServletContextName() %>
  3. 主机信息:<%=application.getVirtualServerName() %>

由于Application对象是随应用的生命周期存在,所以通过它可以对一些配置进行全局加载和存储。

config对象

代表当前JSP程序的配置信息。一般JSP在应用中作为View层使用,一般使用较少,在Servlet中用的比较多。读取的配置信息来自web.xml。

  1. <%=config.getInitParameter("name") %>

在web.xml中配置一个servlet:

  1. <servlet>
  2. <servlet-name>config</servlet-name>
  3. <jsp-file>/jsp/config.jsp</jsp-file>
  4. <init-param>
  5. <param-name>name</param-name>
  6. <param-value>name</param-value>
  7. </init-param>
  8. <init-param>
  9. <param-name>pass</param-name>
  10. <param-value>pass</param-value>
  11. </init-param>
  12. </servlet>
  13. <servlet-mapping>
  14. <servlet-name>config</servlet-name>
  15. <url-pattern>/*</url-pattern><!--这个样式所有请求都会返回config.jsp的内容 -->
  16. </servlet-mapping>

在config.jsp中,使用

  1. String name = config.getInitParameter("name");
  2. String pass = config.getInitParameter("pass");

取出配置在web.xml中的信息。

exception对象

exception对象只有在page指令中具有属性isErrorPage=”true”时才有效。它就是Java中普通的Throwable对象。
通过JSP错误页面中一个catch块已经益出但没有捕获的java.lang.Throwable的任意实例,传向了errorPage的URI。
比如在indx.jsp中运行如下代码

  1. <%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"
  2. errorPage="exception.jsp"%>
  3. try{
  4. int c = 3/0;
  5. }catch(Exception e){
  6. }

在exception.jsp中:

  1. <%
  2. out.print(exception.getLocalizedMessage());
  3. %>

页面输出/ by zero。

page对象

继承自Object对象,代表当前JSP页面。

pageContext对象。

pageContext对象提供所有四个作用域层次的属性查询和修改能力,它也提供了转发请求到其它资源和包含其他资源的方法。该对象的方法都是抽象方法。