我只是尝试在 servlet 中使用 html 创建登录表单。但是我在某个地方卡住了。
我只是使用 Maven 依赖项。所以我不必关心 jar。
那么,让我们看一下我的主要 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();
}
}
最佳答案
要生成 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 类,因此您应该在 doGet 方法上编写响应,而不是在控制台 (System.out.println()) 上编写,如下所示:
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>
我的项目是使用 j2html 版本 1.2.2 通过 maven 构建的
<dependency>
<groupId>com.j2html</groupId>
<artifactId>j2html</artifactId>
<version>1.2.2</version>
</dependency>
关于java - 使用 j2html 的登录表单示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50480568/