返回介绍

E.3 Web Fragment

发布于 2025-04-22 20:10:08 字数 3013 浏览 0 评论 0 收藏

Servlet 3 添加了 web fragment 特性,用来为已有的 Web 应用部署插件或框架。web fragment 被设计成部署描述符的补充,而无需编辑 web.xml 文件。一个 Web fragment 基本上包含了常用的 Web 对象,如 Servlet,过滤器和监听器,其他资源,如 JSP 页面和静态图像的包文件(jar 文件)。一个 web fragment 也可以有一个描述符,类似的部署描述符的 XML 文档。web fragment 描述符必须命名为 web-fragment.xml,并位于包的 META-INF 目录下。一个 web fragment 描述符可能包含可出现在部署描述符 web-app 元素下的任意元素,再加上一些 web fragment 的特定元素。一个应用程序可以有多个 web fragment。

清单 E.2 显示了 web fragment 描述符,以黑体形式突出显示与部署描述符之间的不同内容。在 web fragment 的根元素必须是 web-fragment 元素,其可以有 metadata-complete 属性。如果 metadata-complete 属性的值为 True,则包含在 web fragment 中所有的类注释将被跳过。

清单 E.2 web fragment.xml 文件的框架

< ?xml version="1.0" encoding="ISO-8859-1"?>
< web-fragment version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee → http://xmlns.jcp.org/xml/ns/javaee/web-fragment_3_1.xsd" [metadata-complete="true|false"] > ... < /web-fragment>

作为一个例子,在 fragmentdemo 应用程序中包含的 fragment.jar 文件是一个 web fragment。该 jar 文件已经导入到 WEB-INF/lib 目录下。本实例的重点不在于 fragmentdemo,而是 web fragment 项目。该项目包含一个 Servlet(fragment.servlet.FragmentServlet,见清单 E.3)和 webfragment.xml 文件(见清单 E.4)。

清单 E.3 FragmentServlet 类

package fragment.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class FragmentServlet extends HttpServlet {

  private static final long serialVersionUID = 940L;

  public void doGet(HttpServletRequest request, HttpServletResponse 
    response)
      throws ServletException, IOException {

    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    out.println("A plug-in");
  }
}

清单 E.4 webfragment.xml 文件

< ?xml version="1.0" encoding="ISO-8859-1"?>
< web-fragment version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
→ http://xmlns.jcp.org/xml/ns/javaee/web-fragment_3_1.xsd">

  < servlet>
    < servlet-name>FragmentServlet< /servlet-name>
    < servlet-class>fragment.servlet.FragmentServlet< /servletclass>
  < /servlet>
  < servlet-mapping>
    < servlet-name>FragmentServlet< /servlet-name>
    < url-pattern>/fragment< /url-pattern>
  < /servlet-mapping>
< /web-fragment>

FragmentServlet 是发送一个字符串到浏览器的一个简单的 Servlet。web-fragment.xml 文件注册并映射该 Servlet。fragment.jar 文件结构如图 E.1 所示。

图片 5

图 E.1 fragment.jar 文件结构

使用如下 URL 调用测试该 Servlet。

http://localhost:8080/fragmentdemo/fragment

可以看到 Fragment Servlet 的输出。

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。