utorak, 17. siječnja 2012.

Dobivanje JSON-a u Spring MVC-u

Ovo je jako važna tema i nadogradnja u Spring MVC-u. Spring MVC ima puno prednosti, a pored jednostavnog renderiranja alternativnih pogleda tipa pdf, vraćanje JSON-a je po meni sljedeća najveća prednost.

Prije verzije 3 Springa ovaj cijeli postupak je bio dosta kompliciraniji, ali sada je čisti "mačji kašalj". Dovoljna je samo jedna anotacija - @ResponseBody. Točniji primjer ću napraviti malo kasnije, a prije toga ću navesti šta nam je sve potrebno da bi "upogonili" cijelu stvar.

Ovu divnu stvar nam je omogućio Jackson (http://jackson.codehaus.org/). Jason je java json parser... Najbolje je otići na njihovu stranicu i vidjeti cijelo objašnjenje. Uglavnom ako nećete koristiti Maven onda obavezno odite u download dio i skinute jar i dodajte ga u build path.
Ako koristite Maven i njegove zavisnosti onda u pom dodajte sljedeću zavisnost:

<dependency>
          <groupId>org.codehaus.jackson</groupId>
          <artifactId>jackson-mapper-asl</artifactId>
          <version>1.7.1.</version>
</dependency>

Naravno, verzija zavisi o verziji Jacksona koji ćete koristiti. Šta vam točno koja verzija donosi/odnosi pogledajte na njihovoj službenoj stranici.

Sada imamo sve preduvjete za početak, još nam samo preostaje dodati samo anotaciju @ResponseBody. A to se radi na ovaj način.
  • u metodi od koje želimo dobiti json dodamo @ResponseBody anotaciju
  • u jsp ili html stranici dohvatimo dobiveni json
Pravilo kojeg se trebamo pridržavati kod anotacije je da anotaciju @ResponseBody dodamo iza tipa pristupa metode (privat, public...) a prije vrste metode. Naravno ovu anotaciju stavljamo u naš kontroler. Ono što stavimo u naš return će biti sadržano u našem json-u. I to je to! Vrlo jednostavno.

Na netu sam našao dva super primjera na ovu temu. Jedan koristi Maven, a drugi ne ali je zato kompliciraniji.
Primjer koji koristi Maven:
http://www.mkyong.com/spring-mvc/spring-3-mvc-and-json-example/
Napredniji primjer:
http://krams915.blogspot.com/2011/01/spring-mvc-3-and-jquery-integration.html
 

Nema komentara:

Objavi komentar