spring注解
时间:2022-05-04
本文章向大家介绍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 }
- Java同步问题面试知识学习
- Android UI控件系列:LinearLayout(线性布局)
- 使用操作符重载,生成ORM实体类的SQL条件语句
- Dance In Heap(四):一些堆利用的方法(下)
- Mac系统的Proton恶意软件:卷!土!重!来!
- Erlang语言学习入门
- Android使用Ant进行apk多渠道打包
- Dance In Heap(三):一些堆利用的方法(中)
- Android性能优化篇:使用软引用和弱引用
- 使用泛型委托,构筑最快的通用属性访问器
- 记录容易忘记的方法
- 无需重新编译代码,在线修改表单
- 使用反射+缓存+委托,实现一个不同对象之间同名同类型属性值的快速拷贝
- 结构变量作为方法的参数调用,在方法内部使用的“坑”你遇到过吗?
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Selenium4 IDE新特性:弹性测试、循环和逻辑判断
- Go 字符串处理
- Golang 特殊类型
- IntelliJ中基于文本的HTTP客户端
- Pytorch转Msnhnet模型思路分享
- Go socket实现多语言间通信
- Golang不同类型比较
- 牛逼!Intellij IDEA竟然有个功能可自动生成代码,你用过没?
- 导出mysql表结构生成grpc需要的proto文件工具
- 尤大 3 天前发在 GitHub 上的 vue-lit 是啥?
- 微信小程序客服消息功能 php
- CVPR 2020 在频域中学习的DCTNet
- 微信小程序发送模板消息
- Golang 下载文件
- layui省市区三级联动插件