servlets - 注册 Sling Servlet 的方法 - Adob​​e AEM/CQ

标签 servlets adobe aem sling

根据 documentation 有两种注册 Sling Servlet 的方法

第一个是@SlingServlet

@SlingServlet(
    resourceTypes = "sling/servlet/default",
    selectors = "hello",
    extensions = "html",
    methods = "GET")
    public class MyServlet extends SlingSafeMethodsServlet {

    @Override
    protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException {
        ...
    }
}

第二次使用@Properties

@Component(metatype = true)
@Service(Servlet.class)
@Properties({
    @Property(name = "sling.servlet.resourceTypes", value = "sling/servlet/default"),
    @Property(name = "sling.servlet.selectors", value = "hello"),
    @Property(name = "sling.servlet.extensions", value = "html"),
    @Property(name = "sling.servlet.methods", value = "GET")
})
public class MyServlet extends SlingSafeMethodsServlet {

    @Override
    protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException {
        ...
    }
}

文档没有列出特定方法相对于其他方法的任何优点。我的一位团队成员问过这个问题。我能想到的一件事是 @Properties 允许我们提供可配置的属性,这些属性可以从 OSGi 控制台更改( http://localhost:4502/system/console/components ,假设 CQ 在端口 4502 上本地运行)。使用特定方法有什么区别或优势吗?

最佳答案

@SlingServlet 减少了创建 servlet 所需的样板文件。您列出的一些属性(例如 methods = "GET")已默认设置,因此您无需重新配置它。总之,它使注释更加简洁。

在内部,就像所有 SCR 注释一样,注释被转换为 XML 文件,因此您无法仅通过查看部署了代码的实例来区分 servlet 是如何实现的。

如果您想指定供应商或服务描述,则没有什么限制您添加额外的 @Property 定义。请注意,后一个实际上可以在 @SlingServlet 注释中使用,所以再次强调 - 您将立即从使用它中受益!

我还建议您阅读我的 collegue 的精彩演示。他描述了一些 AEM 开发最佳实践(包括您的 @SlingServlet 案例)。可以找到here

关于servlets - 注册 Sling Servlet 的方法 - Adob​​e AEM/CQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31609051/

相关文章:

java - 从 JCR 存储库访问资源数据

aem - 直接去除装饰标签 aem

java - 使用 Eclipse Indigo 时获取 realpath 的问题

redirect - 从Servlet到JSP的response.sendRedirect()似乎不起作用

html - Adobe XD Export 不转换 HTML 和 CSS

database - Adobe Flash 是否支持数据库?

java - 如何在 Tomcat 的多个请求中不保留静态变量?

java - @DeclareRoles 如何定义特定角色中的用户?

actionscript-3 - as3 |如何使用 Adob​​e AIR 导出 PNG

aem - 如何更改 (CQ5) VLT repo url/端口?