Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

calling a java servlet from javascript [duplicate]

I am trying to create a web application using the MVC design pattern. For the GUI part I would like to use JavaScript. And for the controller Java Servlets.

Now I have never really worked with JavaScript, so I'm having a hard time figuring out how to call a Java Servlet from JavaScript and how to get the response from the Servlet.

Can anybody help me out?

like image 802
woolagaroo Avatar asked Jun 12 '10 11:06

woolagaroo


People also ask

How to call a Java Servlet from JavaScript?

Either way, the Servlet on the server should be mapped on an url-pattern of /myservlet (you can change this to your taste) and have at least doGet() implemented and write the data to the response as follows: String data = "Hello World!"; response. setContentType("text/plain"); response.

How do you call another servlet in Java?

You can call this servlet programmatically from another servlet in one of two ways. To include another servlet's output, use the include() method from the RequestDispatcher interface. This method calls a servlet by its URI and waits for it to return before continuing to process the interaction.

Can we make ajax call from JSP?

To create ajax example, you need to use any server-side language e.g. Servlet, JSP, PHP, ASP.Net etc.

HOW include js file in servlet?

When we use the RequestDispatcher , we are actually making request from the server for the said JS file and then we embed it into the response document. On the other hand, embedding a tag will point the browser to make such a request to the server.


1 Answers

So you want to fire Ajax calls to the servlet? For that you need the XMLHttpRequest object in JavaScript. Here's a Firefox compatible example:

<script>     var xhr = new XMLHttpRequest();     xhr.onreadystatechange = function() {         if (xhr.readyState == 4) {             var data = xhr.responseText;             alert(data);         }     }     xhr.open('GET', '${pageContext.request.contextPath}/myservlet', true);     xhr.send(null); </script> 

This is however very verbose and not really crossbrowser compatible. For the best crossbrowser compatible way of firing ajaxical requests and traversing the HTML DOM tree, I recommend to grab jQuery. Here's a rewrite of the above in jQuery:

<script src="http://code.jquery.com/jquery-latest.min.js"></script> <script>     $.get('${pageContext.request.contextPath}/myservlet', function(data) {         alert(data);     }); </script> 

Either way, the Servlet on the server should be mapped on an url-pattern of /myservlet (you can change this to your taste) and have at least doGet() implemented and write the data to the response as follows:

String data = "Hello World!"; response.setContentType("text/plain"); response.setCharacterEncoding("UTF-8"); response.getWriter().write(data); 

This should show Hello World! in the JavaScript alert.

You can of course also use doPost(), but then you should use 'POST' in xhr.open() or use $.post() instead of $.get() in jQuery.

Then, to show the data in the HTML page, you need to manipulate the HTML DOM. For example, you have a

<div id="data"></div> 

in the HTML where you'd like to display the response data, then you can do so instead of alert(data) of the 1st example:

document.getElementById("data").firstChild.nodeValue = data; 

In the jQuery example you could do this in a more concise and nice way:

$('#data').text(data); 

To go some steps further, you'd like to have an easy accessible data format to transfer more complex data. Common formats are XML and JSON. For more elaborate examples on them, head to How to use Servlets and Ajax?

like image 115
BalusC Avatar answered Oct 05 '22 13:10

BalusC