WEB API練習3


  • ディレクトリ構造—Spring MVCを使用したWebページ4の作成プロジェクト
  • PlusResult.Java
  • の作成
    package kr.or.connect.mvcexam.dto;
    
    public class PlusResult {
    	private int value1;
    	private int value2;
    	private int result;
    	
    	public int getValue1() {
    		return value1;
    	}
    	public void setValue1(int value1) {
    		this.value1 = value1;
    	}
    	public int getValue2() {
    		return value2;
    	}
    	public void setValue2(int value2) {
    		this.value2 = value2;
    	}
    	public int getResult() {
    		return result;
    	}
    	public void setResult(int result) {
    		this.result = result;
    	}
    }
  • PlusApiController.Java
  • の作成
    package kr.or.connect.mvcexam.controller;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    import kr.or.connect.mvcexam.dto.PlusResult;
    
    /* @ResponseBody 어노테이션이 붙게 되면 해당 메소드는 
     * view이름(jsp파일)을 리턴하는 것이 아니라, 리턴한 객체를 출력하라는 의미를 가진다.
     */
    @Controller
    public class PlusApiController {
    	@GetMapping("/api/plus")
    	@ResponseBody
    	public PlusResult plus(@RequestParam("value1") int value1, 
    			@RequestParam("value2") int value2){
    		PlusResult plusResult = new PlusResult();
    		plusResult.setValue1(value1);
    		plusResult.setValue2(value2);
    		plusResult.setResult(value1 + value2);
    		return plusResult;
    	}
    }
  • pom.xml-jacksonライブラリ
  • を追加
  • DispathcerServiceletは、コントローラメソッドを実行し、そのメソッドが返すオブジェクトを変換しようとします.
  • 変換ではメッセージ変換器(MessageConverter)が使用され、メッセージ変換器がbeanとして登録されていない場合はエラーが発生します.
  • MessageConverterをbeanとして登録している場合にのみ、エラーは発生しません.
  • 通常、Web APIはJSON、XMLなどのデータを表す.
  • PlusResultをJSONメッセージに変換するにはpomを使用します.xmlファイルにjacksonライブラリを追加します.
  • Jacksonライブラリは、主にオブジェクトをJSONに変換するか、JSONをオブジェクトに変換するために使用されます.
  • <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>kr.or.connect</groupId>
    	<artifactId>mvcexam</artifactId>
    	<packaging>war</packaging>
    	<version>0.0.1-SNAPSHOT</version>
    	<name>mvcexam Maven Webapp</name>
    	<url>http://maven.apache.org</url>
    
    	<properties>
    		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    		<spring.version>4.3.5.RELEASE</spring.version>
    	</properties>
    
    	<dependencies>
    		<dependency>
    			<groupId>org.springframework</groupId>
    			<artifactId>spring-context</artifactId>
    			<version>${spring.version}</version>
    		</dependency>
    		<dependency>
    			<groupId>org.springframework</groupId>
    			<artifactId>spring-webmvc</artifactId>
    			<version>${spring.version}</version>
    		</dependency>
    		<dependency>
    			<groupId>junit</groupId>
    			<artifactId>junit</artifactId>
    			<version>3.8.1</version>
    			<scope>test</scope>
    		</dependency>
    
    		<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
    		<dependency>
    			<groupId>javax.servlet</groupId>
    			<artifactId>javax.servlet-api</artifactId>
    			<version>3.1.0</version>
    			<scope>provided</scope>
    		</dependency>
    
    		<!-- https://mvnrepository.com/artifact/javax.servlet.jsp/javax.servlet.jsp-api -->
    		<dependency>
    			<groupId>javax.servlet.jsp</groupId>
    			<artifactId>javax.servlet.jsp-api</artifactId>
    			<version>2.3.1</version>
    			<scope>provided</scope>
    		</dependency>
    
    		<!-- https://mvnrepository.com/artifact/jstl/jstl -->
    		<dependency>
    			<groupId>jstl</groupId>
    			<artifactId>jstl</artifactId>
    			<version>1.2</version>
    		</dependency>
    		
    		<!-- jackson 라이브러리는 객체를 JSON으로 또는 JSON을 객체로 변환시킬 때 주로 사용 -->
    		<dependency>
    			<groupId>com.fasterxml.jackson.core</groupId>
    			<artifactId>jackson-core</artifactId>
    			<version>2.10.2</version>
    		</dependency>
    		<dependency>
    			<groupId>com.fasterxml.jackson.core</groupId>
    			<artifactId>jackson-databind</artifactId>
    			<version>2.10.2</version>
    		</dependency>
    	</dependencies>
    
    	<build>
    		<finalName>mvcexam</finalName>
    		<plugins>
    			<plugin>
    				<groupId>org.apache.maven.plugins</groupId>
    				<artifactId>maven-compiler-plugin</artifactId>
    				<version>3.6.1</version>
    				<configuration>
    					<source>1.8</source>
    					<target>1.8</target>
    				</configuration>
    			</plugin>
    		</plugins>
    	</build>
    </project>
    結果