详解JSP九大内置对象

内置对象:就是在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。 getContextPath():/项目名,获得的是上下文路径。
  15. getHeader(),getHeaders(),getHeaderNames():request.getHeader
    (“Referer”);获得来自的网页。

3、response对象

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

4、session对象

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

5、Application对象

应用对象,它是实现ServletContext接口。Application、Session、request都可以通过setAttribute来设置属性,通过getAttribute来获取属性的值。但是它们的可见范围是不一样的。
1. Application对象所设置的属性不会过期,它在整个服务器运行过程中都是有效的,直到服务器重启。
2. 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"); //在整个应用中都有效

你可能感兴趣的:(Java)