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

SpringMVC入门之三:控制器&模型

2017-02-20 12:02 302 查看

编写基本的控制器

在SpringMVC中,控制器只是方法上添加了@Controller注解的类,这个注解声明了他们所要处理的请求。下面是一个简单的小例子

HomeController:
package spittr.web;
@Controller                              //声明这是一个控制器
public class HomeController{
@RequestMapping(value="/",method=GET)  //处理对“/”的GET请求
public String home(){
return "home";                       //视图名为
}
}


这个控制器要处理对“/”的请求,并渲染应用的首页,这可能是最简单的控制器了。

@Controller注解

@Controller是一个构造型的注解,它基于@Component注解,在这里,它的目的就是辅助实现组件扫描。因为HomeController带有@Controller注解,因此组件扫描器会自动找到HomeController,并将其声明为Spring应用上下文中的一个bean。

@Controller注解在功能上和@Component一致,实际上我们可以将@Controller替换为@Component,这样的效果是一样的,但是在表意性上会差一些,无法确定HomeController是什么组件类型。

@RequestMapping注解

@RequestMapping注解的value属性制定了这个方法所要处理的请求路径,method属性细化了它所处理的HTTP方法。这个方法直接返回了String类型的”home”,DispatcherServlet会要求视图解析器把这个视图名解析为视图。根据我们配置InternalResourceViewResolver的方式,视图名“home”将会解析为“/WEB-INF/views/home.jsp”路径的JSP。

定义类级别的请求处理

package spittr.web;
@Controller
@RequestMapping("/")          //定义在类上的请求路径
public class HomeController{

@RequestMapping(method=GET)
public String home(){
return "home";
}
}


当控制器在类级别上添加@RequestMapping注解时,这个注解会应用到控制器的所有处理器方法上。@RequestMapping的value属性能够接受一个String类型的数组,我们可以给它添加多个映射,如:

package spittr.web;
@Controller
@RequestMapping({"/","/homepage"})          //定义在类上的请求路径
public class HomeController{

@RequestMapping(method=GET)
public String home(){
return "home";
}
}


传递模型数据到视图中

Model是什么

Model实际上就是一个Map(也就是key-value对的集合),它会传递给视图,这样数据就能渲染到客户端了。在控制器中,需要返回的数据被装填到了Model类型的属性——model中,并且被带给了相应的视图。

JSP中获取模型数据

数据已经放到了模型当中之后,在JSP中应该如何访问它呢?实际上,当视图是JSP的时候,模型数据会作为请求属性放到请求(request)中。因此,在JSP文件中可以使用JSTL(JavaServer Pages Standard Tag Library)的
<c:foreach>
标签渲染列表输出,如:

<c:froEach items="${spittleList}" var="spittle">
......
</c:forEach>


上一篇:SpringMVC入门之二:配置及启用SpringMVC(基于JAVA配置)

下一篇:SpringMVC入门之四:接收请求的输入
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: