Heim  >  Artikel  >  Java  >  Die umfassendste Zusammenfassung der vier Hauptdomänen von Java (Bilder und Texte)

Die umfassendste Zusammenfassung der vier Hauptdomänen von Java (Bilder und Texte)

PHPz
PHPzOriginal
2017-04-03 09:49:181496Durchsuche

Ich habe kürzlich das Studium des Webparts abgeschlossen und festgestellt, dass einige Teile einzeln immer leicht zu verstehen sind, aber wenn man sie alle zusammenfasst, gibt es immer ein paar Wissenspunkte, die leicht verwechselt werden können. Tatsächlich gibt es genügend Informationen im Internet, obwohl es an fleißigen Trägern nicht mangelt. Aber besteht das ultimative Ziel nicht nur darin, uns selbst zu verstehen? Nur das, was wir verstehen, gehört wirklich uns. Als zusätzlichen Bonus konzentrieren wir uns zunächst auf die neun impliziten Objekte von JSP.

Sie können einen Blick auf die neun impliziten Objekte von JSP im Bild unten werfen. Sie werden von Lehrern immer als die Schlüsselpunkte bezeichnet.

Umfang------Wie der Name schon sagt, funktioniert auch der Größenbereich! Wenn Sie selbst einen Wissenspunkt erlernen, welche Ziele müssen Sie erreichen, um als jemand zu gelten, der einen Wissenspunkt kennt, versteht und beherrscht? Von Dr. Bians Beobachtung, Anhörung und Befragung bis hin zum Hinzufügen, Löschen, Ändern und Durchsuchen der Datenbank beginnt alles mit der gleichen Frage: Was ist das? Was ist der Nutzen? Wie benutzt man es? Warum kann es so verwendet werden? Daher denke ich, dass wir die folgenden Probleme begreifen, uns mit ihnen befassen und unsere eigenen Mängel entdecken sollten, was der beste Weg zum Lernen ist.

1) Die tatsächliche Größe des Zielfernrohrs. (Was ist das?)

2) Die Rolle des Umfangs. (Was nützt es?)

3) Wie man diese Bereiche verwendet. (Wie benutzt man?)

4) Es verwendet das Prinzip der Implementierung wie folgt. (Warum kann es auf diese Weise verwendet werden?)

Beginnen wir mit der Analyse nacheinander:

(1) Servletcontext-Domäne (Anwendungsdomäne)

1) Tatsächlicher Umfang Größe. (Was ist das?)

Der Umfang der Servletcontext-Domäne ist: die gesamte Webanwendung.

Nachdem die Daten generiert wurden, werden sie nicht nur später verwendet, sondern auch von anderen. Bitte verwenden Sie Servletcontext.

Es ist die größte Domain unter den vier Domains.

2) Die Rolle des Umfangs. (Was nützt es? )

Da alle Servlets in einer Webanwendung dasselbe Servletcontext-Objekt teilen, realisieren mehrere Servlets die Datenübertragung zwischen verschiedenen Servlets über das Servletcontext-Objekt der gemeinsamen Nutzung.

3) So verwenden Sie diese Bereiche. (Wie benutzt man?)

  a) kann durch Programmierung oder als globale -Variable in einer Webanwendung gebunden werden Zugriff durch alle Servlets und JSPs

设置Context属性:
              ServletContext application=this.getServletContext();
              application.setAttribute("person1",new Person("Jim"));
              application.setAttribute("person2",new Person("Green"));
 获取Context属性:
              ServletContext application=this.getServletContext();
              Enumberation persons=application.getAttributeNames();
               while(persons.hasMoreElements()){
                      String name=(String)persons.nextElement();
                      Person p=(Person)persons.getAttribute(name);
                      application.removeAttribute(name);
              }

b) Konfigurieren Sie die Kontextdomäne für die gesamte Webanwendung:

Ändern Sie die web.xmlKonfigurationsdatei und fügen Sie den folgenden Inhalt hinzu

 

 data

 Hallo Welt!

 

Greifen Sie über das Servlet auf diese Initialisierungsparameter zu:

ServletContext application=this.getServletContext();

out.println(application.getInitParameter("data"));

 c) Ressourcendatei lesen

