http://localhost:8888/book/12347という感じのURLでjsonを返したい - Jodd,Madvoc
2015/07/20
2021/03/14
java
jodd
madvoc
joddです。
ぼくにはむずかしいです。。。(悲哀)
Madvocってなんて読むんですかね?まっどぼっくとか。
軽量な、マイクロフレームワークとかよばれているジャンルだそうです。
が、ぼくにはむずかしいです。
で、アクションの意味が皆目わからず、つぎにRestでなやみ。
とはいいつつも、ドキュメントが読みやすいですね
やりたいことは
http://localhost:8888/book/12347
という感じのURLでjsonを返したいわけです。
jsonとかだと、使う側でいろいろ用意しないといけないようですが(とはいってもたいした労力ではないです)
とりあえず用意したもの
JsonData、JsonResult、Book、BookActionのクラス
package helpers;
import jodd.json.JsonSerializer;
import jodd.madvoc.meta.RenderWith;
@RenderWith(JsonResult.class)
public class JsonData {
private final JsonSerializer jsonSerializer;
private final Object target;
public JsonData(Object target) {
this.target = target;
jsonSerializer = new JsonSerializer();
}
public JsonData include(String... includes) {
jsonSerializer.include(includes);
return this;
}
public JsonData exclude(String... excludes) {
jsonSerializer.exclude(excludes);
return this;
}
public String toJsonString() {
return jsonSerializer.serialize(target);
}
}
package helpers;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletResponse;
import jodd.io.StreamUtil;
import jodd.madvoc.ActionRequest;
import jodd.madvoc.result.BaseActionResult;
import jodd.util.MimeTypes;
public class JsonResult extends BaseActionResult<Object> {
@Override
public void render(
ActionRequest request, Object target) throws Exception {
// write output
HttpServletResponse response = request.getHttpServletResponse();
response.setContentType(MimeTypes.MIME_TEXT_PLAIN);
PrintWriter writer = null;
try {
writer = response.getWriter();
JsonData jsonData = new JsonData(target);
writer.println(jsonData.toJsonString());
} finally {
StreamUtil.close(writer);
}
}
}
package aaa;
public class Book {
String name;
String id;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
package jodd.example;
import aaa.Book;
import helpers.JsonResult;
import jodd.madvoc.meta.InOut;
import jodd.madvoc.meta.MadvocAction;
import jodd.madvoc.meta.RestAction;
@MadvocAction
public class BookAction {
@InOut
String id;
@RestAction(value="${id}", result = JsonResult.class)
public Book get() {
final Book foo = new Book();
foo.setId(""+id+"b");
return foo;
}
}
: