我正尝试在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);
}
});
});
});
发布于 2020-07-21 01:26:47
如果你的帖子(!)servlet将有post请求的代码,而不仅仅是get请求的代码。
https://stackoverflow.com/questions/62999913
复制相似问题