San*_*mar 3 adobe servlets sling aem
根据文档,有两种方法可以注册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 {
...
}
}
Run Code Online (Sandbox Code Playgroud)
第二次使用 @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 {
...
}
}
Run Code Online (Sandbox Code Playgroud)
文档没有列出特定方法相对于其他方法的任何优点.我的一位团队成员询问了这一点.我能想到的一件事是@Properties允许我们提供可配置的属性,可以从OSGi控制台(http:// localhost:4502/system/console/components,更改假设CQ在端口4502上本地运行)进行更改.使用特定方法有区别或优势吗?