用注解取代配置文件可降低编程是不必要的麻烦和错误。
@Controller 控制器定义
在一个class的上面写上@controller声明此类为控制器类。在配置中*.dispatcher.xml里定义<context:component-scan base-package="com.song" />
*.dispatcher.xml则会自己主动扫描com.song以下的每一个文件,当发现@Controller注解的文件时。会将该类转换为bean。@Controller与@@Component有相同的作用。
比方:![](//img-blog.csdn.net/20160422092822507?</p><p>watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
@RequestMapping 映射定义
定义在类的前面,将url与类绑定。
如:![](//img-blog.csdn.net/20160422093141824?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
定义在方法前面,将url与方法绑定。
如:![](//img-blog.csdn.net/20160422093424087?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
@RequestMapping还能够限定进入该方法的方式
如:![](//img-blog.csdn.net/20160422095126960?</p><p>watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
声明该方法仅仅能通过GET请求进入。
@PathVariable与@RequestParam 绑定URL參数
这里把两个注解仿在一起讲,由于作用很相近。
@RequestParam 将url上传递过来的參数绑定在形參上。
如:![](//img-blog.csdn.net/20160422095248025?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
url 能够写成
就能把?
后的name绑定在形參name里使用。
@PathVariable 将rest风格的url上的參数绑定在形參上
如:![](//img-blog.csdn.net/20160422100110489?</p><p>watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
【注】@RequestMapping("index/{name}")
从Spring3.0后增加了rest风格,就像这样
通过在@PathVariable路径上写上參数的名字。就能够将浏览器上写在方法映射后的參数绑定在形參上。【注】{...}的的名称要与形參的名称一样。假设在@PathVariable后声明了接受參数的名称则形參名称可自己定义。而且通过绑定的參数能够直接通过EL在页面获得。
@SessionAttribute与@ModelAttribute
@SessionAttribute 使模型对象的属性拥有session的作用域
如:![](//img-blog.csdn.net/20160422111103598?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
将ModelMap中名为u的属性放入session中,这个属性能够跨请求訪问。【注】@SessionAttribute还能够声明一个数组
在默认的情况下,@ModelAttribute中的属性是保存在request中的。这导致本次请求结束后@ModelAttribute将会被销毁。所以配合@SessionAttribute使用,将@ModelAttribute的属性绑定在@SessionAttribute上,就可以实现@ModelAttribute的跨请求訪问。