>  기사  >  Java  >  jsp 내장 객체: pageContext 범위 객체 사용

jsp 내장 객체: pageContext 범위 객체 사용

php是最好的语言
php是最好的语言원래의
2018-08-08 16:10:188159검색

JSP에는 어떤 내장 객체가 있나요? 해당 기능은 무엇입니까? 이 기사에서는 pageContext 객체에 대한 자세한 소개를 포함하여 JSP의 9가지 내장 객체를 언급했습니다. pageContext 객체는 JSP 페이지의 실행 환경을 나타냅니다. 캡슐화할 뿐만 아니라 다른 8개의 암시적 개체에 대한 참조 외에도 데이터를 저장하는 데 사용할 수 있는 도메인 개체(컨테이너) 자체이기도 합니다. pageContext를 통해 다른 객체를 얻을 수도 있습니다. 구체적인 용도는 아래에 설명되어 있습니다.

1. JSP 운영 원칙

각 JSP 페이지에 처음 액세스하면 WEB 컨테이너는 처리를 위해 요청을 JSP 엔진(예: Java 프로그램)에 전달합니다. JSP 엔진은 먼저 JSP를 _jspServlet(본질적으로 서블릿)으로 변환한 다음 서블릿 호출 방법에 따라 이를 호출합니다.
JSP는 처음 액세스할 때 서블릿으로 변환되므로 첫 번째 액세스는 일반적으로 속도가 느려지지만 두 번째 액세스의 경우 JSP 엔진이 JSP가 변경되지 않은 것으로 확인되면 더 이상 변환하지 않습니다. 하지만 직접 호출하면 프로그램 실행 효율성에 영향을 미치지 않습니다.
 JSP 엔진은 JSP에 해당하는 _jspServlet을 호출할 때 _jspServlet이 사용할 수 있도록 웹 개발과 관련된 9개의 객체를 전달하거나 생성합니다. 개발자가 JSP 페이지를 작성할 때 이러한 웹 개체에 대한 참조를 쉽게 얻을 수 있도록 JSP 기술 설계자는 9개의 해당 변수를 구체적으로 정의했습니다. 개발자는 이러한 변수를 통해 JSP 페이지에서 이러한 9개 개체에 대한 참조를 신속하게 얻을 수 있습니다.

2. 9가지 내장 객체 알아보기

HttpServletRequest ttpServletResponsesession javax.servlet.http.HttpSessionapplicationjavax.servlet.ServletContextconfigjavax.servlet.ServletConfig8java.lang.Throwable
NO. 내장 객체 type
1 pageContext javax.servlet .jsp.PageContext
4
5
6
7out javax.servlet.jsp.JspWriter
page java.lang.Object 9예외

객체 요청, 응답, 세션, 애플리케이션 및 구성은 모두 이전에 작성되었습니다. 자세한 소개를 위해 여기서는 남은 페이지컨텍스트 .객체, 출력 객체, 페이지 객체.

3. 내장 객체 사용 지침

3.1. 페이지 객체

페이지 객체 는 객체 자체로 이해될 수 있는 현재 JSP 페이지를 나타냅니다. 오브제로 대접하세요. 페이지 객체는 개발에서는 거의 사용되지 않으니 그냥 이해해주세요 3.2, out 객체

 out 객체는 텍스트 데이터를 클라이언트에 보내는 데 사용됩니다.

 out 객체는 pageContext 객체의 getOut 메소드를 호출하여 반환됩니다. 해당 기능과 사용법은 ServletResponse.getWriter 메소드에 의해 반환되는 PrintWriter 객체와 매우 유사합니다.

 JSP 페이지의 out 객체 유형은 JspWriter입니다. JspWriter는 캐싱 기능이 있는 PrintWriter와 동일합니다. JSP 페이지의 페이지 명령의 버퍼 속성을 설정하면 캐시 크기를 조정하거나 캐시를 끌 수도 있습니다.
 out 객체에 내용이 기록되고 다음 조건 중 하나가 충족되는 경우에만 out 객체는 ServletResponse.getWriter 메서드를 호출하고 이 메서드에서 반환된 PrintWriter 객체를 사용하여 실제로 out 객체의 버퍼에 내용을 씁니다. to 서블릿 엔진이 제공하는 버퍼에서:

    페이지 지시문의 버퍼 속성을 설정하면 out 객체의 캐싱 기능이 꺼집니다.
  • out 객체의 버퍼가 가득 찼습니다
  • 전체 JSP 페이지 끝
  • out 객체 작동 원리 다이어그램

 

jsp 내장 객체: pageContext 범위 객체 사용3.3, pageContext 객체

 pageContext 객체는 JSP 기술에서 가장 중요한 객체입니다. 이 객체는 JSP 페이지의 실행 환경을 나타냅니다. 다른 8개의 암시적 객체에는 데이터를 저장하는 데 사용할 수 있는 도메인 객체(컨테이너) 자체이기도 합니다. 또한 이 객체는 다른 리소스 도입 및 점프, 다른 도메인 객체의 속성 검색 등과 같이 웹 개발과 관련된 몇 가지 일반적인 작업도 캡슐화합니다.

3.4 pageContext를 통해 다른 개체를 얻습니다

    getException 메서드가 예외 암시적 개체를 반환합니다.
  • getPage 메서드가 페이지 암시적 개체를 반환합니다.
  • getRequest 메서드가 요청 암시적 개체를 반환합니다.
  • getResponse 메서드가 res를 반환합니다. 암시적 개체
  • getServletConfig 메소드는 구성 암시적 객체를 반환합니다.
  • getServletContext 메소드는 애플리케이션 암시적 객체를 반환합니다.
  • getSession 메소드는 세션 암시적 객체를 반환합니다.
  • getOut 메소드는 암시적 객체를 반환합니다.
  • 3 .5.pageContext의 의미 다른 8개의 내장 객체 캡슐화

