Bạn có thể sử dụng html trong java không?

Chủ đề này trình bày cách triển khai cơ bản về cách tạo tệp HTML bằng Java. Bạn có thể tạo tài liệu HTML bằng Java bằng các lệnh gọi API đơn giản. Các tệp HTML có thể được tạo nhanh chóng theo chương trình và có thể được sử dụng trong các ứng dụng khác nhau như tạo báo cáo hoặc hóa đơn

Các bước để tạo tệp HTML bằng Java

  1. Định cấu hình dự án của bạn bằng cách thêm Aspose. Tệp JAR HTML từ Kho lưu trữ Maven
  2. Khởi tạo một thể hiện đối tượng HTMLDocument trống
  3. Thêm thể hiện của lớp phần tử Văn bản để giữ văn bản cho tài liệu HTML
  4. Chèn phần tử Văn bản bên trong nội dung HTML
  5. Lưu tệp HTML đã tạo vào đĩa

Để tạo tệp HTML bằng Java, trước tiên chúng tôi sẽ tạo phiên bản HTMLDocument Class mặc định. Sử dụng phương thức createTextNode, chúng tôi sẽ thêm văn bản HTML mong muốn cho tài liệu. Sau đó, chúng tôi sẽ sử dụng Lớp văn bản để thêm văn bản HTML bên trong phần thân của HTML. Cuối cùng, chúng tôi sẽ lưu tài liệu HTML vào đĩa trong Java bằng cách sử dụng các lệnh gọi API đơn giản

Mã để tạo tài liệu HTML trong Java

Trong chủ đề trước, chúng ta đã học cách trích xuất văn bản từ tệp DXF bằng Java. Trong khi chủ đề này trong Java tạo tài liệu HTML có thể được sử dụng cho các báo cáo hoặc hóa đơn có thể được hiển thị trong trình duyệt

Cập nhật. kỹ thuật này không còn hoạt động vì phản ánh tên đã bị xóa trong các phiên bản Java sau này. Đây là một cách tiếp cận khác. Một cách sử dụng khác của phản xạ tham số lambda có thể là viết nội tuyến html trong Java. Nó cho phép chúng tôi tạo các trình xây dựng như thế này, bằng Java, nơi mà trước đây chúng tôi phải sử dụng một ngôn ngữ như Kotlin và một thư viện như Kara

String doc =
    html(
        head(
            meta(charset -> "utf-8"),
            link(rel->stylesheet, type->css, href->"/my.css"),
            script(type->javascript, src -> "/some.js")
        ),
        body(
            h1("Hello World", style->"font-size:200%;"),
            article(
                p("Here is an interesting paragraph"),
                p(
                    "And another",
                    small("small")
                ),
                ul(
                    li("An"),
                    li("unordered"),
                    li("list")
                )
            )
        )
    ).asString();

