<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 3.4.3 Java ### 3.4.3 Java Java誕生于1995年,由Sun Microsystems公司創造。它不僅是一種通用編程語言,更是一套平臺體系(包括JVM,即Java虛擬機在內)。Java的應用領域相當廣泛,不只是服務器編程,它還是Android系統的主要編程語言。本文主要討論它在服務器端的應用。 關于Java語言本身,有很多在線教程以及出版物可供參考。作者在此推薦 Cay S. Horstmann的[《Core Java for the Impatient》](https://www.amazon.com/Core-Java-Impatient-Cay-Horstmann/dp/0321996321)——Horstmann的Core Java系列一直是Java學習的經典,內容翔實、厚重;這本書是Core Java的瘦身版,專為缺乏耐心的讀者而寫。 Java在服務器端編程主要通過Servlet實現。以下是一個Servlet版的“Hello, world”: ``` package mypackage; import java.io.*; import javax.servlet.*; public class Hello extends GenericServlet { public void service(final ServletRequest request, final ServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); final PrintWriter pw = response.getWriter(); try { pw.println("<p>Hello, Servlet!</p>"); } finally { pw.close(); } } } ``` 通過實現[javax.servlet.Servlet](http://docs.oracle.com/javaee/7/api/javax/servlet/Servlet.html)接口,我們就建立了一個Servlet。[GenericServlet](http://docs.oracle.com/javaee/7/api/javax/servlet/GenericServlet.html)抽象類實現了該接口的大部分方法,我們只需實現service方法來響應請求即可。在這里我們簡單輸出了一段(不完整的)HTML: ``` <p>Hello, Servlet!</p> ``` 并且手工設置了應答頭(response header)“Content-Type”的值為“text/html”。 要運行Servlet程序,你需要一個**Servlet容器(container)**。Servlet容器可以理解為一個Java Sevelet專用的Web服務器——這與Apache和Nginx等“通用”的Web服務器很不一樣:后者可以為PHP、Python、Ruby等等服務器編程語言所用,而前者只服務于Java Servlet。 這里列出了一些開源/商業的Servlet容器:[https://en.wikipedia.org/wiki/Web\_container](https://en.wikipedia.org/wiki/Web_container)。[Tomcat](http://tomcat.apache.org/)是其中比較流行的一個開源產品。請讀者根據它的文檔建立一個Servlet運行環境,實際運行一下上面的示例。 需要說明的是,與PHP等動態語言不同,Java程序需要編譯,例如,Hello.java要編譯為Hello.class才能被執行。另外,按照Servlet的規范,程序的目錄結構必須符合一定的要求[1](#fn_1)。以上面的Hello, world程序為例,一個最小的目錄結構如下: ``` . └── WEB-INF ├── classes │ └── mypackage │ └── Hello.class └── web.xml ``` 其中的web.xml文件叫做**Web應用部署描述符(Web Application Deployment Descriptor)**。我們的web.xml文件內容如下: ``` <?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <display-name>Hello Servlet</display-name> <description> This is a simple "Hello, world" program. </description> <servlet> <servlet-name>HelloServlet</servlet-name> <servlet-class>mypackage.Hello</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloServlet</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping> </web-app> ``` 其中,servlet-mapping把我們的HelloServlet對應到URL“/hello”。當這個URL被訪問時,HelloServlet就會做出應答。 Servlet作為一種底層的基礎接口,很少在Web開發中直接使用——人們往往使用一些高級的編程框架來解決問題,比如流行的[Spring](https://spring.io/)。但了解那些基礎的原理對于高級的編程是十分有益的。 > 1. 這個文檔對目錄結構做了更多說明:<http://tomcat.apache.org/tomcat-8.0-doc/appdev/deployment.html>[?](#reffn_1 "Jump back to footnote [1] in the text.")
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看