Java 为什么出现内部服务器错误,无法在/bin/searchServlet处创建节点
我试图在AEM中创建一个servlet,它使用来自ajax的参数并将URL的响应发送回ajax请求 但当我按下按钮时,它会抛出一个内部服务器错误,同时无法在/bin/searchServlet处创建节点 来自URL的响应为json格式 这是我的servletJava 为什么出现内部服务器错误,无法在/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
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是的,我尝试过这个,因为它是相关的,谢谢