您的位置:首页 > 编程语言 > Java开发

[学习笔记]基于注解的spring3.0.x MVC学习笔记(四)

2011-01-03 23:42 465 查看
好久没有更新关于spring3.0.x的学习笔记了,这笔记除了平时工作上用的代码之外还有部分代码是根据我的老师学习下来后我再重新理解所整理的,接着上期第三部分的内容:

上次写到了requestMapping对返回集合的用法,使用集合返回的话则需要根据requestmapping中values的值进行命名jsp页面,而整个路径地址是根据视图模型的返回地址来确定.这次主要介绍的是返回类型为Model,List.Collection,Set,Object,先看返回类型为Model,代码如下:
/**
*@see返回一个Model接口.通过创建ExtendedModelMap可以使用,方法同modelMap一样
**/
@RequestMapping("/model")
publicModelmodel(){
Modelmodel=newExtendedModelMap();
model.addAllAttributes(temp());
returnmodel;

}


temp方法代码如下:

/**

[code]*@see临时类
*@return返回一个map类型

**/

publicMap<String,UserBean>temp(){

Map<String,UserBean>map1=newHashMap<String,UserBean>();

UserBeanbean=newUserBean();

bean.setId(1);

bean.setUsername("EdwardLau");

bean.setPassword("edward");

map1.put("user",bean);

//map1.put("hello","worldkey");

UserBeanbean1=newUserBean();

bean1.setId(2);

bean1.setUsername("EdwardLau2");

bean1.setPassword("edward");

map1.put("user1",bean1);

System.out.println(map1);

returnmap1;

}

[/code]

通过model的addAllAttributes可以把一个map集合的内容放到model对象中,通过jsp中读取指定的数据,相当于读取request.getAttributes一样

jsp代码如下图:





效果如下图:





对于List,Collection,Set这3种类型返回的方式都是根据requestmapping的value标记进行读取指定页面,但是在jsp页面中读取方式值的方式相对有些不同,首先是对List:

对于List代码只是把返回类型改为了List之外,在jsp中我们需要根据代码第一个add的数据类型进行保存,代码如下:

/**

[code]*@see返回集合类型的默认名称默认值为:第一个存入对象的Object.getClass().getSimpleName()+List组成
*@see返回list集合的话可以使用request.getAttribute(默认值)取出值,或者使用el表达式${默认值}

*<b>如果需要取某一个序列的话可以使用${默认值[下标]}</b>

**/

@RequestMapping("/list")

publicListlistReturn(){

Listtoys=newArrayList();

toys.add("gg5555555");

toys.add(newUserBean(1,"a","b"));

toys.add(newUserBean(2,"PSP","2100"));


returntoys;

}

[/code]

对应的jsp如下图:





其中1显示的是集合第1个元素的内容,从代码上看下标元素为1的对象是UserBean,但是在前台调用request.getAttribute方法是根据list第一个add元素的clasas类型的simplename+上集合类型名字组成的,效果如下图:





对于Set来说,由于Set也是属于集合的一种所以读取方式也是根据List一样.

对于Collection他则有点特别他是根据返回所属Collection的类型来决定的,代码如下:

@RequestMapping("/collection")

[code]publicCollectioncollection(){
logger.info("collectionisruning");

//returntemp().values();

Listtoys=newArrayList();

toys.add("gg5555555");

toys.add(newUserBean(1,"a","b"));

toys.add(newUserBean(2,"PSP","2100"));


returnCollections.singletonList(toys);

}

[/code]

如果返回的集合类型是list的话该Collection而没有定义泛型的话则以返回的list的实例对象作为命名的modeltype则arrayList+List,对应的jsp如下:


<%@pagelanguage="java"contentType="text/html;charset=UTF-8"

[code]pageEncoding="UTF-8"%>
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">

<%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%>


<%@pageimport="java.util.List"%><html>

<head>

<metahttp-equiv="Content-Type"content="text/html;charset=UTF-8">

<title>Collection</title>

</head>

<body>


姓名:${arrayListList}

<c:forEachvar="user"items="${arrayListList}"><br>

${user[0]}<br>

${user[1].username}<br>

${user[1].password}<br>

</c:forEach>



</body>

</html>

[/code]

这样可以得到结果如下图:





如果返回类型是List并且有定义泛型的话则以泛型名字+List进行返回,Set集合效果同List一样.

对于返回Object类型的话则按照创新的对象类型返回指定的modeltype代码如下:

/**

[code]*@see返回对象在页面中以${返回对象名称}取值,返回
*@returnObject返回对象的类型,如返回Userbean则输入返回的对象为Userbean

**/

@RequestMapping("/object")

publicObjectobject(){

returnnewUserBean(1,"a","b");

}

[/code]

对应的jsp与效果如下图:







内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: