十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
這篇文章將為大家詳細(xì)講解有關(guān)如何在Spring中使用SpEl語(yǔ)法,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
成都創(chuàng)新互聯(lián)長(zhǎng)期為數(shù)千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為文水企業(yè)提供專業(yè)的成都網(wǎng)站建設(shè)、做網(wǎng)站,文水網(wǎng)站改版等技術(shù)服務(wù)。擁有10年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
一 Bean
package org.crazyit.app.domain; import java.util.Date; public class Person { private Integer id; private String name; private int height; public Person() { } // 初始化全部成員變量的構(gòu)造器 public Person(Integer id , String name , int height) { this.id = id; this.name = name; this.height = height; } // id的setter和getter方法 public void setId(Integer id) { this.id = id; } public Integer getId() { return this.id; } // name的setter和getter方法 public void setName(String name) { this.name = name; } public String getName() { return this.name; } // height的setter和getter方法 public void setHeight(int height) { this.height = height; } public int getHeight() { return this.height; } }
二 測(cè)試類
package lee; import org.springframework.expression.*; import org.springframework.expression.spel.standard.*; import org.springframework.expression.spel.support.*; import org.springframework.expression.common.TemplateParserContext; import java.util.*; import org.crazyit.app.domain.*; public class SpELTest { public static void main(String[] args) { // 創(chuàng)建一個(gè)ExpressionParser對(duì)象,用于解析表達(dá)式 ExpressionParser parser = new SpelExpressionParser(); // 使用直接量表達(dá)式 Expression exp = parser.parseExpression("'Hello World'"); System.out.println(exp.getValue(String.class)); exp = parser.parseExpression("0.23"); System.out.println(exp.getValue(Double.class)); System.out.println("---------------------------------------------"); //------------使用SpEL創(chuàng)建數(shù)組----------- // 創(chuàng)建一個(gè)數(shù)組 exp = parser.parseExpression( "new String[]{'java' , 'Struts' , 'Spring'}"); System.out.println(exp.getValue()); // 創(chuàng)建二維數(shù)組 exp = parser.parseExpression( "new int[2][4]"); System.out.println(exp.getValue()); System.out.println("---------------------------------------------"); //------------使用SpEL創(chuàng)建List集合----------- exp = parser.parseExpression( "{'java' , 'Struts' , 'Spring'}"); System.out.println(exp.getValue()); // 創(chuàng)建“二維”List集合 exp = parser.parseExpression( "{{'瘋狂Java講義' , '瘋狂Android講義'}, {'左傳' , '戰(zhàn)國(guó)策'}}"); System.out.println(exp.getValue()); System.out.println("---------------------------------------------"); //------------使用SpEL訪問(wèn)List集合、Map集合的元素----------- Listlist = new ArrayList (); list.add("Java"); list.add("Spring"); Map map = new HashMap (); map.put("Java" , 80.0); map.put("Spring" , 89.0); // 創(chuàng)建一個(gè)EvaluationContext對(duì)象,作為SpEL解析變量的上下文 EvaluationContext ctx = new StandardEvaluationContext(); // 設(shè)置兩個(gè)變量 ctx.setVariable("mylist" , list); ctx.setVariable("mymap" , map); // 訪問(wèn)List集合的第二個(gè)元素 System.out.println(parser .parseExpression("#mylist[1]").getValue(ctx)); // 訪問(wèn)Map集合的指定元素 System.out.println(parser .parseExpression("#mymap['Java']").getValue(ctx)); System.out.println("---------------------------------------------"); //------------使用SpEL調(diào)用方法----------- // 調(diào)用String對(duì)象的substring()方法 System.out.println(parser .parseExpression("'HelloWorld'.substring(2, 5)") .getValue()); list = new ArrayList (); list.add("java"); list.add("struts"); list.add("spring"); list.add("hibernate"); // 創(chuàng)建一個(gè)EvaluationContext對(duì)象,作為SpEL解析變量的上下文 ctx = new StandardEvaluationContext(); // 設(shè)置一個(gè)變量 ctx.setVariable("mylist" , list); // 調(diào)用指定變量所代表的對(duì)象的subList()方法 System.out.println(parser .parseExpression("#mylist.subList(1, 3)").getValue(ctx)); System.out.println("---------------------------------------------"); //------------在SpEL中使用運(yùn)算符----------- list = new ArrayList (); list.add("java"); list.add("struts"); list.add("spring"); list.add("hibernate"); // 創(chuàng)建一個(gè)EvaluationContext對(duì)象,作為SpEL解析變量的上下文 ctx = new StandardEvaluationContext(); // 設(shè)置一個(gè)變量 ctx.setVariable("mylist" , list); // 對(duì)集合的第一個(gè)元素進(jìn)行賦值 parser.parseExpression("#mylist[0]='瘋狂Java講義'") .getValue(ctx); // 下面將輸出 瘋狂Java講義 System.out.println(list.get(0)); // 使用三目運(yùn)算符 System.out.println(parser.parseExpression("#mylist.size()>3?" + "'myList長(zhǎng)度大于3':'myList長(zhǎng)度不大于3'") .getValue(ctx)); System.out.println("---------------------------------------------"); //------------在SpEL中使用類型運(yùn)算符----------- //調(diào)用Math的靜態(tài)方法 System.out.println(parser.parseExpression( "T(java.lang.Math).random()").getValue()); //調(diào)用Math的靜態(tài)方法 System.out.println(parser.parseExpression( "T(System).getProperty('os.name')").getValue()); System.out.println("---------------------------------------------"); //------------在SpEL中調(diào)用構(gòu)造器----------- // 創(chuàng)建對(duì)象 System.out.println(parser.parseExpression( "new String('HelloWorld').substring(2, 4)") .getValue()); // 創(chuàng)建對(duì)象 System.out.println(parser.parseExpression( "new javax.swing.JFrame('測(cè)試')" + ".setVisible('true')").getValue()); System.out.println("---------------------------------------------"); //------------在SpEL中使用安全導(dǎo)航操作----------- // 使用安全操作,將輸出null System.out.println("----" + parser.parseExpression( "#foo?.bar").getValue()); // 不使用安全操作,將引發(fā)NullPointerException // System.out.println(parser.parseExpression( // "#foo.bar").getValue()); System.out.println("---------------------------------------------"); //------------在SpEL中對(duì)集合進(jìn)行選擇----------- list = new ArrayList (); list.add("瘋狂Java講義"); list.add("瘋狂Ajax講義"); list.add("瘋狂iOS講義"); list.add("經(jīng)典Java EE企業(yè)應(yīng)用實(shí)戰(zhàn)"); // 創(chuàng)建一個(gè)EvaluationContext對(duì)象,作為SpEL解析變量的上下文 ctx = new StandardEvaluationContext(); ctx.setVariable("mylist" , list); // 判斷集合元素length()方法的長(zhǎng)度大于7,“瘋狂iOS講義”被剔除 Expression expr = parser.parseExpression ("#mylist.?[length()>7]"); System.out.println(expr.getValue(ctx)); map = new HashMap (); map.put("Java" , 89.0); map.put("Spring" , 82.0); map.put("英語(yǔ)" , 75.0); ctx.setVariable("mymap" , map); // 判斷Map集合的value值大于80,只保留前面2個(gè)Entry expr = parser.parseExpression ("#mymap.?[value>80]"); System.out.println(expr.getValue(ctx)); System.out.println("---------------------------------------------"); //------------在SpEL中對(duì)集合進(jìn)行投影----------- list = new ArrayList (); list.add("瘋狂Java講義"); list.add("瘋狂Ajax講義"); list.add("瘋狂iOS講義"); list.add("經(jīng)典Java EE企業(yè)應(yīng)用實(shí)戰(zhàn)"); // 創(chuàng)建一個(gè)EvaluationContext對(duì)象,作為SpEL解析變量的上下文 ctx = new StandardEvaluationContext(); ctx.setVariable("mylist" , list); // 得到的新集合的元素是原集合的每個(gè)元素length()方法返回值 expr = parser.parseExpression ("#mylist.![length()]"); System.out.println(expr.getValue(ctx)); List list2 = new ArrayList (); list2.add(new Person(1, "孫悟空" , 162)); list2.add(new Person(2, "豬八戒" , 182)); list2.add(new Person(3, "牛魔王" , 195)); ctx.setVariable("mylist2" , list2); // 得到的新集合的元素是原集合的每個(gè)元素name屬性值 expr = parser.parseExpression ("#mylist2.![name]"); System.out.println(expr.getValue(ctx)); System.out.println("---------------------------------------------"); //------------在SpEL中使用表達(dá)式模板----------- Person p1 = new Person(1, "孫悟空" , 162); Person p2 = new Person(2, "豬八戒" , 182); expr = parser.parseExpression( "我的名字是#{name},身高是#{height}" , new TemplateParserContext()); // 將使用p1對(duì)象name、height填充上面表達(dá)式模板中的#{} System.out.println(expr.getValue(p1)); // 將使用p2對(duì)象name、height填充上面表達(dá)式模板中的#{} System.out.println(expr.getValue(p2)); } }
三 測(cè)試結(jié)果
Hello World
0.23
---------------------------------------------
[Ljava.lang.String;@2c13da15
[[I@77556fd
---------------------------------------------
[java, Struts, Spring]
[[瘋狂Java講義, 瘋狂Android講義], [左傳, 戰(zhàn)國(guó)策]]
---------------------------------------------
Spring
80.0
---------------------------------------------
llo
[struts, spring]
---------------------------------------------
瘋狂Java講義
myList長(zhǎng)度大于3
---------------------------------------------
0.5577767377702313
Windows 10
---------------------------------------------
ll
null
---------------------------------------------
----null
---------------------------------------------
[瘋狂Java講義, 瘋狂Ajax講義, 經(jīng)典Java EE企業(yè)應(yīng)用實(shí)戰(zhàn)]
{Java=89.0, Spring=82.0}
---------------------------------------------
[8, 8, 7, 15]
[孫悟空, 豬八戒, 牛魔王]
---------------------------------------------
我的名字是孫悟空,身高是162
我的名字是豬八戒,身高是182
關(guān)于如何在Spring中使用SpEl語(yǔ)法就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。