Verwenden Sie die ServletContextSchnittstelle, um direkt auf die statische Inhaltsdokumentstruktur in der Webanwendung zuzugreifen, einschließlich HTML-, GIF- und JPEG-Dateien. Zum Beispiel die folgenden Methoden:
.getResource()
.getResourceAsStream()
Die Parameter dieser beiden Methoden sind Zeichenfolgen , die mit „/“ beginnen und angeben, dass die Ressource relativ zu ist das Kontextstammverzeichnis Der relative Pfad. Die Dokumentstruktur kann im Server Dateisystem oder im War-Paket oder auf einem Remote-Server oder an anderen Orten vorhanden sein. Es kann nicht zum Abrufen dynamischer Ressourcen verwendet werden, z. B. getResource("/index.jsp"). Diese Methode gibt den Quellcode der JSP-Datei zurück, nicht die dynamische Seite. Sie können „Dispatching Requests“ verwenden, um dynamische Inhalte abzurufen. Listen Sie die Webanwendungen auf. Für Ressourcen, auf die zugegriffen werden kann, können Sie die Methode getResourcePaths(String path) verwenden.

                                                                                                 (Warum kann es auf diese Weise verwendet werden?)

Das Servlet ist nicht für die Datenausgabe geeignet, daher müssen die Daten zur Verschönerung an die JSP-Datei weitergeleitet und dann an die ausgegeben werden Kunde.

JSP kann Java-Code einbetten, was den Empfang von Java-Daten ermöglicht. Da die Servletcontext-Domäne es der gesamten Webanwendung ermöglicht, Daten gemeinsam zu nutzen, wirkt sich das Problem „ThreadSicherheit

“ gleichzeitig auch auf die weitergeleiteten Daten aus, sodass die Anforderungsdomäne verwendet werden muss.

(2) Httpsession-Domäne (Sitzungsdomäne)

1) Tatsächliche Größe des Bereichs . (Was ist das?)

 Der Umfang von Httpsession ist: eine Sitzung.

Nachdem die Daten generiert wurden, werden sie dem Benutzer angezeigt. Wenn sie später verwendet werden müssen, verwenden Sie das Feld Httpsession.

  它是四个域中范围第二大的域。

2)  作用域的作用。(有什么用?)

  (会话范围)在第一次调用request.getSession()方法时,服务器会检查是否已经有对应的session。如果没有,就在内存中创建一个session并返回。当一短时间内(默认30分钟)session没有被使用,则服务器会销毁该session。若服务器非正常关闭,未到期的session也会跟着销毁。若调用session提供的invalidate()方法,可以立即销毁session。

3)怎么使用这些作用域。(怎么用?)

  a) jsp中操作session
    (String)request.getSession().getAttribute("username"); // 获取
    request.getSession().setAttribute("username", "xxx");  // 设置

   b) java中操作session
    //servlet中
    request.getSession();
    session.getAttribute("username");
    session.setAttribute("username", "xxx");
    session.setMaxInactiveInterval(30*60);
    session.invalidate();
 
    //struts中方法1
    ServletActionContext.getRequest().getSession().setAttribute("username", "xxx");
    ServletActionContext.getRequest().getSession().getAttribute("username");
    ServletActionContext.getRequest().getSession().setMaxInactiveInterval(30*60);
    ServletActionContext.getRequest().getSession().invalidate();

    //struts中方法2
    ActionContext.getContext().getSession().put("username", "xxx");
    ActionContext.getContext().getSession().get("username");
    ActionContext.getContext().getSession().clear();

   c) web.xml中操作session
    <session-config>          <session-timeout>30</session-timeout>      </session-config>   d) tomcat-->conf-->conf/web.xml
    <session-config>        <session-timeout>30</session-timeout>    </session-config>

4)它这样使用实现的原理。(为什么可以这么用?)

  HttpSession在服务器中,为浏览器创建独一无二的内存空间,在其中保存了会话相关的信息。服务器创建session出来后,会把session的id号,以cookie的形式回写给客户机,这样,只要客户机的浏览器不关,再去访问服务器时,都 会带着session的id号去,服务器发现客户机浏览器带session id过来了,就会使用内存中与之对应的session为之服务。如果要问我为什么,我也不知道啊!

(三)ServletRequest域(request域)

1)作用域的实际大小。(是什么?)

  ServletRequset域是:整个请求链(请求转发也存在)。

  数据产生之后,只需要使用一次,这种情况下请使用ServletRequset域。

 Es ist die drittgrößte Domain unter den vier Domains.

2) Die Rolle des Umfangs. (Was nützt es?)

Teilen Sie Daten in der gesamten Anforderungskette.

Am häufigsten verwendet: Die im Servlet verarbeiteten Daten werden zur Anzeige an JSP übergeben. Zu diesem Zeitpunkt können die Parameter im ServletRequset-Feld platziert werden herübergebracht.

