java基础81 jsp的内置对象(网页知识)

java

1、什么是内置对象?

  在jsp开发中,会频繁使用到一些对象,如:HttpSession,ServletContext,HttpServletRequest。
      如果每次使用这些对象时,都要去创建对象 显示非常麻烦。所有sun公司就设计jsp时,在jsp页面加载完毕后会自动帮助开发者创建好这些对象,而开发者只需要直接使用这些对象去调用方法即可,这些创建好的对象就叫内置对象。

举例:

Servlet:

HttpSession session = Request.getSession(true);(需要开发者动手做)

Jsp:

Tomcat服务器:

HttpSession session = request.getSession(true);(不需要开发者动手做)

开发者只需要用session对象去调用相应的方法即可,比如:session.getId();

2、9大内置对象

内置对象名对应类型
request      
response   
config            
application                
session                  
exception     
page         
out       
pageContext    
HttpServletRequest
HttpServletResponse
ServletConfig
ServletContext
HttpSession
Throwable
Object(this)
JspWriter
pageContext

2.1、Out 对象

  out对象是jspWrite类中的,相当于带缓冲的PrintWriter
        printWriter:
             writer(内容):直接向浏览器写出内容
        jspWriter
            writer(内容):向jsp缓冲区写出内容

  当满足以下条件之一,缓冲区内容就会写出(如下面代码)
      1) 缓冲区满了
      2) 刷新缓冲区
      3) 关闭缓冲区
      4) 执行完jsp页面

 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8" buffer="1kb" %>

2 <%

3 String path = request.getContextPath();

4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

5 %>

6

7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

8 <html>

9 <head>

10 <base href="<%=basePath%>">

11

12 <title>My JSP 'MyJsp.jsp' starting page</title>

13

14 <meta http-equiv="pragma" content="no-cache">

15 <meta http-equiv="cache-control" content="no-cache">

16 <meta http-equiv="expires" content="0">

17 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

18 <meta http-equiv="description" content="This is my page">

19 <!--

20 <link rel="stylesheet" type="text/css" href="styles.css">

21 -->

22 </head>

23 <body>

24 <%

25 //方法1:顶部设置缓冲区的大小为1Kb(buffer="1kb")

26 for(int i=1;i<=500;i++){

27 out.write("123");

28 }

29 //查看缓冲区大小

30 System.out.println("当前缓冲区的大小:"+out.getBufferSize());

31 //查看缓冲区剩余大小

32 System.out.println("剩余缓冲区大小:"+out.getRemaining());

33 //方法2:刷新缓存

34 //out.flush();

35

36 response.getWriter().write("a"); //解析:方法1或2,都能让123先输出来,最后输出a;如果两者都去掉,那么先输出a,后输出123.

37 %>

38 </body>

39 </html>

2.2、pageContext 对象

     PageContext对象类型是PageContext,叫jsp的上下文对象

  2.2.1、可以获取其他八个内置对象

 1 public class pageContext{

2 public void _jspService(){

3 //创建了对象

4 HttpSession session=””…

5 ServletConfig config=””….

6 //把8个常见使用的内置对象封装到了PageContext对象中了

7 public void method(PageContext pageContext){

8 //从pageContext对象中获取其他八个内置对象

9 JspWriter out=pageContext.getOut();

10 ....

11 }

12 }

13 }

   2.2.2、pageContext 对象,本身就是一个域对象

      ServletContext     context域对象
      HttpServletRequest    request域对象
      HttpSession    session域对象
      PageContext    page  域对象

      作用:保存数据和获取数据,用于共享数据

      #保存数据
         1)默认情况下,保存到page域:PageContext.setAttribute(“name”);
         2)可以向四个域对象保存数据:PageContext.setAttribute(“name”,域范围常量);

      #获取数据
         1)默认情况,从page域获取:PageContext.getAttribute(“name”);
         2)可以从4个域中获取数据:PageContext.getAttribute(“name”,域范围常量);
              域范围常量
                    PageContext.PAGE_Scope
                    PageContext.REQUEST_SCOPE
                    PageContext.SESSION_SCOPE
                    PageContext.APPLICATION_SCOPE
         3)自动在四个域中搜索数据:PageContext.findAttribute(“name”);
顺序:page域 ----> request域 ----> session域 ----> context域(application域)               注:请求转发:request就有值;浏览器不关闭:session就有值;服务器不关闭:context域(application域)就有值

 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %>