프로그래밍 프로세스 중에 pageContext 객체가 일반 Java 객체에 전달되면 Java 객체는 8개의 암시적 객체를 얻을 수 있습니다. 이때 Java 객체는 상호 작용할 수 있습니다. 브라우저를 사용하면 이 Java 객체는 동적 웹 리소스가 됩니다. 이는 다른 8개의 내장 객체를 캡슐화하는 pageContext의 의미입니다. 어떤 상황에서 이 기술을 사용해야 합니까? 보다 공식적인 개발에서는 JSP 페이지에 Java 코드가 나타나는 것이 허용되지 않습니다. Java 코드를 제거하는 방법은 JSP 페이지에서 Java 코드를 제거하는 사용자 정의 태그를 개발할 수 있습니다. 먼저 사용자 정의 태그 주위에 Java 클래스를 작성하면 JSP 엔진이 사용자 정의 태그를 실행할 때 해당 Java 클래스를 호출합니다. 정의 태그가 작성된 Java 클래스는 Java 클래스를 호출할 때 이 Java 클래스에 pageContext 객체를 전달합니다. pageContext 객체는 다른 8개의 암시적 객체에 대한 참조를 캡슐화하므로 이 Java 클래스에서 jsp를 사용할 수 있습니다. 페이지에는 8개의 암시적 객체(요청, 응답, 구성, 애플리케이션, 예외, 세션, 페이지, 출력)가 있습니다. pageContext 객체는 jsp 사용자 정의 태그 개발에 특히 중요합니다.

3.6, pageContext를 도메인 개체로

 pageContext 개체를 컨테이너로 사용할 수 있으므로 일부 데이터를 pageContext 개체에 저장할 수 있습니다.

 pageContext 객체의 일반적으로 사용되는 메소드

       java.lang.Object findAttribute(java.lang.String name)

  이 메소드는 각 도메인에서 속성을 찾는 데 사용됩니다. 이 메소드에 대한 설명을 보려면 이 메소드의 API를 확인하세요. 페이지, 요청, 세션(유효한 경우) 및 애플리케이션 범위의 명명된 속성을 순서대로 지정하고 관련 값 또는 null을 반환합니다.

  当要查找某个属性时,findAttribute方法按照查找顺序"page→request→session→application"在这四个对象中去查找,只要找到了就返回属性值,如果四个对象都没有找到要查找的属性,则返回一个null。

范例:使用pageContext的findAttribute方法查找属性值

 
 
 
 
     pageContext的findAttribute方法查找属性值
 
 
     
 
                                    
 pageContext.findAttribute方法查找到的属性值:
 pageContext对象的name1属性:
 request对象的name2属性:
 session对象的name3属性:
 application对象的name4属性:
 查找不存在的name5属性:
 
 使用EL表达式进行输出:
 pageContext对象的name1属性:${name1}
 request对象的name2属性:${name2}
 session对象的name3属性:${name3}
 application对象的name4属性:${name4}
 不存在的name5属性:${name5}

运行结果:

  EL表达式语句在执行时,会调用pageContext.findAttribute方法,用标识符为关键字,分别从page、request、 session、application四个域中查找相应的对象,找到则返回相应对象,找不到则返回”” (注意,不是null,而是空字符串)。

pageContext对象中封装了访问其它域的方法

  java.lang.Object getAttribute(java.lang.String name,   setAttribute(java.lang.String name, java.lang.Object value,   removeAttribute(java.lang.String name, scope)

代表各个域的常量

    PageContext.PAGE_SCOPE

范例:pageContext访问其它域

 
 
 
 
     pageContext访问其它域
 
 
       
 
                      
 取出存放在session对象中的属性值:
 第一种做法:使用pageContext.getAttribute("attributeName",PageContext.SESSION_SCOPE);去取出session对象中值
 姓名:
 第二种做法:使用session.getAttribute("attributeName");去取出session对象中值
 姓名:  

3.7、PageContext引入和跳转到其他资源

  PageContext类中定义了一个forward方法(用来跳转页面)和两个include方法(用来引入页面)来分别简化和替代RequestDispatcher.forward方法和include方法。
  方法接收的资源如果以“/”开头, “/”代表当前web应用。

范例:使用pageContext的forward方法跳转到其他页面

 
 
 
 
     使用pageContext的forward方法跳转页面

运行结果如下:

1 pageContext.forward("/pageContextDemo05.jsp");

  这种写法是用来简化和替代pageContext.getRequest().getRequestDispatcher("/pageContextDemo05.jsp").forward(request, response);这种写法的。在实际开发中,使用pageContext.forward(relativeUrlPath)方法跳转页面用得不多,主要是因为要在Jsp页面中嵌套java代码,所以这种做法简单了解一下即可,在开发中,要想从一个Jsp页面采用服务器端跳转的方式跳转到另一个Jsp页面,那么一般会使用标签,标签用于把请求转发给另外一个资源。

范例:使用pageContext的include方法引入资源

 
 
 
     使用pageContext的include方法引入资源

运行结果:

   在实际开发中,使用pageContext的include方法引入页面这种做法也很少用,一般都使用jsp:include标签引入资源,因此这种做法了解一下即可。

相关推荐:

JSP的内部对象

js的内置对象详解

위 내용은 jsp 내장 객체: pageContext 범위 객체 사용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.