<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>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # Java Servlet 讀取網頁 > [http://zetcode.com/articles/javaservletreadwebpage/](http://zetcode.com/articles/javaservletreadwebpage/) Java Servlet 讀取網頁教程向您展示了如何使用 Servlet 在 Java Web 應用中讀取網頁。 ## Java Servlet Servlet 是響應網絡請求的 Java 類。 Java servlet 用于構建 Web 應用。 它們在 servlet 容器(例如 Tomcat 或 Jetty)中運行。 現代 Java Web 開發使用的框架是在 Servlet 之上構建的,包括 Spring 和 Vaadin。 Apache Commons Validator 是用于驗證數據的 Java 庫。 我們使用此庫來驗證正確的 URL 值。 ## Java Servlet 讀取網頁示例 在下面的示例中,我們讀取帶有`InputStream`的網頁,并向客戶端顯示該頁面的 HTML 代碼。 網頁的名稱是從 HTML 表單的`input`標簽發送的。 ```java $ tree . ├── nb-configuration.xml ├── pom.xml └── src ├── main │ ├── java │ │ └── com │ │ └── zetcode │ │ ├── service │ │ │ └── WebPageReader.java │ │ └── web │ │ └── ReadWebpage.java │ └── webapp │ ├── index.html │ ├── META-INF │ │ └── context.xml │ └── WEB-INF └── test └── java ``` 這是項目結構。 ```java <dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>commons-validator</groupId> <artifactId>commons-validator</artifactId> <version>1.6</version> </dependency> </dependencies> ``` 我們需要這兩個 Maven 依賴項。 `javax.servlet-api`工件用于 servlet。 `commons-validator`依賴項用于數據驗證。 `context.xml` ```java <?xml version="1.0" encoding="UTF-8"?> <Context path="/JavaServletReadWebpage"/> ``` 在 Tomcat `context.xml`文件中,我們定義了上下文路徑。 它是 Web 應用的名稱。 `ReadWebPage.java` ```java package com.zetcode.web; import com.zetcode.service.WebPageReader; import java.io.IOException; import java.nio.charset.StandardCharsets; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet(name = "ReadWebPage", urlPatterns = {"/ReadWebPage"}) public class ReadWebpage extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/plain;charset=UTF-8"); String page = request.getParameter("webpage"); String content = new WebPageReader().setWebPageName(page).getWebPageContent(); ServletOutputStream os = response.getOutputStream(); os.write(content.getBytes(StandardCharsets.UTF_8)); } } ``` `ReadWebPage` Servlet 讀取給定網頁的內容,并將文本發送給客戶端。 ```java response.setContentType("text/plain;charset=UTF-8"); ``` 響應為純文本,文本編碼為 UTF-8。 ```java String page = request.getParameter("webpage"); ``` 我們使用`getParameter()`從請求參數獲取網頁的名稱。 ```java String content = new WebPageReader().setWebPageName(page).getWebPageContent(); ``` `WebPageReader`用于獲取網頁的內容。 ```java ServletOutputStream os = response.getOutputStream(); os.write(content.getBytes(StandardCharsets.UTF_8)); ``` 我們通過`ServletOutputStream`將數據發送給客戶端。 `WebPageReader.java` ```java package com.zetcode.service; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.URL; import java.nio.charset.StandardCharsets; import java.util.logging.Level; import java.util.logging.Logger; import java.util.stream.Collectors; import org.apache.commons.validator.routines.UrlValidator; public class WebPageReader { private String webpage; private String content; public WebPageReader setWebPageName(String name) { webpage = name; return this; } public String getWebPageContent() { try { boolean valid = validateUrl(webpage); if (!valid) { content = "Invalid URL; use http(s)://www.example.com format"; return content; } URL url = new URL(webpage); try (InputStream is = url.openStream(); BufferedReader br = new BufferedReader( new InputStreamReader(is, StandardCharsets.UTF_8))) { content = br.lines().collect( Collectors.joining(System.lineSeparator())); } } catch (IOException ex) { content = String.format("Cannot read webpage %s", ex); Logger.getLogger(WebPageReader.class.getName()).log(Level.SEVERE, null, ex); } return content; } private boolean validateUrl(String webpage) { UrlValidator urlValidator = new UrlValidator(); return urlValidator.isValid(webpage); } } ``` `WebPageReader`讀取網頁的內容。 ```java private boolean validateUrl(String webpage) { UrlValidator urlValidator = new UrlValidator(); return urlValidator.isValid(webpage); } ``` 在閱讀網頁之前,我們使用 Apache Commons Validator 庫中的`UrlValidator`驗證 URL。 ```java URL url = new URL(webpage); try (InputStream is = url.openStream(); BufferedReader br = new BufferedReader( new InputStreamReader(is, StandardCharsets.UTF_8))) { content = br.lines().collect( Collectors.joining(System.lineSeparator())); } ``` 通過`InputStream`讀取網頁。 數據被加載到`String`中。 或者,我們可以使用 JSoup 庫。 `index.html` ```java <!DOCTYPE html> <html> <head> <title>Home page</title> <meta charset="UTF-8"> </head> <body> <form action="ReadWebPage"> <label for="page">Enter a web page name:</label> <input type="text" id="page" name="webpage"> <button type="submit">Submit</button> </form> </body> </html> ``` 主頁包含表單,該表單將要閱讀的網頁發送到應用。 請注意,必須以完整的`http(s)://www.example.com`格式輸入網頁。 ![Java read web page](https://img.kancloud.cn/c5/a1/c5a1b5b66c4e06d1b2aecd169e0e4c41_574x302.jpg) 圖:Java 閱讀網頁 在屏幕截圖中,我們可以看到一個簡單網頁的內容。 在本教程中,我們創建了一個 Java Servlet 應用,該應用讀取所選網頁的內容,并將 HTML 以純文本格式發送回客戶端。 您可能也對以下相關教程感興趣: [Java 閱讀網頁](/articles/javareadwebpage/), [Java Servlet 上傳文件](/articles/javaservletuploadfile/), [Java Log4j 教程](/java/log4j/), [Java Servlet RESTful 客戶端](/articles/javaservletrestclient/) , [Java `RequestDispatcher`](/java/requestdispatcher/) ,[從 Java servlet 提供純文本](/articles/javaservlettext/) , [Java servlet 圖像教程](/articles/javaservletimage/)或 [Java 教程](/lang/java/)
                  <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>

                              哎呀哎呀视频在线观看