• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

Converting Spring MVC controller to be used as a rest api end point for Ajax calls

 
Ranch Hand
Posts: 417
  • Number of slices to send:
    Optional 'thank-you' note:
In Spring MVC, following setup is being used.

1. A DispatcherServlet defined in web.xml

 

And then in jackspringmvcapp-servlet.xml






In the boxPrintLocations.jsp, I can call the boxlocation controller like this:




And it prints the JSON string using the following statements in the console:




However, I want to use AJAX call (jQuery based) in my boxPrintLocations.jsp and wondering how can I change the BoxController to achieve this inside Spring MVC? I mean I want to use jQuery Ajax call to call an end point and then get the JSON.
 
Saloon Keeper
Posts: 27867
196
  • Number of slices to send:
    Optional 'thank-you' note:
Let's see if I can answer this without getting too confusing,

jQuery AJAX provides a jQuery method that invokes a URL and receives a response. AJAX is just regular HTTP, except that instead of the user's browser being the client, the jQuery method is the client, and as a result the existing page display isn't replaced by the AJAX response.

A ReST request handler for an AJAX caller is thus just like any other ReST controller. If you're using Spring Web, the only special consideration is that to properly format the HTTP response headers, you need to indicate that it's returning JSON instead of text or HTML or whatever.

So the only other thing to worry about is that you create the JSON that needs to be returned. I don't believe that Spring has JSON-formatting capabilities itself, but there are third-party libraries that can handle that part, taking values and returning the JSON as a String for return from your Controller.

The JSON response comes back to the jQuery AJAX response clause, and since the JS in JSON stands for "JavaScript", JSON data can be directly consumed by JavaScript code without any special handling. Easy-peasy.
 
Jack Tauson
Ranch Hand
Posts: 417
  • Number of slices to send:
    Optional 'thank-you' note:

Tim Holloway wrote:
So the only other thing to worry about is that you create the JSON that needs to be returned.



Thanks for your reply. So I am already able to print the JSON on this line " System.out.println(boxLocationJson);" as I'm using Jackson API.

I believe I would need to change the @Controller to @RequestMapping and do some other things like it's mentioned in the answer of this stack overflow thread, right?

https://stackoverflow.com/a/37321084
 
Tim Holloway
Saloon Keeper
Posts: 27867
196
  • Number of slices to send:
    Optional 'thank-you' note:
That's about the size of it. ReST has rules about when to listen for a GET versus when to listen for a POST, but that's mostly just a protocol convention and Spring doesn't have an opinion on which you use.
 
Sheriff
Posts: 67748
173
  • Number of slices to send:
    Optional 'thank-you' note:
Because you want to return data, not a view, you would not use ModelAndView, you'd return an appropriate ResponseEntity, and mark the controller with @RestController.
 
Jack Tauson
Ranch Hand
Posts: 417
  • Number of slices to send:
    Optional 'thank-you' note:

Bear Bibeault wrote:Because you want to return data, not a view, you would not use ModelAndView, you'd return an appropriate ResponseEntity, and mark the controller with @RestController.



Thanks everyone. Does this modified version looks okay?




I have:

1. Changed the @Controller to @RestController

2. Specified  @RequestMapping(value="boxlocation",method = RequestMethod.GET) just above the method

3. Changed the return type of method as String

4. changed the method name as returnJSONString
 
reply
    Bookmark Topic Watch Topic
  • New Topic
vceplus-200-125    | boson-200-125    | training-cissp    | actualtests-cissp    | techexams-cissp    | gratisexams-300-075    | pearsonitcertification-210-260    | examsboost-210-260    | examsforall-210-260    | dumps4free-210-260    | reddit-210-260    | cisexams-352-001    | itexamfox-352-001    | passguaranteed-352-001    | passeasily-352-001    | freeccnastudyguide-200-120    | gocertify-200-120    | passcerty-200-120    | certifyguide-70-980    | dumpscollection-70-980    | examcollection-70-534    | cbtnuggets-210-065    | examfiles-400-051    | passitdump-400-051    | pearsonitcertification-70-462    | anderseide-70-347    | thomas-70-533    | research-1V0-605    | topix-102-400    | certdepot-EX200    | pearsonit-640-916    | itproguru-70-533    | reddit-100-105    | channel9-70-346    | anderseide-70-346    | theiia-IIA-CIA-PART3    | certificationHP-hp0-s41    | pearsonitcertification-640-916    | anderMicrosoft-70-534    | cathMicrosoft-70-462    | examcollection-cca-500    | techexams-gcih    | mslearn-70-346    | measureup-70-486    | pass4sure-hp0-s41    | iiba-640-916    | itsecurity-sscp    | cbtnuggets-300-320    | blogged-70-486    | pass4sure-IIA-CIA-PART1    | cbtnuggets-100-101    | developerhandbook-70-486    | lpicisco-101    | mylearn-1V0-605    | tomsitpro-cism    | gnosis-101    | channel9Mic-70-534    | ipass-IIA-CIA-PART1    | forcerts-70-417    | tests-sy0-401    | ipasstheciaexam-IIA-CIA-PART3    | mostcisco-300-135    | buildazure-70-533    | cloudera-cca-500    | pdf4cert-2v0-621    | f5cisco-101    | gocertify-1z0-062    | quora-640-916    | micrcosoft-70-480    | brain2pass-70-417    | examcompass-sy0-401    | global-EX200    | iassc-ICGB    | vceplus-300-115    | quizlet-810-403    | cbtnuggets-70-697    | educationOracle-1Z0-434    | channel9-70-534    | officialcerts-400-051    | examsboost-IIA-CIA-PART1    | networktut-300-135    | teststarter-300-206    | pluralsight-70-486    | coding-70-486    | freeccna-100-101    | digitaltut-300-101    | iiba-CBAP    | virtuallymikebrown-640-916    | isaca-cism    | whizlabs-pmp    | techexams-70-980    | ciscopress-300-115    | techtarget-cism    | pearsonitcertification-300-070    | testking-2v0-621    | isacaNew-cism    | simplilearn-pmi-rmp    | simplilearn-pmp    | educationOracle-1z0-809    | education-1z0-809    | teachertube-1Z0-434    | villanovau-CBAP    | quora-300-206    | certifyguide-300-208    | cbtnuggets-100-105    | flydumps-70-417    | gratisexams-1V0-605    | ituonline-1z0-062    | techexams-cas-002    | simplilearn-70-534    | pluralsight-70-697    | theiia-IIA-CIA-PART1    | itexamtips-400-051    | pearsonitcertification-EX200    | pluralsight-70-480    | learn-hp0-s42    | giac-gpen    | mindhub-102-400    | coursesmsu-CBAP    | examsforall-2v0-621    | developerhandbook-70-487    | root-EX200    | coderanch-1z0-809    | getfreedumps-1z0-062    | comptia-cas-002    | quora-1z0-809    | boson-300-135    | killtest-2v0-621    | learncia-IIA-CIA-PART3    | computer-gcih    | universitycloudera-cca-500    | itexamrun-70-410    | certificationHPv2-hp0-s41    | certskills-100-105    | skipitnow-70-417    | gocertify-sy0-401    | prep4sure-70-417    | simplilearn-cisa    |
http://www.pmsas.pr.gov.br/wp-content/    | http://www.pmsas.pr.gov.br/wp-content/    |