Spring- und JSON-Beispiel

In diesem Beispiel werde ich erklären, wie man das JSON-Ergebnis im Spring Framework erhält. Eines meiner vorherigen Beispiele zur Inhaltsverhandlung handelt von demselben Konzept. Aber hier möchte ich das gleiche Thema anhand eines sehr einfachen Beispiels noch einmal aufgreifen. Seit Spring 3 können wir das JSON-Ergebnis ohne großen Aufwand sofort abrufen. Sie müssen lediglich die erforderlichen Bibliotheken hinzufügen und dann die hinzufügen mvc:annotation-driven in der Spring-Konfigurationsdatei. Den Rest erledigt der Federcontainer.

Schauen wir uns den Beispielcode für dieses Tutorial an:

1. Projektabhängigkeiten – Maven-Konfigurationen

Hier ist die Maven-Abhängigkeitsverwaltungsdatei, die für dieses Tutorial verwendet wird.

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>java</groupId>
	<artifactId>SpringWebApp</artifactId>
	<packaging>war</packaging>
	<version>1.0-SNAPSHOT</version>
	<properties>
		<maven-jetty-plugin.version>6.1.14</maven-jetty-plugin.version>
		<maven-surefire-plugin.version>2.17</maven-surefire-plugin.version>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>
	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>3.8.1</version>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
			<version>1.2</version>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>servlet-api</artifactId>
			<scope>provided</scope>
			<version>2.5</version>
		</dependency>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jsp-api</artifactId>
			<version>2.0</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-core</artifactId>
			<version>3.2.9.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-web</artifactId>
			<version>3.2.9.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>3.2.9.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-tx</artifactId>
			<version>3.2.9.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-oxm</artifactId>
			<version>3.2.9.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-orm</artifactId>
			<version>3.2.9.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>3.2.9.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context-support</artifactId>
			<version>3.2.9.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-expression</artifactId>
			<version>3.2.9.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aop</artifactId>
			<version>3.2.9.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.codehaus.jackson</groupId>
			<artifactId>jackson-mapper-asl</artifactId>
			<version>1.9.11</version>
		</dependency>
	</dependencies>
	<build>
		
	</build> 
</project>

2. Modell

Employee.java

package net.javabeat.model;

public class Employee {
	private int empId;
	private String empName;
	private String city;
	private String country;
	public int getEmpId() {
		return empId;
	}
	public void setEmpId(int empId) {
		this.empId = empId;
	}
	public String getEmpName() {
		return empName;
	}
	public void setEmpName(String empName) {
		this.empName = empName;
	}
	public String getCity() {
		return city;
	}
	public void setCity(String city) {
		this.city = city;
	}
	public String getCountry() {
		return country;
	}
	public void setCountry(String country) {
		this.country = country;
	}
}

3. Controller

JSONController.java

package net.javabeat.controller;

import net.javabeat.model.Employee;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@RequestMapping("/employee")
public class JSONController {

	@RequestMapping(value = "{name}/{city}/{country}", method = RequestMethod.GET)
	public @ResponseBody
	Employee getShopInJSON(@PathVariable String name,
			@PathVariable String city, @PathVariable String country) {
		Employee employee = new Employee();
		employee.setEmpId(1);
		employee.setEmpName(name);
		employee.setCity(city);
		employee.setCountry(country);
		return employee;
	}

}

4. mvc:annotationsgesteuert

Hier sind die Federkonfigurationen, die für dieses Tutorial verwendet werden. Dies ist das absolute Minimum, das für die Inbetriebnahme und Ausführung Ihrer Anwendungen erforderlich ist. Beachten Sie, dass hier ein wichtiger Teil die annotation-driven-Deklaration ist, die die standardmäßige Inhaltsverarbeitung für die JSON-Formate ermöglicht. Es wird nach dem Klassenpfad gesucht und wenn die Jackson-Bibliothek gefunden wird, wird JSON automatisch für alle Anfragen aktiviert.

  • Lesen Sie auch: Component-Scan vs. Annotation-Config vs. Annotation-Driven

mvc-dispatcher-servlet.xml

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

	<context:component-scan base-package="net.javabeat.controller" />
	<mvc:annotation-driven />
</beans>

5. Web-App-Konfigurationen

web.xml

<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

	<display-name>Spring Web MVC Application</display-name>

	<servlet>
		<servlet-name>mvc-dispatcher</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>

	<servlet-mapping>
		<servlet-name>mvc-dispatcher</servlet-name>
		<url-pattern>/rest/*</url-pattern>
	</servlet-mapping>

	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value>
	</context-param>

	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

</web-app>

6. Projektstruktur

Hier ist die Projektstruktur, die für dieses Tutorial verwendet wird.

Spring JSON-Projektstruktur

7. Spring + JSON-Beispiel

Wenn Sie das Spring- und JSON-Beispiel ausführen, erhalten Sie die folgende Ausgabe in Ihrem Browser.

Spring JSON-Beispielanwendung

Ich hoffe, dass ich mit diesem Tutorial eine grundlegende Idee für die Integration von JSON-Ergebnissen in Ihre Spring-Anwendungen vermittelt habe. In den neuesten Spring 4-Versionen gibt es viele Verbesserungen bei der Verwendung der JSON-Ergebnisse. Wenn Sie Fragen haben, schreiben Sie diese bitte in den Kommentarbereich.

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Nach oben scrollen