SpringMVCを使って、json形式に応答して返した結果のタイプ
背景:
SpringMVCはどのようにJson形式のデータに応答しますか?
技術的実現
方法1:Controllerで@RertControllerを使用して注釈を付ける
方式2:Controllerで@Controllerを使って、返却方法に@ResponseBody注解を使って実現します。
jサポートのjarパッケージを導入する必要があります。
springMVCの下の実装はこの3つのパッケージのサポートが必要です。バージョンに注意してください。springMVC 4.0のバージョンに対応するパッケージjacksonは2.0以上であるべきです。
方法1:Controllerで@RertControllerを使用して注釈を付ける
ソースコードを見ることができますが、@RertControllerという注釈は組み合わせです。
それならControllerで@RestitControllerを使っても@Controller+@ResponseBodyの効果を達成しました。しかし、このcontrollerがこの注釈を使うと、このControllerに各方法でjson形式の文字列を返すように要求します。
開発が第三者口であれば、この注釈を使って開発します。
方式2:Controllerで@Controllerを使用する
戻る方法が必要な場合は@ResponseBodyを使って注釈を実行します。
このような組み合わせ注釈を用いて,Controller内の方法の戻り値を柔軟にすることができる。json形式の文字列だけに限らない。
1、第一の方法
spring 2時代の製品です。つまりJsonビューcontrollerごとにJsonieを配置します。
例えば:
2、第二の方法
JSONツールを使って対象をjsonに順番に並べて、常用ツールのJackson、fastjson、gson。
HttpServletResonseを利用して、reponse.get OutputStream()またはreponse.get Writer()を直接出力します。
例:
spring mvc 3を利用した注釈@ResponseBody
たとえば:
注意:springMVC-servlet.xmlでを使用した場合、3.1前にAnnotationMethodhandlerAdapterをデフォルトで注入した場合、3.1以降はRequest MappingHandlerAdapterをデフォルトで注入します。
Request MappingHandler Adapterを手動で注入するなら、このように設定できます。
設定は以下の通りです
SpringMVCはどのようにJson形式のデータに応答しますか?
技術的実現
方法1:Controllerで@RertControllerを使用して注釈を付ける
方式2:Controllerで@Controllerを使って、返却方法に@ResponseBody注解を使って実現します。
jサポートのjarパッケージを導入する必要があります。
jackson-annotations-2.2.2.jar
jackson-core-2.2.2.jar
jackson-databind-2.2.2.jar
注意事項:springMVCの下の実装はこの3つのパッケージのサポートが必要です。バージョンに注意してください。springMVC 4.0のバージョンに対応するパッケージjacksonは2.0以上であるべきです。
方法1:Controllerで@RertControllerを使用して注釈を付ける
ソースコードを見ることができますが、@RertControllerという注釈は組み合わせです。
それならControllerで@RestitControllerを使っても@Controller+@ResponseBodyの効果を達成しました。しかし、このcontrollerがこの注釈を使うと、このControllerに各方法でjson形式の文字列を返すように要求します。
開発が第三者口であれば、この注釈を使って開発します。
@RestController// json
public class ProductController {
@RequestMapping("queryAll.do")
public List<Product> queryAll() {
//
List<Product> products = new ArrayList<>();
for (int i = 1; i <= 10; i++) {
Product p = new Product(i, "name" + i);
products.add(p);
}
return products;
}
}
Postmanを使って結果を確認します。方式2:Controllerで@Controllerを使用する
戻る方法が必要な場合は@ResponseBodyを使って注釈を実行します。
このような組み合わせ注釈を用いて,Controller内の方法の戻り値を柔軟にすることができる。json形式の文字列だけに限らない。
@Controller
public class ProductController {
@RequestMapping("queryAll.do")
@ResponseBody // , json
public List<Product> queryAll() {
//
List<Product> products = new ArrayList<>();
for (int i = 1; i <= 10; i++) {
Product p = new Product(i, "name" + i);
products.add(p);
}
return products;
}
}
三つの方式でSprigMVCを実現し、Jsonデータに戻ります。1、第一の方法
spring 2時代の製品です。つまりJsonビューcontrollerごとにJsonieを配置します。
例えば:
<bean id="defaultJsonView" class="org.springframework.web.servlet.view.json.MappingJacksonJsonView"/>
または
<bean id="defaultJsonView" class="org.springframework.web.servlet.view.json.MappingJackson2JsonView"/>
同じjacksonのjarで包んでください。2、第二の方法
JSONツールを使って対象をjsonに順番に並べて、常用ツールのJackson、fastjson、gson。
HttpServletResonseを利用して、reponse.get OutputStream()またはreponse.get Writer()を直接出力します。
例:
public class JsonUtil
{
private static Gson gson=new Gson();
/**
* @MethodName : toJson
* @Description : JSON ,
* @param src
* :
* @return : JSON
*/
public static String toJson(Object src) {
if (src == null) {
return gson.toJson(JsonNull.INSTANCE);
}
return gson.toJson(src);
}
}
3、第三の方法spring mvc 3を利用した注釈@ResponseBody
たとえば:
@ResponseBody
@RequestMapping("/list")
public List<String> list(ModelMap modelMap) {
String hql = "select c from Clothing c ";
Page<Clothing> page = new Page<Clothing>();
page.setPageSize(6);
page = clothingServiceImpl.queryForPageByHql(page, hql);
return page.getResult();
}
その後、スプリングmvcのデフォルト設定を使うと、jsonに戻りますが、jacksonのjarバッグが必要です。注意:springMVC-servlet.xmlで
Request MappingHandler Adapterを手動で注入するなら、このように設定できます。
設定は以下の通りです
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"
p:ignoreDefaultModelOnRedirect="true" >
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/>
</list>
</property>
</bean>
パッケージを追加jackson-mapper-asl-*.jar
jackson-core-asl-*.jar
使い方がますます簡単になってきて、プログラマーがますます馬鹿になって、いいことか悪いことか分かりません。以上は個人の経験ですので、参考にしていただければと思います。よろしくお願いします。