Пример формы входа в систему с использованием j2html - PullRequest
0 голосов
/ 23 мая 2018

Я только что попытался создать форму входа в систему, используя html в servlet.но я застрял в каком-то месте.

Я просто использую maven зависимости. Поэтому мне не нужно заботиться о банках.

Итак, давайте посмотрим мой основной код Java

package tutor.programacion.primerservlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import j2html.tags.Tag;

import static j2html.TagCreator.*;
/**
 * Servlet implementation class sampleJava2HTML
 */
@WebServlet("/")
public class sampleJava2HTML extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        System.out.println("inside the servlet calling this");
        enterPasswordInput("please enter something");




    }


public static Tag enterPasswordInput(String placeholder) {
        return passwordInput("enterpassword",placeholder);
    }


public static Tag passwordInput(String identifier,String placeholder) {
    return input()
            .withType("password")
            .withId(identifier)
            .withName(identifier)
            .withPlaceholder(placeholder)
            .isRequired();
}

}

1 Ответ

0 голосов
/ 23 мая 2018

Чтобы сгенерировать HTML-код, вы должны добавить свой тег в ContainerTag, например html(), а затем вызвать метод renderFormatted().

Например:

import static j2html.TagCreator.body;
import static j2html.TagCreator.form;
import static j2html.TagCreator.h1;
import static j2html.TagCreator.html;
import static j2html.TagCreator.input;

import j2html.tags.ContainerTag;
import j2html.tags.Tag;

public class _50480568 {

    public static void main(String[] args) {
        System.out.println(generateHTML());
    }

    private static String generateHTML() {
        return html(generateBody()).renderFormatted();
    }

    private static ContainerTag generateBody() {
        return body(generetaH1Title(), generateForm());
    }

    private static ContainerTag generateForm() {
        return form().withMethod("post").withAction("/yourServlet").with(generateUserField(), generatePasswordField());
    }

    private static Tag generateUserField() {
        return input().withType("text").withName("user").withId("user");
    }

    private static ContainerTag generetaH1Title() {
        return h1("Hello World - Body!");
    }

    private static Tag generatePasswordField() {
        return input().withType("password").withName("password").withId("password");
    }

}

Поскольку вы работаете с классом Servlet, вместо этого вы пишете на консоли (System.out.println ()), вы должны написать в своем ответе на метод doGet следующее:

java.io.PrintWriter pw = resp.getWriter();
pw.println(generateHTML());

Это должно отобразить следующий HTML:

<html>
    <body>
        <h1>
            Hello World - Body!
        </h1>
        <form method="post" action="/yourServlet">
            <input type="text" name="user" id="user">
            <input type="password" name="password" id="password">
        </form>
    </body>
</html>

Мой проект был построен с помощью Maven с использованием j2html версии 1.2.2

<dependency>
    <groupId>com.j2html</groupId>
    <artifactId>j2html</artifactId>
    <version>1.2.2</version>
</dependency>
...