posting data to Custom servlet in AEM6 to get the response from servlet.
http://stackoverflow.com/questions/32278952/posting-data-to-custom-servlet-in-aem6-
I'm trying to create a servlet in CQ. Then from my page will make an AJAX call posting data to Custom servlet in AEM6 to get the response from servlet.
My servlet class is below
package com.kicker.disolutions; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.HttpURLConnection; import java.net.URL; import java.rmi.ServerException; import java.util.Dictionary; import java.util.Enumeration; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import org.apache.sling.api.adapter.Adaptable; import org.apache.sling.api.resource.Resource; import org.apache.sling.api.resource.ResourceResolver; 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.felix.scr.annotations.sling.SlingServlet; import org.apache.sling.api.SlingHttpServletRequest; import org.apache.sling.api.SlingHttpServletResponse; import org.apache.sling.api.servlets.SlingSafeMethodsServlet; import org.apache.sling.commons.osgi.OsgiUtil; import org.apache.sling.jcr.api.SlingRepository; import org.apache.felix.scr.annotations.Reference; import org.osgi.service.component.ComponentContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.jcr.Session; import javax.jcr.Node; import org.json.simple.JSONObject; import java.util.UUID; @Component(immediate = true, metatype = false, label = "HelloFormServlet") @Service(PollController.class) @Properties(value = { @org.apache.felix.scr.annotations.Property(name = "sling.servlet.methods", value = "POST"), @org.apache.felix.scr.annotations.Property(name = "sling.servlet.paths", value ="/bin/HelloFormServlet") }) /*@SlingServlet(paths="/bin/HelloForm", methods = "POST", metatype=true)*/ public class PollController extends org.apache.sling.api.servlets.SlingAllMethodsServlet { private static final long serialVersionUID = 2598426539166789515L; Logger log=LoggerFactory.getLogger(PollController.class); /* @Reference private SlingRepository repository; public void bindRepository(SlingRepository repository) { this.repository = repository; }*/ @Override protected void doPost(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServerException, IOException { try { log.info("getting values from jsp");String feed = "This is some text from an external ASP file"; response.getWriter().write(feed); log.info("passing off jsp");/*//Get the submitted form data that is sent from the //CQ web page String id = UUID.randomUUID().toString(); String firstName = request.getParameter("firstName"); String lastName = request.getParameter("lastName"); String address = request.getParameter("address"); String cat = request.getParameter("cat"); String state = request.getParameter("state"); String details = request.getParameter("details"); String date = request.getParameter("date"); String city = request.getParameter("city"); //Encode the submitted form data to JSON JSONObject obj=new JSONObject(); obj.put("id",id); obj.put("firstname",firstName); obj.put("lastname",lastName); obj.put("address",address); obj.put("cat",cat); obj.put("state",state); obj.put("details",details); obj.put("date",date); obj.put("city",city); //Get the JSON formatted data String jsonData = obj.toJSONString(); //Return the JSON formatted data response.getWriter().write(jsonData); */} catch(Exception e) { e.printStackTrace(); } } }My JSP
<%@include file="/libs/foundation/global.jsp"%> <% %><%@page session="false" %><% %><% // TODO add you code here %> <%@page import="com.kicker.disolutions.*"%> <%@ page import="java.util.*"%> <%@ page import="java.io.*;"%> <%@page session="false"%> <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <cq:includeClientLib categories="jquerysamples" /> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <script type="text/javascript" src="https://www.google.com/jsapi"></script> <script> $(document).ready(function() { alert("READY"); $('#submit').click(function() { var failure = function(err) { alert("Unable to retrive data "+err); }; alert("in submit"); var claimId = 2; //Use JQuery AJAX request to post data to a Sling Servlet $.ajax({ type: 'POST', url:'/bin/HelloFormServlet', data:'id='+ claimId, error:failure, success: function(msg){ alert(msg); $("#piechart").html(msg); } }); }); }); </script> </head> <body> <div>r u satisfied?</div><br> <input type="radio" name="ans" value="yes">Yes<br> <input type="radio" name="ans" value="no">NO<br> <div>r u satisfied?</div><br> <input type="radio" name="ans1" value="yes">Yes<br> <input type="radio" name="ans1" value="no">NO<br> <input id= "submit" type="submit" value="Submit" /><br> <div id="piechart" style="width: 900px; height: 500px;"></div> </body> </html>After execution my error is below
29.08.2015 00:53:18.386 *ERROR* [0:0:0:0:0:0:0:1 [1440789798381] POST /bin/HelloFormServlet HTTP/1.1] org.apache.sling.servlets.post.impl.operations.ModifyOperation Unable to create resource named HelloFormServlet in /bin 29.08.2015 00:53:18.387 *ERROR* [0:0:0:0:0:0:0:1 [1440789798381] POST /bin/HelloFormServlet HTTP/1.1] org.apache.sling.servlets.post.impl.operations.ModifyOperation Exception during response processing. javax.jcr.nodetype.ConstraintViolationException: No default node type available for /bin/HelloFormServlet at org.apache.jackrabbit.oak.util.TreeUtil.addChild(TreeUtil.java:185) at org.apache.jackrabbit.oak.jcr.delegate.NodeDelegate.addChild(NodeDelegate.java:692) at org.apache.jackrabbit.oak.jcr.session.NodeImpl$5.perform(NodeImpl.java:286) at org.apache.jackrabbit.oak.jcr.session.NodeImpl$5.perform(NodeImpl.java:253) at org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:308) at org.apache.jackrabbit.oak.jcr.session.ItemImpl.perform(ItemImpl.java:113) at org.apache.jackrabbit.oak.jcr.session.NodeImpl.addNode(NodeImpl.java:253) at org.apache.jackrabbit.oak.jcr.session.NodeImpl.addNode(NodeImpl.java:238) at org.apache.sling.jcr.resource.internal.helper.jcr.JcrResourceProvider.create(JcrResourceProvider.java:437) at org.apache.sling.resourceresolver.impl.tree.ResourceProviderEntry.create(ResourceProviderEntry.java:479) at org.apache.sling.resourceresolver.impl.ResourceResolverImpl.create(ResourceResolverImpl.java:1053) at org.apache.sling.servlets.post.impl.operations.AbstractCreateOperation.deepGetOrCreateNode(AbstractCreateOperation.java:578) at org.apache.sling.servlets.post.impl.operations.AbstractCreateOperation.processCreate(AbstractCreateOperation.java:105) at org.apache.sling.servlets.post.impl.operations.ModifyOperation.doRun(ModifyOperation.java:91)
Please help.. tried link but didn't help