内置对象:就是在JSP中无需创建就可使用的称为内置对象,它是有容器创建的(如Tomcat、JBoss、weblgic等容器创建)。

JSP九大内置对象分别为:out、request、response、session、application、pageContext、page、config、exception。

1、out对象

  向客户端输出信息,它是JspWriter类的一个实例。

  常用的有out.print();或out.println();

2、request对象

  获取客户端传递到服务器的信息。request对象实现了HttpServletRequest接口,而此接口又继承与ServletRequest接口。由于接口是不能创建对象的,所以可以通过反射(request.getClass().getName())来获得request对象属于具体的哪个类,不同的容器(服务器)会产生不一样的结果。

request对象常用的方法

    1. getParameter():获得客户端传递给服务器一个参数的值。

    2. getParameterNames():获得客户端传递给服务器的所有参数的名字。

    3. getParameterValues():获取一个参数的所有值(如checkBox的情况)。

    4. setAttribute(),getAttribute(),removeAttribute():这三个方法主要用于struts框架中,必须在同一个请求中设置的属性才能获得。

    5. getCookies():把个人信息存放到客户端。

    6. setCharacterEncoding()/getCharacterEncoding():设置/获得字符编码。

    7. getContextLength():获得整个网页的长度(长度不确定时返回-1).

    8. getRequestURL():返回当前网页的地址(http://localhost:8080/项目名/具体页面.jsp)

    9. getRequestURI():返回项目名/具体网页.jsp。

    10. getMethod():获得网页提交的方法,默认为get,还可以设置为post。

    11. getRemoteAddr():获得远程地址。

    12. getRemoteHost():获得远程主机的名称。

    13. getServerPort():端口号(一般默认是8080)。

    14. getServletPath():/具体网页.jsp。

    15. getContextPath():/项目名,获得的是上下文路径。

    16. getHeader(),getHeaders(),getHeaderNames():request.getHeader("Referer");获得来自的网页。

3、response对象

  向客户端浏览器输出信息,对客户的请求进行响应。它是实现了HttpServletResponse接口,此接口继承与ServletResponse,与request对象类似,根据反射机制,由于服务器不同,具体的类也不一样。

4、session对象

  会话对象,它是实现HttpSession接口。它们有会话失效时间,tomcat默认是30分钟,可以设置。每个用户的会话空间是隔离的,例如用户商城网站,每个人买的东西都不一样,他们各自把选的商品放在各自的购物车中,互不影响。

5、Application对象

  应用对象,它是实现ServletContext接口。Application、Session、request都可以通过setAttribute来设置属性,通过getAttribute来获取属性的值。但是它们的可见范围是不一样的。

  • Application对象所设置的属性不会过期,它在整个服务器运行过程中都是有效的,直到服务器重启。

  • Session对象所设置的属性只有在同一个session中可见。

  • request对象所设置的属性只有在同一次请求之间可见。

通过Application.getRealPath();可以获得其真实路径。

如c:\workspace\.metadate\.plugins\org.eclipse.wst.server.core\temp0\wtpwebapps\项目名(这是项目最后部署完成的一个目录)。

6、page对象

  JSP网页在翻译时会转换成一个servlet(而此servlet是一个类)。

   它是JSP网页本身,page对象是当前网页转换后的servlet类的实例。

7、config对象

  一般用来配置指定的JSP参数,它是实现了ServletConfig接口。

8、exception对象

  在可能产生错误的文件中用page指令指定errorPage(例如在test.jsp页面中设置errorPage="error.jsp"),然后在error.jsp页面中指定isErrorPage="true",用exception对象获取错误信息。

9、pageContext对象

  它是PageContext类的一个实例。

  它主要有以下两个作用:

      1. 获取其它八大对象的句柄

        pageContext.getOut();       //获得out对象的句柄

        pageContext.getRequest();     //获得request对象的句柄

        pageContext.getResponse();    //获得response对象的句柄

        pageContext.getSession();     //获得session对象的句柄

        pageContext.getServletContext();//获得application对象的句柄

        pageContext.getServletConfig(); //获得config对象的句柄

        pageContext.getException();   //获得exception对象的句柄

        pageContext.getPage();      //获得page对象的句柄

      2. 设置或获取4(page,request,session,application)个不同范围的值

        pageContext.setAttribute("name","zhang");   //只在本页面有效

        pageContext.setAttribute("name","zhang",PageContext.REQUEST_SCOPE);  

        相当于request.setAttribute("name","zhang"); //只在同一次请求中有效

        pageContext.setAttribute("name","zhang",PageContext.SESSION_SCOPE);  

        相当于session.setAttribute("name","zhang"); //只在同一次会话中有效

        pageContext.setAttribute("name","zhang",PageContext.APPLICATION_SCOPE);  

        相当于application.setAttribute("name","zhang"); //在整个应用中都有效