JSTLとJSON
21064 ワード
一.JSTLの概況
1.Java Server Pages Standard Tag Libray(JSTL)はJSP標準ラベルライブラリである.
2.コアラベルライブラリ:http://java.sun.com/jsp/jstl/core ウェブアプリケーションの一般的な動作を含みます.例えば、サイクル、表現の割り当て、基本入出力などです.
3.ラベルライブラリのフォーマット:http://java.sun.com/jsp/jstl/fmt データを表示する作業の書式を設定します.
4.JSPページでJSTLライブラリを使用するためには、taglibコマンドは下記のフォーマットで使用しなければなりません.
例えば、プレフィクス(prefix)は任意のコンテンツであってもよく、ルールに従って、チーム内の異なる人によって作成されたコードをより類似させることができる.したがって、事前に設計されたプレフィックスを使用することを提案する.この時は二つのjarパッケージを導入する必要があります.は直接Tomcatのlibディレクトリに入ればいいです.
二.JSTLの使用
1.条件動作ラベル
JSTLには4つのラベルがあります.条件式の動作命令を実行できます.if、chose、when、otherswise.
a.ifラベル
JSTLラベルは一般的にフィールドオブジェクトを操作していますが、変数が操作できません.ifタグは戻り値に適合しています.戻り値はブックタイプで、var属性で設定します.
主体がない 書式: test=「条件」var=「ドメイン制限変数の名称」scope=「ドメインオブジェクトの範囲」 主体的な内容がある 書式: 条件が満たされた場合に表示される内容
書式: ... 注意: 1、choseタグとotherswiseタグには属性がありません. 属性を設定するとエラーが発生します. Attribute xxx invalid for(chose according to TLD) 2、whenラベルはtest属性が必要です. atribute test is mandtory for(when) 3、choseラベルにはwhenタグとotherswiseタグ、whenタグとotherswiseタグしか含まれていません.他のラベルが含まれています. Illagal child(in)「c:chose」 4、choseラベルの中に少なくともキスマークが必要で、otherswiseタグがなくてもいいです. IL「chose」without child「when」 5、otherswiseラベルは最後のwhenラベルの後に置かなければなりません. Illagal"c:when"after"c:otherwise" 6、otherwiseタグはすべてのwhenタグが成立しない時のみ実行されます.
本体の内容を複数回印刷します. 書式: 主な内容 反復集合 書式: 主な内容
a.forEach属性の意味は以下の通りです.
c.varStatus属性の使用:
JSTLはフォーマットと解析数字と日付のラベルを提供しています.私達の討論の中にはformatNumber、formatDate、parseNumberとparseDateがあります.
a.formatNumberラベル
このラベルは指定された書式または精度で数を書式設定します. 主体がない 書式: type:書式設定されたタイプ number:数値型 percent:パーセンテージタイプ currency:通貨の種類 value:フォーマットされた値 文字列の量や表式でフィールドオブジェクトから値を取ることができます. var:フォーマットされた結果を受信するためのドメイン制限変数 この属性が設定されていない場合、フォーマットされた結果はそのまま出力されます.var属性を設定するには、ドメインオブジェクトの値を表式で取得する必要があります.パーセンテージに書式設定すると、デフォルトでは2ビットを保持します.四捨五入します. maxIntegerDigits:最大整数ビットを許可します. maxFraction Digits:最大の小数位を許可します.
書式: value:フィールドオブジェクトから表式で値を取ることもできます. type:フォーマットされたタイプ date:日付タイプ、標準値 タイムタイプ both:日付+時間の種類
ラベルには次のような属性があります.
pattern属性はより正確な処理日を指定します.
パーrseNumberタグを使用して、数字、通貨またはパーセンテージの文字列表現を言語環境を指定する数値に解析できます.すなわち、数値、通貨、パーセンテージを表す文字列を解析します. 二つの文法形式: 主体がない 使用主体の内容
JSON(JavaScript Object Notation)は、jsのオブジェクトと配列の字面量のフォーマットに従って書きます.JSONの光環はXMLを超えています.大網駅が提供するデータインターフェースは、一般的にJSONです.サービスとクライアントのデータインタラクションに広く使われています.
1.JSONフォーマット
jquery 1.4以降はjsonフォーマットに対して厳しくなりました.つまり、必ずこのようなフォーマットが必要なのです.{キー”:“値”、“キー”:“値”、“値”、“値”のように、すべてが誤っています.標準に合わないので、jquerryがerrorに戻ります.を選択します.ブーメランタイプというなら、引用符を付けずに他のキー/値に引用符を付けます. Jsonはkey-valueとしてデータを格納する . Keyの値はStringタイプです. Valueの取得値はString、bollan、Number、配列、Object、nullです. Json串は{スタートして}で終わる. Jsonの配列は「開始」で終わる. Json串の中でObjectは{始まります}で結びます. 2.解析方式(重点)
javaのuser類
GsonはGoogleが提供するJavaライブラリであり、JavaオブジェクトをJSON表現に変換するために使用できます.JSON文字列を同等のJavaオブジェクトに変換するためにも使用できます.tostring()や構造関数(工場法)などの使いやすい仕組みを提供します.JavaをJSONに変換することは、逆もまた然りであり、任意の複雑なオブジェクトをカスタマイズして、コンパクトで読み取り可能なJSON出力を生成することができます.
JSONの串と対象の転化を重点的に把握する(Jsonはjavaオブジェクトに解析する-->JsonはListに解析する-->Jsonはmapに解析する)
Gsonのノードオブジェクト: Jsone Element:すべてのノードはJsone Element対象です. JsonPrimitive:基本的なデータタイプのノードオブジェクト、JsonElementのサブクラス. Jsonull:空のノードの対象を代表して、keyがあって、valueは空で、JsonElementのサブクラス. JsonObject:対象データタイプのノードオブジェクト、JsonElementのサブクラス. JsonAray:配列データタイプのノードオブジェクト、JsonElementのサブクラス. II)、Jsone Elementの評価: Json Primitive:valueの取得値はjavaの int、double、float、long、shot、bootlean、char、byte、String、BigDecimal、BigIセンター、Number JsonObject:valueの取得値はjavaのObjectオブジェクトに対応します. JsonAray:valueの取得値はjavaのListとそのサブオブジェクトに対応します.
解析ステップ:解像度を得る-->ルートノード要素を得る——>文書に基づいてルートノードがどのタイプのGsonノードオブジェクトに属するかを判断する-->ノードの下のあるノードのvalueを取得する.
アリババfastJsonはJson処理ツールのカバンで、「序列化」と「反序列化」の二つの部分を含んでいます.速度が一番速いという特徴があります.テストによって、fastjsonは極めて速い性能を持っています.他のJava Json parserを超えています.自称最速のJackJsonを含む.機能が強く、JavaBean、集合、Map、日付、Enumを完全にサポートし、自分をサポートします.依存なし ダウンロードパス:https://github.com/alibaba/fastjson/releases/tag/1.2.13
a.json文字列に変換
b.オブジェクトに解析する
1.Java Server Pages Standard Tag Libray(JSTL)はJSP標準ラベルライブラリである.
2.コアラベルライブラリ:http://java.sun.com/jsp/jstl/core ウェブアプリケーションの一般的な動作を含みます.例えば、サイクル、表現の割り当て、基本入出力などです.
3.ラベルライブラリのフォーマット:http://java.sun.com/jsp/jstl/fmt データを表示する作業の書式を設定します.
4.JSPページでJSTLライブラリを使用するためには、taglibコマンドは下記のフォーマットで使用しなければなりません.
例えば、プレフィクス(prefix)は任意のコンテンツであってもよく、ルールに従って、チーム内の異なる人によって作成されたコードをより類似させることができる.したがって、事前に設計されたプレフィックスを使用することを提案する.この時は二つのjarパッケージを導入する必要があります.は直接Tomcatのlibディレクトリに入ればいいです.
二.JSTLの使用
1.条件動作ラベル
JSTLには4つのラベルがあります.条件式の動作命令を実行できます.if、chose、when、otherswise.
a.ifラベル
JSTLラベルは一般的にフィールドオブジェクトを操作していますが、変数が操作できません.ifタグは戻り値に適合しています.戻り値はブックタイプで、var属性で設定します.
主体がない 書式: test=「条件」var=「ドメイン制限変数の名称」scope=「ドメインオブジェクトの範囲」 主体的な内容がある 書式: 条件が満たされた場合に表示される内容
if
${flag }
//true
${flag1 }
//false
${flag2 }
//false
${flag3 }
//true
${flag4 }
//true
${flag5 }
//false
${flag6 }
//false
${flag7 }
//false,
${flag8 }
//true
${flag9 }
//false
${flag10 }
//false
${b > 0 }//false
b.chouse、whenとotherswiseラベル 書式: ... 注意: 1、choseタグとotherswiseタグには属性がありません. 属性を設定するとエラーが発生します. Attribute xxx invalid for(chose according to TLD) 2、whenラベルはtest属性が必要です. atribute test is mandtory for(when) 3、choseラベルにはwhenタグとotherswiseタグ、whenタグとotherswiseタグしか含まれていません.他のラベルが含まれています. Illagal child(in)「c:chose」 4、choseラベルの中に少なくともキスマークが必要で、otherswiseタグがなくてもいいです. IL「chose」without child「when」 5、otherswiseラベルは最後のwhenラベルの後に置かなければなりません. Illagal"c:when"after"c:otherwise" 6、otherwiseタグはすべてのwhenタグが成立しない時のみ実行されます.
choose
, !
, !
!
, !
! !
2.反復ラベル:forEach本体の内容を複数回印刷します. 書式: 主な内容 反復集合 書式: 主な内容
a.forEach属性の意味は以下の通りです.
c.varStatus属性の使用:
forEach
${i }、
${i }、
list = new ArrayList<>();
list.add(" ");
list.add(" ");
list.add(" ");
request.setAttribute("list", list);
%>
${item }
${info.index }
${info.count }
${info.first }
${info.last }
map = new HashMap<>();
map.put("zhangsan"," , 18, ");
map.put("lisi"," , 18, ");
map.put("wangeu"," , 20, ");
map.put("admin",list);
request.setAttribute("myMap", map);
%>
${user.key } = ${user.value }
3.動作指令の書式設定JSTLはフォーマットと解析数字と日付のラベルを提供しています.私達の討論の中にはformatNumber、formatDate、parseNumberとparseDateがあります.
a.formatNumberラベル
このラベルは指定された書式または精度で数を書式設定します. 主体がない 書式: type:書式設定されたタイプ number:数値型 percent:パーセンテージタイプ currency:通貨の種類 value:フォーマットされた値 文字列の量や表式でフィールドオブジェクトから値を取ることができます. var:フォーマットされた結果を受信するためのドメイン制限変数 この属性が設定されていない場合、フォーマットされた結果はそのまま出力されます.var属性を設定するには、ドメインオブジェクトの値を表式で取得する必要があります.パーセンテージに書式設定すると、デフォルトでは2ビットを保持します.四捨五入します. maxIntegerDigits:最大整数ビットを許可します. maxFraction Digits:最大の小数位を許可します.
formatNumber
${num }
1000
${numb }
b.フォーマット日付書式: value:フィールドオブジェクトから表式で値を取ることもできます. type:フォーマットされたタイプ date:日付タイプ、標準値 タイムタイプ both:日付+時間の種類
ラベルには次のような属性があります.
pattern属性はより正確な処理日を指定します.
formatDate
${myDate }
c.パースNumberラベルパーrseNumberタグを使用して、数字、通貨またはパーセンテージの文字列表現を言語環境を指定する数値に解析できます.すなわち、数値、通貨、パーセンテージを表す文字列を解析します. 二つの文法形式: 主体がない 使用主体の内容
parseNumber
${num }
d.parseDate:指定されたフォーマットの文字列を日付の種類に変換します.
parseDate
${date1 }
${date2 }
三.JSONの初対面JSON(JavaScript Object Notation)は、jsのオブジェクトと配列の字面量のフォーマットに従って書きます.JSONの光環はXMLを超えています.大網駅が提供するデータインターフェースは、一般的にJSONです.サービスとクライアントのデータインタラクションに広く使われています.
1.JSONフォーマット
jquery 1.4以降はjsonフォーマットに対して厳しくなりました.つまり、必ずこのようなフォーマットが必要なのです.{キー”:“値”、“キー”:“値”、“値”、“値”のように、すべてが誤っています.標準に合わないので、jquerryがerrorに戻ります.を選択します.ブーメランタイプというなら、引用符を付けずに他のキー/値に引用符を付けます.
javaのuser類
package com.shsxt.po;
public class User {
private Integer userId;
private String uname;
private Integer age;
private boolean sex;
public User() {
super();
}
public User(Integer userId, String uname, Integer age, boolean sex) {
super();
this.userId = userId;
this.uname = uname;
this.age = age;
this.sex = sex;
}
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public boolean isSex() {
return sex;
}
public void setSex(boolean sex) {
this.sex = sex;
}
}
a.gsonを使って処理する(対応するパッケージを導入する)GsonはGoogleが提供するJavaライブラリであり、JavaオブジェクトをJSON表現に変換するために使用できます.JSON文字列を同等のJavaオブジェクトに変換するためにも使用できます.tostring()や構造関数(工場法)などの使いやすい仕組みを提供します.JavaをJSONに変換することは、逆もまた然りであり、任意の複雑なオブジェクトをカスタマイズして、コンパクトで読み取り可能なJSON出力を生成することができます.
JSONの串と対象の転化を重点的に把握する(Jsonはjavaオブジェクトに解析する-->JsonはListに解析する-->Jsonはmapに解析する)
Gsonのノードオブジェクト: Jsone Element:すべてのノードはJsone Element対象です. JsonPrimitive:基本的なデータタイプのノードオブジェクト、JsonElementのサブクラス. Jsonull:空のノードの対象を代表して、keyがあって、valueは空で、JsonElementのサブクラス. JsonObject:対象データタイプのノードオブジェクト、JsonElementのサブクラス. JsonAray:配列データタイプのノードオブジェクト、JsonElementのサブクラス. II)、Jsone Elementの評価: Json Primitive:valueの取得値はjavaの int、double、float、long、shot、bootlean、char、byte、String、BigDecimal、BigIセンター、Number JsonObject:valueの取得値はjavaのObjectオブジェクトに対応します. JsonAray:valueの取得値はjavaのListとそのサブオブジェクトに対応します.
package com.shsxt.test;
import static org.junit.Assert.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.junit.Test;
import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.JsonPrimitive;
import com.google.gson.reflect.TypeToken;
import com.shsxt.po.User;
public class GsonTest {
/**
* @Test
* 1、
* 2、
* 3、
* 4、 void
*/
@Test
public void test() {
fail("Not yet implemented");
}
/**
* JSON
*/
@Test
public void testObjectToJson() {
//
User user = new User(1, "zhangsan", 18, true);
/**
* String json = {"userId":1,"uname":"zhangsan","age":18,"sex":true};
*/
// gson
Gson gson = new Gson();
// JSON
String json = gson.toJson(user);
System.out.println(json);
}
/**
* JSON
*/
@Test
public void testJSONToObject(){
// JSON
String json = "{\"userId\":1,\"uname\":\"zhangsan\",\"age\":18,\"sex\":true}";
// gson
Gson gson = new Gson();
// JSON
User user = gson.fromJson(json, User.class);
System.out.println(user.getUname());
}
/**
* JSON
*/
@Test
public void testListToJson() {
//
List list = new ArrayList<>();
list.add("zhangsan");
list.add("lisi");
list.add("wangwu");
// gson
Gson gson = new Gson();
// JSON
String json = gson.toJson(list);
System.out.println(json);
List userList = new ArrayList<>();
User user = new User(1, "zhangsan", 18, true);
User user2 = new User(2, "lisi", 19, false);
User user3 = new User(3, "wangwu", 20, true);
userList.add(user);
userList.add(user2);
userList.add(user3);
// JSON
String json2 = gson.toJson(userList);
System.out.println(json2);
}
/**
* JSON
*/
@Test
public void testJsonToList() {
// json
String json = "[\"zhangsan\",\"lisi\",\"wangwu\"]";
// gson
Gson gson = new Gson();
// JSON
List list = gson.fromJson(json, new TypeToken>(){}.getType());
System.out.println(list.get(0));
}
/**
* map JSON
*/
@Test
public void testMapToJSON() {
Map map = new HashMap<>();
map.put("uname", " ");
map.put("age", 18);
map.put("sex", true);
// gson
Gson gson = new Gson();
String json = gson.toJson(map);
System.out.println(json);
}
/**
* JSON MAP
*/
@Test
public void testJSONToMap() {
String json = "{\"uname\":\" \",\"sex\":true,\"age\":18}";
// gson
Gson gson = new Gson();
Map map = gson.fromJson(json, new TypeToken
b.Jsonノード解析解析ステップ:解像度を得る-->ルートノード要素を得る——>文書に基づいてルートノードがどのタイプのGsonノードオブジェクトに属するかを判断する-->ノードの下のあるノードのvalueを取得する.
@Test
public void parse() {
String json = "{\"flag\": true,\"data\": {\"userId\":1,\"uname\": \" \",\"age\": 18,\"sex\":true }}";
//
//
JsonParser parser = new JsonParser();
//
JsonElement element = parser.parse(json);
// JSON json
JsonObject root = element.getAsJsonObject();
// flag boolean
JsonPrimitive primitive = root.getAsJsonPrimitive("flag");
//
boolean flag = primitive.getAsBoolean();
System.out.println(flag);
// data JSONObject
JsonObject data = root.getAsJsonObject("data");
//
User user = new Gson().fromJson(data, User.class);
System.out.println(user.getUname());
}
3.fastjsonを使って処理する(該当パッケージを導入する)アリババfastJsonはJson処理ツールのカバンで、「序列化」と「反序列化」の二つの部分を含んでいます.速度が一番速いという特徴があります.テストによって、fastjsonは極めて速い性能を持っています.他のJava Json parserを超えています.自称最速のJackJsonを含む.機能が強く、JavaBean、集合、Map、日付、Enumを完全にサポートし、自分をサポートします.依存なし ダウンロードパス:https://github.com/alibaba/fastjson/releases/tag/1.2.13
a.json文字列に変換
b.オブジェクトに解析する
package com.shsxt.test;
import static org.junit.Assert.*;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import com.alibaba.fastjson.JSON;
import com.shsxt.po.User;
public class FastJsonTest {
@Test
public void test() {
fail("Not yet implemented");
}
@Test
public void testToJson(){
//
User user = new User(1, "zhangsan", 18, true);
// javaBean JSON
String json1 = JSON.toJSONString(user);
System.out.println(json1);
//
List list = new ArrayList<>();
list.add("zhangsan");
list.add("lisi");
list.add("wangwu");
String json2 = JSON.toJSONString(list);
System.out.println(json2);
List userList = new ArrayList<>();
User user1 = new User(1, "zhangsan", 18, true);
User user2 = new User(2, "lisi", 19, false);
User user3 = new User(3, "wangwu", 20, true);
userList.add(user1);
userList.add(user2);
userList.add(user3);
String json3 = JSON.toJSONString(userList);
System.out.println(json3);
}
@Test
public void testToObject() {
// JSON
String json1= "{\"userId\":1,\"uname\":\"zhangsan\",\"age\":18,\"sex\":true}";
User user = JSON.parseObject(json1,User.class);
System.out.println(user.getUname());
// json
String json2 = "[\"zhangsan\",\"lisi\",\"wangwu\"]";
List list = JSON.parseArray(json2,String.class);
System.out.println(list.get(2));
String json3 = "[{\"age\":18,\"sex\":true,\"uname\":\"zhangsan\",\"userId\":1},{\"age\":19,\"sex\":false,\"uname\":\"lisi\",\"userId\":2},{\"age\":20,\"sex\":true,\"uname\":\"wangwu\",\"userId\":3}]";
List userList = JSON.parseArray(json3,User.class);
System.out.println(userList.get(1).getUname());
}
}
データを対応させるには、まずJSONオブジェクトをシリアルに変換します.package com.shsxt.web;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.alibaba.fastjson.JSON;
import com.shsxt.po.User;
@WebServlet("/test")
public class ServletTest extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
List userList = new ArrayList<>();
User user1 = new User(1, "zhangsan", 18, true);
User user2 = new User(2, "lisi", 19, false);
User user3 = new User(3, "wangwu", 20, true);
userList.add(user1);
userList.add(user2);
userList.add(user3);
String json = JSON.toJSONString(userList);
response.getWriter().write(json);
}
}