Java 为什么出现内部服务器错误,无法在/bin/searchServlet处创建节点

Java 为什么出现内部服务器错误,无法在/bin/searchServlet处创建节点,java,ajax,aem,Java,Ajax,Aem,我试图在AEM中创建一个servlet,它使用来自ajax的参数并将URL的响应发送回ajax请求 但当我按下按钮时,它会抛出一个内部服务器错误,同时无法在/bin/searchServlet处创建节点 来自URL的响应为json格式 这是我的servlet package com.community.aem.core.servlets; import org.osgi.framework.Constants; import org.osgi.service.component.annotati

我试图在AEM中创建一个servlet,它使用来自ajax的参数并将URL的响应发送回ajax请求 但当我按下按钮时,它会抛出一个内部服务器错误,同时无法在/bin/searchServlet处创建节点

来自URL的响应为json格式

这是我的servlet

package com.community.aem.core.servlets;
import org.osgi.framework.Constants;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;

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

import org.apache.http.client.methods.HttpGet;
import org.apache.http.HttpResponse;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.sling.jcr.api.SlingRepository;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.rmi.ServerException;
import java.util.Base64;
import java.io.IOException;
import javax.servlet.Servlet;

import com.google.gson.Gson;
import com.google.gson.*;


@Component(service=Servlet.class,
    property={
            Constants.SERVICE_DESCRIPTION + "=Simple Demo Servlet",
            "sling.servlet.methods=" + HttpConstants.METHOD_POST,
            "sling.servlet.paths="+ "/bin/searchServlet"
       })

public class slingdemo2 extends 
org.apache.sling.api.servlets.SlingAllMethodsServlet {

private static final long serialVersionUID = 2598426539166789515L;

private SlingRepository repository;

@Reference


public void bindRepository(SlingRepository repository){
    this.repository = repository;
}

public void unbindRepository(SlingRepository repository) {
    this.repository = repository;
}



@Override
protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response)
throws ServerException, IOException {

    try
    {
                // Get the submitted form data that is sent from the
        String query = request.getParameter("query");
            
       //sending HTTP request and reading content using buffered reader

        HttpResponse response1 = httpClient.execute(getRequest);

        BufferedReader br = new BufferedReader(new InputStreamReader((response1.getEntity().getContent())));

        String output;

        String myJson = " ";
        while ((output = br.readLine()) != null) {
            myJson = myJson + output;
        }

        Gson gson = new Gson();
        String jsonArray = gson.toJson(myJson);
        response.getWriter().write(jsonArray);
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }
}
}
这是我的ajax查询

$(document).ready(function(){
        $('body').hide().fadeIn(1000);
        $('#submit').click(function() {
            var query= $('query').val() ;

            $.ajax({
            type: 'POST',    
            url:'/bin/searchServlet',
            data:query,


            success: function(responseText){
            $('#result').val(responseText);


         }
     });
  });
    });

如果您的Post(!)servlet包含Post请求代码而不仅仅是get请求代码,可能会有所帮助。

如果您的Post(!)servlet包含Post请求代码而不仅仅是get请求代码,可能会有所帮助。

您的servlet没有正确注册,因此,将调用默认的Post servlet,而不是调用您的代码,该servlet正在尝试在该路径上创建节点(默认Post行为),但由于某种原因(很可能是权限)失败,因此您会收到此错误。与删除的问题相关:使用
“result1\r\nresult2\r\nresult3\r\n'.trim().split('\r\n')取而代之。您接受的注释将始终删除最后一个位置,无论它是否为空。@Lain是的,我尝试了这一点,因为它是相关的。谢谢您,您的servlet没有正确注册,因此将调用默认的Post servlet,而不是您的代码,它正试图在该路径上创建节点(默认Post行为),由于某种原因(很可能是权限)失败,因此您会遇到此错误。与删除的问题相关:使用
'result1\r\nresult2\r\nresult3\r\n'.trim().split('\r\n')取而代之。您接受的评论将始终删除最后一个位置,无论它是否为空。@Lain是的,我尝试过这个,因为它是相关的,谢谢