এখানে একটি পূর্ণ উদাহরণ দেওয়া হয়েছে যা প্রদত্ত ওয়েব পৃষ্ঠার সামগ্রীগুলি পড়বে reads ওয়েব পৃষ্ঠাটি একটি HTML ফর্ম থেকে পড়া হয় from আমরা স্ট্যান্ডার্ড InputStream
ক্লাস ব্যবহার করি তবে এটি জাসপ লাইব্রেরির মাধ্যমে আরও সহজে করা যায়।
<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>
এগুলি মাভেন নির্ভরতা। আমরা ইউআরএল স্ট্রিং যাচাই করতে অ্যাপাচি কমন্স লাইব্রেরি ব্যবহার করি।
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
সার্ভলেট প্রদত্ত ওয়েব পৃষ্ঠার বিষয়বস্তু পড়ে এবং এটি ফিরিয়ে ক্লায়েন্ট প্লেইন টেক্সট বিন্যাসে পাঠায়। পৃষ্ঠাটি পড়ার কাজটি অর্পণ করা হয়েছে WebPageReader
।
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
ইউআরএলকে বৈধতা দেয় এবং ওয়েব পৃষ্ঠার সামগ্রীগুলি পড়ে reads এটি পৃষ্ঠার এইচটিএমএল কোডযুক্ত একটি স্ট্রিং প্রদান করে।
<!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>
শেষ পর্যন্ত, এটি এইচটিএমএল ফর্মযুক্ত হোম পৃষ্ঠা form এটি এই বিষয় সম্পর্কে আমার টিউটোরিয়াল থেকে নেওয়া হয়েছে ।
servlets
ট্যাগটি সরানোর ক্ষেত্রে রোলব্যাক করলেন কেন ? এখানে কোনওjavax.servlet.*
এপিআই জড়িত নেই। কোনওmain()
পদ্ধতিতে প্লেইন ভ্যানিলা জাভা ক্লাসে এমন করার সময় আপনার ঠিক একই সমস্যা হবে ।