Chuỗi doc = html( head( meta(charset -> "utf-8"), link(rel->stylesheet, type->css, href->"/my. css"), script(type->javascript, src -> "/some. js") ), nội dung ( h1("Xin chào thế giới", kiểu->"cỡ chữ. 200%;"), bài viết( p("Đây là một đoạn thú vị"), p( "Và một đoạn khác", small("nhỏ") ), ul( li("An"), li("không có thứ tự"), . với kiểu là chuỗi();

Cái nào tạo ra html như


 

  
    

 
    
  
 
  
    

Hello World

 

Here is an interesting paragraph

 

And anothersmall

 
  • An
  •  
  • unordered
  •  
  • list

<. DOCTYPE html CÔNG KHAI "-//W3C//DTD HTML 4. 01//EN">

Xin chào thế giới

Đây là một đoạn thú vị

Và một đoạn khác

Tạo mã

Tại sao bạn sẽ làm điều này? . e. g. chúng ta có thể lập trình tạo các đoạn văn

body(
    asList("one","two","three")
        .stream()
        .map(number -> "Paragraph " + number)
        .map(content -> p(content))
)

nội dung ( asList("một","hai","ba"). dòng(). map(số -> "Đoạn" + số). map(nội dung -> p(nội dung)) )

Trợ giúp từ Hệ thống Loại

Chúng tôi cũng có thể sử dụng hệ thống loại Java để giúp chúng tôi viết mã hợp lệ

Nó sẽ là một lỗi thời gian biên dịch để chỉ định một thuộc tính không hợp lệ cho liên kết rel

Bạn có thể sử dụng html trong java không?

Đó là một lỗi thời gian biên dịch để bỏ qua một thẻ bắt buộc

Bạn có thể sử dụng html trong java không?

Nó cũng là một lỗi thời gian biên dịch để có một thẻ body bên trong một thẻ p, bởi vì body không phải là

Bạn có thể sử dụng html trong java không?

Chúng tôi cũng có thể đảm bảo rằng kích thước hình ảnh tính bằng pixel

Bạn có thể sử dụng html trong java không?

Sự an toàn

Chúng tôi cũng có thể giúp giảm thiểu các cuộc tấn công chèn khi chèn nội dung từ người dùng vào phần đánh dấu của chúng tôi, bằng cách mã hóa html DSL bất kỳ nội dung nào được chuyển vào

e. g

assertEquals(
    "

<script src="attack.js"></script>

"
, p("").asString() );

assertEquals( "

", p("").asString() );

Làm thế nào nó hoạt động?

Xem bài đăng trên blog trước đây cho biết cách lấy tên tham số lambda với sự phản chiếu. Điều này cho phép chúng tôi chỉ định các cặp giá trị khóa cho các thuộc tính html khá rõ ràng

Tôi đã tạo một Attributetype chuyển đổi lambda thành thuộc tính html

public interface Attribute<T> extends NamedValue<T> {
    default String asString() {
        return name() + "=\"" + value()+"\"";
    }
}

public interface Attribute extends NamedValue { default String asString() { return name() + "=\"" + value()+"\""; } }

Đối với bản thân các thẻ, chúng tôi khai báo một giao diện cho mỗi thẻ, với hệ thống phân cấp để cho phép các thẻ nhất định trong các ngữ cảnh nhất định. Ví dụ: Small là PhrasingContent và có thể nằm trong thẻ P

public interface Small extends PhrasingContent {
    default Small small(String content) {
        return () -> tag("small", content);
    }
}

giao diện công cộng Mở rộng nhỏ PhrasingContent { mặc định Nhỏ nhỏ (Nội dung chuỗi) { return () -> thẻ ("nhỏ", nội dung);

Để dễ dàng có sẵn tất cả các tên thẻ trong ngữ cảnh mà không cần phải nhập tĩnh nhiều thứ, chúng ta có thể tạo giao diện “mixin” kết hợp tất cả các thẻ

public interface HtmlDsl extends
        Html,
        Head,
        Body,
        Link,
        Meta,
        P,
        Script,
        H1,
        Li,
        Ul,
        Article,
        Small,
        Img
        ...

giao diện công khai HtmlDsl mở rộng Html, Head, Body, Link, Meta, P, Script, H1, Li, Ul, Article, Small, Img

Sau đó, nơi chúng tôi muốn viết html, chúng tôi chỉ cần làm cho lớp của chúng tôi triển khai HtmlDsl (Hoặc chúng tôi có thể nhập tĩnh các phương thức thay thế

Chúng tôi có thể đặt các hạn chế đối với thẻ nào hợp lệ bằng cách sử dụng các phương thức quá tải cho tên thẻ. e. g. HTML

public interface Html extends NoAttributes {
    default Html html(Head head, Body body) { 
    ...

giao diện công khai Html extends NoAttributes { default Html html(Head head, Body body) {

và hạn chế các loại thuộc tính bằng cách sử dụng enum hoặc các loại trình bao bọc khác. Ở đây thẻ Img chỉ có thể có số đo bằng pixel

________số 8

public interface Img extends NoChildren { default Img img(Attribute src, Attribute dim1, Attribute dim2) { ...

Tất cả các mã có sẵn trên github để chơi với. Hãy xem bài kiểm tra này để biết các ví dụ thực thi. N. b. nó chỉ là một bằng chứng về khái niệm vào thời điểm này. Chỉ có đủ mã tồn tại để minh họa các ví dụ trong bài đăng trên blog này

Làm cách nào để sử dụng HTML trong tệp Java?

Các bước để tạo tệp HTML bằng Java .
Định cấu hình dự án của bạn bằng cách thêm Aspose. Tệp JAR HTML từ Kho lưu trữ Maven
Khởi tạo một thể hiện đối tượng HTMLDocument trống
Thêm thể hiện của lớp phần tử Văn bản để giữ văn bản cho tài liệu HTML
Chèn phần tử Văn bản bên trong nội dung HTML
Lưu tệp HTML đã tạo vào đĩa

Chúng ta có thể sử dụng HTML và CSS với Java không?

Các ứng dụng khách phong phú trong Java được thực hiện bằng Swing hoặc SWT. Nếu bạn muốn sử dụng HTML/CSS cho giao diện người dùng của mình, bạn cần sử dụng mô hình máy chủ/máy khách . Nó có thể đơn giản như tạo một máy chủ cục bộ và khởi chạy một trình duyệt kết nối với nó, nhưng nó vẫn sẽ là mô hình đó.