SpringMVC的常用注解(四)上

简介: SpringMVC的常用注解(四)

一. @Repository 属性


@Target({java.lang.annotation.ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Repository
{
  String value() default "";
}


如 @Controller 用在 Action 层, @Repository 常常用在 Dao层。 只有一个 value的属性。


@Repository
public class UserDaoImpl implements UserDao{
}


也可以添加value 来指定实例。


@Repository(value="userDao")
public class UserDaoImpl implements UserDao{
}


也可以省略value.


@Repository(value="userDao")
public class UserDaoImpl implements UserDao{
}


二. @Service 属性


@Target({java.lang.annotation.ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Service
{
  String value() default "";
}


常常用在 Service 业务层中。 与@Repository 用法一一致。


@Service(value="userService")
public class UserServiceImpl implements UserService{
}


三. @RequestBody


@Target({java.lang.annotation.ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RequestBody
{
  boolean required() default true;
}


@RequestBody ,是将HTTP 中请求体的正文插入到方法中。 作用在方法的参数上。


三.一 运行过程:


1 . 该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上;


2 . 再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上。


三.二 类型提交


常见的表单方式的 的Get 和POST 提交时, 会根据请求头的Content-Type 类型进行相应的判断。


提交类型为 application/x-www-form-urlencoded 时, 即form 表单的默认形式, 这个时候,可以用@RequestBody 来处理,也可以通过前面的 @RequestParam 和@ModelAttribute 来获取。 可注解,也可以不注解。


提交类型为 multipart/form-data, 即二进制的,如上传图片的,这个时候,@RequestBody 处理不了。


提交类型为 application/json, 即json形式时, 必须用@RequestBody 来进行处理。 也必须要注解。


常常是 前端传入 json 对象时,进行相应的解析,解析成字符串。 JSON的处理,会有专门的章节来讲解。


如果请求方式是 PUT 形式时,


提交类型为 application/x-www-form-urlencoded 时, 即form 表单的默认形式,必须添加。


提交类型为 multipart/form-data, 即二进制的,如上传图片的,这个时候,@RequestBody 处理不了。


提交类型为 application/json, 即json形式时, 必须用@RequestBody 来进行处理。 也必须要注解。


三.三 数据填充


如果是单个值的话


@RequestMapping(value="/register")
  public String register(@RequestBody String name){
    System.out.println("接收名称:"+name);
    return "user/list";
  }


如果是多个值的话


@RequestMapping(value="/register")
  public String register(@RequestBody String name,
       Integer age,
        String sex,
       String description){
    System.out.println("接收名称:"+name);
    System.out.println("接收年龄:"+age);
    System.out.println("接收性别:"+sex);
    System.out.println("接收描述:"+description);
    return "user/list";
  }


注意,只能用一个@RequestBody ,不能每一个参数都写上。

这样写,是错误的。


@RequestMapping(value="/register")
  public String register(@RequestBody String name,
       @RequestBody Integer age,
        @RequestBody String sex,
       @RequestBody String description){
    System.out.println("接收名称:"+name);
    System.out.println("接收年龄:"+age);
    System.out.println("接收性别:"+sex);
    System.out.println("接收描述:"+description);
    return "user/list";
  }



相关文章
|
18天前
|
前端开发 Java Spring
Spring MVC 是如何对对象参数进行校验的
【6月更文挑战第4天】对象参数校验是使用 SpringMVC 时常用的功能,这篇文章尝试分析了,Spring 是如何实现这一功能的。
29 5
|
19天前
|
Web App开发 前端开发 Java
基于Spring3 MVC实现基于HTML form表单文件上传
基于Spring3 MVC实现基于HTML form表单文件上传
23 7
基于Spring3 MVC实现基于HTML form表单文件上传
|
2天前
|
安全 前端开发 Java
挑战5分钟内基于Springboot+SpringMVC+Mybatis-plus快速构建web后端三层架构
挑战5分钟内基于Springboot+SpringMVC+Mybatis-plus快速构建web后端三层架构
8 1
|
5天前
|
设计模式 前端开发 Java
【Spring MVC】快速学习使用Spring MVC的注解及三层架构
【Spring MVC】快速学习使用Spring MVC的注解及三层架构
11 1
|
5天前
|
前端开发 Dubbo Java
spring面试题_spring mvc面试题_springboot面试题库
spring面试题_spring mvc面试题_springboot面试题库
|
7天前
|
JSON 前端开发 Java
【JavaEE进阶】 关于Spring MVC 响应
【JavaEE进阶】 关于Spring MVC 响应
14 3
|
8天前
|
缓存 NoSQL Java
在 SSM 架构(Spring + SpringMVC + MyBatis)中,可以通过 Spring 的注解式缓存来实现 Redis 缓存功能
【6月更文挑战第18天】在SSM(Spring+SpringMVC+MyBatis)中集成Redis缓存,涉及以下步骤:添加Spring Boot的`spring-boot-starter-data-redis`依赖;配置Redis连接池(如JedisPoolConfig)和连接工厂;在Service层使用`@Cacheable`注解标记缓存方法,指定缓存名和键生成策略;最后,在主配置类启用缓存注解。通过这些步骤,可以利用Spring的注解实现Redis缓存。
26 2
|
19天前
|
前端开发 IDE Java
Spring3 MVC 集成Velocity中文支持
Spring3 MVC 集成Velocity中文支持
35 7
|
19天前
|
前端开发 Java BI
Spring3 Web MVC 集成Jasper Report生成PDF例子
Spring3 Web MVC 集成Jasper Report生成PDF例子
30 7
|
16天前
|
JSON 前端开发 Java
Spring MVC 级联对象参数校验
【6月更文挑战第6天】在 Spring MVC 的使用过程中,我们会发现很多非常符合直觉的功能特性,但往往我们会习惯这种「被照顾得很好」的开发方式,依靠直觉去判断很多功能特性的用法。
18 1