Spring中的注解
来源:互联网 发布:80卡盟主站域名填什么 编辑:程序博客网 时间:2024/04/29 03:32
@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和类的方法绑定,如下所示:
package com.sxt.web;
import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.sxt.service.UserService;
@Controller
@RequestMapping("/user.do")
public class UserController {
@Resource
private UserServiceuserService;
//http://localhost:8080/springmvc02/user.do?method=reg&uname=zzzz
@RequestMapping(params="method=reg")
public String reg(String uname) {
System.out.println("HelloController.handleRequest()");
userService.add(uname);
return"index";
}
public UserService getUserService() {
returnuserService;
}
publicvoid setUserService(UserService userService) {
this.userService = userService;
}
}
@RequestParam
一般用于将指定的请求参数付给方法中形参。示例代码如下:
@RequestMapping(params="method=reg5")
public String reg5(@RequestParam("name")String uname,ModelMap map) {
System.out.println("HelloController.handleRequest()");
System.out.println(uname);
return"index";
}
这样,就会将name参数的值付给uname。当然,如果请求参数名称和形参名称保持一致,则不需要这种写法。
@SessionAttributes
将ModelMap中指定的属性放到session中。示例代码如下:
@Controller
@RequestMapping("/user.do")
@SessionAttributes({"u","a"}) //将ModelMap中属性名字为u、a的再放入session中。这样,request和session中都有了。
public class UserController {
@RequestMapping(params="method=reg4")
public String reg4(ModelMap map) { System.out.println("HelloController.handleRequest()");
map.addAttribute("u","uuuu"); //将u放入request作用域中,这样转发页面也可以取到这个数据。
return"index";
}
}
<body>
<h1>**********${requestScope.u.uname}</h1>
<h1>**********${sessionScope.u.uname}</h1>
</body>
注:名字为”user”的属性再结合使用注解@SessionAttributes可能会报错。
@ModelAttribute
这个注解可以跟@SessionAttributes配合在一起用。可以将ModelMap中属性的值通过该注解自动赋给指定变量。
示例代码如下:
package com.sxt.web;
import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.SessionAttributes;
@Controller
@RequestMapping("/user.do")
@SessionAttributes({"u","a"})
public class UserController {
@RequestMapping(params="method=reg4")
public String reg4(ModelMap map) {
System.out.println("HelloController.handleRequest()");
map.addAttribute("u","尚学堂高淇");
return"index";
}
@RequestMapping(params="method=reg5")
public String reg5(@ModelAttribute("u")String uname,ModelMap map) {
System.out.println("HelloController.handleRequest()");
System.out.println(uname);
return"index";
}
}
先调用reg4方法,再调用reg5方法。我们发现控制台打印出来:尚学堂高淇
- Spring MVC 中的注解
- Spring中的注解
- Spring中的注解
- spring中的各种注解
- 浅析Spring中的注解
- spring中的注解
- Spring中的注解
- 了解Spring中的注解
- Spring中的注解浅析!!
- Spring Boot中的注解
- spring中的注解
- spring中的注解
- spring中的注解
- Spring Boot中的注解
- spring中的@Qualifier注解
- spring中的注解
- Spring中的@scope注解
- spring中的注解关键字
- android 常用的功能
- 5种排序方式
- Java Calendar使用指南
- 拖拽效果集
- 用JQuery实现全屏banner
- Spring中的注解
- mysql优化
- mvc controller 解析上传的中文数据总是乱码问题
- 数据结构-图
- 我在学习程序中遇到的问题!
- 批量删除Maven中失败的下载项
- Android开发之ExpandableListView: 可展开的ListView
- warning The transaction log file is corrupted.
- Server Tomcat v6.0 Server at localhost was unable to start within 40 seconds.