spring注解

1.注解

  • @Controller控制器定义

    和Struts1一样,Spring的Controller是Singleton的。这就意味着会被多个请求线程共享。因此,我们将控制器设计成无状态类。

    在spring 3.0中,通过@controller标注即可将class定义为一个controller类。为使spring能找到定义为controller的bean,需要在spring-context配置文件中增加如下定义:

<context:component-scan base-package="com.sxt.web"/>

注:实际上,使用@component,也可以起到@Controller同样的作用。

  • @RequestMapping

  在类前面定义,则将url和类绑定。

      在方法前面定义,则将url和类的方法绑定,如下所示:

 1 package com.sxt.web;
 2 
 3 import javax.annotation.Resource;
 4 import org.springframework.stereotype.Controller;
 5 import org.springframework.web.bind.annotation.RequestMapping;
 6 import com.sxt.service.UserService;
 7 
 8 @Controller
 9 @RequestMapping("/user.do")
10 public class UserController  {
11 
12     @Resource
13     private UserService userService;
14     
15     //http://localhost:8080/springmvc02/user.do?method=reg&uname=zzzz
16     @RequestMapping(params="method=reg") 
17     public String reg(String uname) {
18         System.out.println("HelloController.handleRequest()");
19         userService.add(uname); 
20         return "index";
21     }
22     
23     public UserService getUserService() {
24         return userService;
25     }
26     public void setUserService(UserService userService) {
27         this.userService = userService;
28     }
31 }
  • @RequestParam 

    一般用于将指定的请求参数付给方法中形参。示例代码如下:

1 @RequestMapping(params="method=reg5")
2     public String reg5(@RequestParam("name")String uname,ModelMap map) { 
3         System.out.println("HelloController.handleRequest()");
4         System.out.println(uname); 
5         return "index";
6     }

  这样,就会将name参数的值付给uname。当然,如果请求参数名称和形参名称保持一致,则不需要这种写法。

  • @SessionAttributes

      将ModelMap中指定的属性放到session中。示例代码如下:

 1 @Controller
 2 @RequestMapping("/user.do")
 3 @SessionAttributes({"u","a"})   //将ModelMap中属性名字为u、a的再放入session中。这样,request和session中都有了。
 4 public class UserController  {
 5     @RequestMapping(params="method=reg4")
 6     public String reg4(ModelMap map) {          System.out.println("HelloController.handleRequest()");
 7         map.addAttribute("u","uuuu");  //将u放入request作用域中,这样转发页面也可以取到这个数据。
 8         return "index";
 9     }
10 }
1 <body>
2    <h1>**********${requestScope.u.uname}</h1>
3    <h1>**********${sessionScope.u.uname}</h1>
4   </body>

  注:名字为”user”的属性再结合使用注解@SessionAttributes可能会报错。

  • @ModelAttribute

      这个注解可以跟@SessionAttributes配合在一起用。可以将ModelMap中属性的值通过该注解自动赋给指定变量。

    示例代码如下:

 1 package com.sxt.web;
 2 import javax.annotation.Resource;
 3 import org.springframework.stereotype.Controller;
 4 import org.springframework.ui.ModelMap;
 5 import org.springframework.web.bind.annotation.ModelAttribute;
 6 import org.springframework.web.bind.annotation.RequestMapping;
 7 import org.springframework.web.bind.annotation.SessionAttributes;
 8 @Controller
 9 @RequestMapping("/user.do")
10 @SessionAttributes({"u","a"})  
11 public class UserController  {
12     
13     @RequestMapping(params="method=reg4")
14     public String reg4(ModelMap map) {
15         System.out.println("HelloController.handleRequest()");
16         map.addAttribute("u","尚学堂高淇");
17         return "index";
18     }
19     
20     @RequestMapping(params="method=reg5")
21 public String reg5(@ModelAttribute("u")String uname ,ModelMap map) { 
22         System.out.println("HelloController.handleRequest()");
23         System.out.println(uname); 
24         return "index";
25     }
26     
27 }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏飞扬的花生

jsencrypt参数前端加密c#解密

      写程序时一般是通过form表单或者ajax方式将参数提交到服务器进行验证,如何防止提交的请求不被抓包后串改,虽然无法说绝对安全却给非法提交提高了难度...

3859
来自专栏我和未来有约会

Silverlight第三方控件专题

这里我收集整理了目前网上silverlight第三方控件的专题,若果有所遗漏请告知我一下。 名称 简介 截图 telerik 商 RadC...

4025
来自专栏陈仁松博客

ASP.NET Core 'Microsoft.Win32.Registry' 错误修复

今天在发布Asp.net Core应用到Azure的时候出现错误InvalidOperationException: Cannot find compilati...

4848
来自专栏hbbliyong

WPF Trigger for IsSelected in a DataTemplate for ListBox items

<DataTemplate DataType="{x:Type vm:HeaderSlugViewModel}"> <vw:HeaderSlug...

4064
来自专栏魂祭心

原 canvas绘制clock

4064
来自专栏芋道源码1024

熔断器 Hystrix 源码解析 —— 断路器 HystrixCircuitBreaker

本文主要基于 Hystrix 1.5.X 版本 1. 概述 2. HystrixCircuitBreaker 3. HystrixCircuitBreaker....

5297
来自专栏张善友的专栏

Miguel de Icaza 细说 Mix 07大会上的Silverlight和DLR

Mono之父Miguel de Icaza 详细报道微软Mix 07大会上的Silverlight和DLR ,上面还谈到了Mono and Silverligh...

2707
来自专栏一个爱瞎折腾的程序猿

sqlserver使用存储过程跟踪SQL

USE [master] GO /****** Object: StoredProcedure [dbo].[sp_perfworkload_trace_s...

2060
来自专栏pangguoming

Spring Boot集成JasperReports生成PDF文档

由于工作需要,要实现后端根据模板动态填充数据生成PDF文档,通过技术选型,使用Ireport5.6来设计模板,结合JasperReports5.6工具库来调用渲...

1.2K7
来自专栏杨龙飞前端

scrollto 到指定位置

2494

扫码关注云+社区