3) So verwenden Sie diese Bereiche. (Wie benutzt man?)

a) Methode zum Abrufen von Client-Informationen
Die getRequestURL-Methode gibt die vollständige URL zurück, wenn der Client eine Anfrage stellt.
  Die getRequestURI-Methode gibt den Ressourcennamenteil in der Anforderungszeile zurück.
  Die getQueryString-Methode gibt den Parameterteil in der Anforderungszeile zurück.
Die getRemoteAddr-Methode gibt die IP-Adresse des Clients zurück, der die Anfrage gestellt hat.
Die getRemoteHost-Methode gibt den vollständigen Hostnamen des Clients zurück, der die Anfrage gestellt hat.
Die getRemotePort-Methode gibt die vom Client verwendete Netzwerkportnummer zurück
Die getLocalAddr-Methode gibt WEB zurück. Die IP-Adresse des Servers.
GetLocalName-Methode gibt den Hostnamen des WEB-Servers zurück
getMethod ruft die Client-Anfragemethode ab
b) Ruft den Client-Anfrage-Header ab
getHead er( string name) method
  getHeaders(String name) method
  getHeaderNames method
c) Den Client abrufen Anforderungsparameter (vom Client übermittelte Daten)
  getParameter(name) method
  getParameterValues(String name) method
  getParameterNames method
  getParameterMap method

4) Es verwendet das Implementierungsprinzip wie folgt. (Warum kann es auf diese Weise verwendet werden?)

Wird vom Server erstellt, bevor die Dienstmethode aufgerufen wird, und an die Dienstmethode übergeben. Die gesamte Anfrage endet und die Lebensdauer der Anfrage endet.

 

(四)PageContext域(page域)

1)作用域的实际大小。(是什么?)

  PageContext域的作用范围是:整个JSP页面。

  它是四个域中范围最小的一个域。

2)  作用域的作用。(有什么用?)  
  a) 它可以获取其它八大隐式对象,可以认为它是一个入口对象。

  b) 获取其它所有域中的数据。

  c) 跳转到其它资源。其身上提供了forword和sendRedirect方法,简化了转发和重定向的操作。 

3)怎么使用这些作用域。(怎么用?)

  以下以一个简单的JSP页面程序为例:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><title>pageContext对象_例1</title></head><body><br><%//使用pageContext设置属性,该属性默认在page范围内
pageContext.setAttribute("name","地球");
request.setAttribute("name","太阳系");
session.setAttribute("name","银河系");//session.putValue("name","麦哲伦系");
application.setAttribute("name","宇宙");%>page设定的值:<%=pageContext.getAttribute("name")%><br>request设定的值:<%=pageContext.getRequest().getAttribute("name")%><br>session设定的值:<%=pageContext.getSession().getAttribute("name")%><br>application设定的值:<%=pageContext.getServletContext().getAttribute("name")%><br>范围1内的值:<%=pageContext.getAttribute("name",1)%><br>范围2内的值:<%=pageContext.getAttribute("name",2)%><br>范围3内的值:<%=pageContext.getAttribute("name",3)%><br>范围4内的值:<%=pageContext.getAttribute("name",4)%><br><!--从最小的范围page开始,然后是reques、session以及application--><%pageContext.removeAttribute("name",3);%>pageContext修改后的session设定的值:<%=session.getValue("name")%><br><%pageContext.setAttribute("name","宇宙",4);%>pageContext修改后的application设定的值:<%=pageContext.getServletContext().getAttribute("name")%><br>值的查找:<%=pageContext.findAttribute("name")%><br>属性name的范围:<%=pageContext.getAttributesScope("name")%><br></body></html>

显示结果:

page设定的值:地球
request设定的值:太阳系
session设定的值:银河系
application设定的值:宇宙
范围1内的值:地球
范围2内的值:太阳系
范围3内的值:银河系
范围4内的值:宇宙
pageContext修改后的session设定的值:nullpageContext修改后的application设定的值:宇宙
值的查找:地球
属性name的范围:1

4)它这样使用实现的原理。(为什么可以这么用?)

 pageContext-Objekt, dieses Objekt stellt den Seitenkontext dar. Dieses Objekt wird hauptsächlich für den Zugriff auf gemeinsam genutzte Daten zwischen JSPs verwendet. Wird gestartet, wenn eine Anfrage an die JSP gesendet wird, und wird gelöscht, wenn die Antwort endet.

Das obige ist der detaillierte Inhalt vonDie umfassendste Zusammenfassung der vier Hauptdomänen von Java (Bilder und Texte). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn