Пример формы входа в систему с использованием j2html
Я просто попытался создать форму входа в систему, используя 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 ответ
Решение
Чтобы сгенерировать HTML-код, вы должны добавить свой тег в контейнер как 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>