2 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

3 <html>

4 <head>

5 <title>pageContext对象</title>

6 </head>

7 <body>

8 <%

9 //1)可以获取其他八个内置对象

10 response.getWriter().write("是否相等?"+(out==pageContext.getOut())+"<br/>");

11 response.getWriter().write("是否相等?"+(session==pageContext.getSession())+"<br/>");

12 %>

13 <%--

14 2)pageContext作为作用域对象使用

15 2.1可以往不同域对象存取数据

16 --%>

17 <%

18 //保存数据,默认情况下,保存在page域中

19 pageContext.setAttribute("message","page message");

20 pageContext.setAttribute("message","request message",pageContext.REQUEST_SCOPE);//保存到request域中

21 pageContext.setAttribute("message", "session message",pageContext.SESSION_SCOPE);//保存到session域中

22 pageContext.setAttribute("message","application message",PageContext.APPLICATION_SCOPE);//保存到context域中

23 // request.setAttribute("message","request message");//等价于上面代码

24 %>

25 <%

26 //获取数据

27 String message=(String)pageContext.getAttribute("message");

28 out.write(message);

29 %>

30 <%--

31 原则:

32 1)在哪个域中存储数据,就必须在哪个域中取出数据!!!

33 --%>

34 <hr/>

35 <%=pageContext.getAttribute("message",pageContext.PAGE_SCOPE) %><br/>

36 <%=pageContext.getAttribute("message",pageContext.REQUEST_SCOPE) %><br/>

37 <%=pageContext.getAttribute("message",pageContext.SESSION_SCOPE) %><br/>

38 <%=pageContext.getAttribute("message",pageContext.APPLICATION_SCOPE) %><br/>

39 <hr/>

40 <%-- findAttribute():在四个域中自动搜索数据

41 顺序:page域-->request域--->session域--->application域

42 --%>

43

44 <%=pageContext.findAttribute("message") %><br/>

45 <%=session.getAttribute("message") %>

46 <%

47 //转发

48 //request.getRequestDispatcher("/pageContext2.jsp").forward(request, response);

49 response.sendRedirect("/pageContext2.jsp");

50 %>

51 </body>

52 </html>

3、jsp中的四个域对象

    PageContext       page域
    request           reuquest域
    session           session域
    application        context域

  1)域对象的作用
          保存数据和获取数据   ,用于数据共享.
  2)域对象方法
          SetAttribute(“name”,Object)保存数据
          getAttribute(“name”)获取数据
          removeAttribute(“name”)清除数据
  3)域对象的范围
          Page域:只能在当前jsp页面使用(当前页面)
          Request域:只能在同一个请求中使用(转发)
          Session域:只能在同一个会话(Seesion对象)中使用(私有的)
          Context域:只能在同一个文本应用中使用(全局的)

 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %>

2 <%

3 String path = request.getContextPath();

4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

5 %>

6

7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

8 <html>

9 <head>

10 <base href="<%=basePath%>">

11

12 <title>My JSP 'pageContext3.jsp' starting page</title>

13

14 <meta http-equiv="pragma" content="no-cache">

15 <meta http-equiv="cache-control" content="no-cache">

16 <meta http-equiv="expires" content="0">

17 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

18 <meta http-equiv="description" content="This is my page">

19 <!--

20 <link rel="stylesheet" type="text/css" href="styles.css">

21 -->

22

23 </head>

24

25 <body>

26 page域 <%=pageContext.getAttribute("message",PageContext.PAGE_SCOPE) %><br/>

27 reuest域 <%=pageContext.getAttribute("message",PageContext.REQUEST_SCOPE) %><br/>

28 session域 <%=pageContext.getAttribute("message",pageContext.SESSION_SCOPE) %><br/>

29 context域 <%=pageContext.getAttribute("message",pageContext.APPLICATION_SCOPE) %><br/>

30 </body>

31 </html>

原创作者:DSHORE

作者主页:http://www.cnblogs.com/dshore123/

原文出自:https://www.cnblogs.com/dshore123/p/9816583.html

欢迎转载,转载务必说明出处。(如果本文对您有帮助,可以点击一下右下角的 推荐,或评论,谢谢!)

以上是 java基础81 jsp的内置对象(网页知识) 的全部内容, 来源链接: utcz.com/z/390016.html

回到顶部