在本教程中,我们创建一个经典的 Web 应用,该应用从 HTML 复选框中读取一个值。 表单值通过过滤器类进行验证。 使用 FreeMarker 模板创建视图。 该 Web 应用是使用 Java Servlet 创建的,并部署在 Tomcat 服务器上。
Servlet 是 Java 类,可响应特定类型的网络请求-最常见的是 HTTP 请求。 Servlet 用于实现 Web 应用。 它们在 Tomcat 或 Jetty 之类的 servlet 容器中运行。 在现代 Java Web 开发中,程序员使用在 Servlet 之上构建的框架。
Java 过滤器是一个对象,它对对资源(servlet 或静态内容)的请求,或对资源的响应,或两者都执行过滤任务。 它用于执行身份验证,审核,日志记录,数据加密或数据验证之类的任务。
FreeMarker 是 Java 编程语言的模板引擎。 模板以 FreeMarker 模板语言(FTL)编写。 在 Web 应用中使用模板来创建 UI。
Apache Tomcat 是由 Apache 软件基金会(ASF)开发的开源 Java Servlet 容器。 它是最受欢迎的 Java Web 服务器。
Bootstrap 是 HTML,CSS 和 JS 框架,用于在 Web 上开发响应式,移动优先项目。 它包含用于印刷,表单,按钮,导航和其他界面组件的 HTML 和 CSS 设计模板,以及可选的 JavaScript 扩展。
应用
以下 Web 应用具有一个简单的 Web 表单,该表单包含一个复选框和一个输入文本。 值将发送到 Web 应用的控制器,该控制器是 Java servlet。 在请求到达控制器之前,将在 Java 过滤器中验证这些值。 最后,这些值显示在 HTML 文件中,该文件是用 FreeMarker 模板构建的。 FreeMarker 将 HTML 与数据结合在一起。
pom.xml
javax.servlet-api
依赖性是用于构建 Java Servlet 的库。 freemarker
工件用于 FreeMarker 模板引擎。 maven-war-plugin
收集 Web 应用的所有工件依赖项,类和资源,并将它们打包到 Web 应用存档(WAR)中。
用tree
命令显示项目目录结构。
web.xml
在web.xml
文件中,我们设置了 FreeMarker 模板。 它通过freemarker.ext.servlet.FreemarkerServlet
起作用。 模板目录设置为/WEB-INF/template/
。
context.xml
context.xml
文件是 Tomcat 的配置文件。 在文件内部,我们设置上下文路径(应用名称)。 该文件位于META-INF
子目录中。
index.html
index.html
文件是我们应用的主页。 它包含一个带文本输入和复选框的 HTML 表单。 页面外观是使用 Bootstrap 库创建的。
这个隐藏的input
标记定义了一个动作参数,该参数在控制器 Servlet 中使用。
FormFilter.java
FormFilter
在到达MyController
Servlet 之前先处理请求。 它从请求中检索所有参数并进行验证。 我们需要确保值不为 null 或为空。
我们使用getParameterMap()
方法从请求中获取所有参数。
我们需要将请求参数变成请求属性。 如果请求的属性不为 null 或为空,则将其设置为该属性。 这些属性可供 FreeMarker 模板引擎处理。
请求继续到映射的 servlet。
MyController.java
MyController
Servlet 将处理由过滤器处理的请求。
@WebServlet
批注将具有MyController
URL 模式的请求映射到MyController
servlet。
该请求是一个 GET 请求,因此我们以doGet()
方法为其提供服务。
使用setContentType()
方法,我们设置内容类型(HTML)和字符集。
使用RequestDispatcher
,我们将请求转发到视图。 该视图是一个 FreeMarker 模板,该模板已转换为 HTML 页面。
show.ftl
这是show.ftl
模板。 两个属性传递给模板:adult
和name
。 FreeMarker 使用${}
语法来获取请求属性的值。
使用#if
指令,我们检查adult
属性是否已设置。 ??
判断左侧操作数的值是否丢失。
缺少值时,!
用于提供默认值。 (请记住,我们没有为空或 null 的参数设置属性。)如果设置了name
变量,则会显示它;否则,将显示它。 否则,显示“访客”。
unknown.ftl
这是unknown.ftl
模板文件。
在本教程中,我们已将数据从 HTML 表单发送到 Java servlet。 该表单包含一个输入标签和一个复选框。 请求参数已在 Java 过滤器中经过验证,并转换为请求属性,并发送到 FreeMarker 模板进行显示。
您可能也对以下相关教程感兴趣:Java Servlet 图像教程, Servlet FreeMarker JdbcTemplate 教程,Java 教程。