在Adobe Experience Manager (AEM)中,调用Servlet的ResourceType方法的POST请求可以通过以下步骤实现:
首先,你需要创建一个Servlet来处理POST请求。这个Servlet将扩展SlingAllMethodsServlet
或SlingPostServlet
。
package com.example.aem.servlets;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.servlets.SlingAllMethodsServlet;
import javax.servlet.Servlet;
import java.io.IOException;
public class MyResourceTypeServlet extends SlingAllMethodsServlet {
@Override
protected void doPost(SlingHttpServletRequest request, SlingHttpServletResponse response) throws IOException {
// 处理POST请求的逻辑
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
response.getWriter().write("{\"status\":\"success\"}");
}
}
接下来,你需要在AEM的OSGi配置中注册这个Servlet。你可以通过创建一个OSGi组件来实现这一点。
创建一个OSGi-INF/myresource-typeservlet.xml
文件:
<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:sling="http://sling.apache.org/osgi/config/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
jcr:primaryType="sling:OsgiConfig"
sling:resourceTypes="[com.example.aem.servlets.MyResourceTypeServlet]"
sling:selectors="[myselector]"
sling:extensions="[json]"/>
确保你的Servlet与特定的资源类型关联。你可以在/apps/example/components/content/myresource
目录下创建一个myresource.jsp
文件,并设置其资源类型:
<%@ page import="org.apache.sling.api.resource.Resource" %>
<%@ page import="org.apache.sling.api.resource.ResourceResolver" %>
<%@ page import="org.apache.sling.api.resource.ValueMap" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<jsp:root xmlns:sling="http://sling.apache.org/jsp/jstl/core" xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0">
<jsp:directive.page import="com.example.aem.servlets.MyResourceTypeServlet"/>
<sling:defineObjects/>
<%
Resource resource = resourceResolver.getResource("/content/example/myresource");
ValueMap properties = resource.getValueMap();
// 设置资源类型和其他属性
%>
</jsp:root>
最后,你可以使用工具如Postman或curl来发送POST请求到你的Servlet。
curl -X POST http://localhost:4502/content/example/myresource.myselector.json -H "Content-Type: application/json" -d '{}'
通过以上步骤,你应该能够在AEM中成功调用Servlet的ResourceType方法的POST请求。
领取专属 10元无门槛券
手把手带您无忧上云