AEM Servlet

AEM Servlet示例:

 

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import javax.servlet.ServletException;

import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Properties;
import org.apache.felix.scr.annotations.Property;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.Service;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.servlets.SlingAllMethodsServlet;
import org.apache.sling.commons.json.JSONArray;
import org.apache.sling.commons.json.JSONException;
import org.apache.sling.commons.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**************************************************************************************
 * Java Interface Name : TrialGuideServlet 
 * Version             : 1.0 
 * Created Date        : 8 January 2018 

 * Function            : This class is used for get trial guide message. 
 * Modification Log    :
 
 * *************************************************************************************/

@SuppressWarnings("serial")
@Component(immediate = true, description = "Controller", metatype = true)
@Service(value = javax.servlet.Servlet.class)
@Properties(value = {
        @Property(name = "sling.servlet.methods", value = { "GET", "POST" }),
        @Property(name = "sling.servlet.paths", value = { "/bin/trialguide" }) })
public class TrialGuideServlet extends SlingAllMethodsServlet {
    Logger log = LoggerFactory.getLogger(TrialGuideServlet.class);
    @Reference
    SCGenericMappingService mappingService;

    @SuppressWarnings("null")
    @Override
    protected void doGet(SlingHttpServletRequest req,
            SlingHttpServletResponse response) throws ServletException,
            IOException {
        Boolean isSuccessful = Boolean.TRUE;
        response.setContentType("application/json");
        response.setCharacterEncoding("UTF-8");
        JSONObject returnObject = new JSONObject();

        response.getWriter().println(returnObject);

}

}

注意:

必须指定:

 response.setContentType("application/json");
        response.setCharacterEncoding("UTF-8");

IE浏览器发出的请求,如不指定,获取不到Response.

另外:get请求会被客户端缓存,如涉及到修改后的获取,可以加时间作为参数刷新数据。

 

6.4更新:

 

import java.io.IOException;

 

import javax.servlet.Servlet;

import javax.servlet.ServletException;

 

import org.apache.sling.api.SlingHttpServletRequest;

import org.apache.sling.api.SlingHttpServletResponse;

import org.apache.sling.api.servlets.HttpConstants;

import org.apache.sling.api.servlets.SlingAllMethodsServlet;

import org.osgi.framework.Constants;

import org.osgi.service.component.annotations.Component;

import org.osgi.service.component.annotations.Reference;

 

import com.adobe.cq.mcm.salesforce.SalesforceResponse;

import SFDCConnectorService;

import SFDCConnectorServiceImpl;

 

 

@Component(service = Servlet.class, immediate = true,

property = {

"sling.servlet.methods=" + HttpConstants.METHOD_GET,

"sling.servlet.paths" + "=/bin/services/test",

        Constants.SERVICE_DESCRIPTION + "= AEM Service API"})

 

public class SFDCTest extends SlingAllMethodsServlet{

 

    /**

*/

private static final long serialVersionUID = 1L;

@Reference

SFDCConnectorService salesforceService;

 

final String SERVICE_PATH = "/services/data";

@Override

    protected void doGet(final SlingHttpServletRequest req,

            final SlingHttpServletResponse resp) throws ServletException, IOException {

//         final Resource resource = req.getResource();

//         resp.getWriter().write("Title = " + resource.adaptTo(ValueMap.class).get("jcr:title"));

        resp.setContentType("application/json"); 

resp.setCharacterEncoding("UTF-8");

String message = "Test";

resp.getWriter().println(message);

if(salesforceService == null){

message = "salesforceService is null before new it";

resp.getWriter().println(message);

salesforceService = new SFDCConnectorServiceImpl();

}

SalesforceResponse salesforceResponse = salesforceService.executeRequest(SERVICE_PATH,null, null, "GET");

if(salesforceResponse == null){

message = "Salesforce response is null.";

}else{

Integer status = salesforceResponse.getCode();

if(status == 200){

message = salesforceResponse.getBody();

}else{

message = "status: "+status;

}

}

resp.getWriter().println(message);

    }

}

configuration:

@ObjectClassDefinition(name="PWC salesforce connector",

description = "Properties configuration")

public static @interface Config {

@AttributeDefinition(name = "Cloud services path",

description = "This is the salesforce service path in AEM")

String cloudConfigPath() default "/etc/cloudservices/salesforce/connector";

}

@Activate

public void activate(final Config config) {

this.cloudConfigPath = config.cloudConfigPath();

}

转载于:https://my.oschina.net/slightScenery/blog/1865205

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值