首页系统综合问题spring中ResponseBody注解和RequestBody注解区别

spring中ResponseBody注解和RequestBody注解区别

时间2023-02-06 20:19:02发布分享专员分类系统综合问题浏览243

今天小编给各位分享response的知识,文中也会对其通过spring中ResponseBody注解和RequestBody注解区别和springBoot @RequestBody 写在方法上与写在参数上的区别?等多篇文章进行知识讲解,如果文章内容对您有帮助,别忘了关注本站,现在进入正文!

内容导航:

  • spring中ResponseBody注解和RequestBody注解区别
  • springBoot @RequestBody 写在方法上与写在参数上的区别?
  • spring常用注解
  • @ResponseBody这个在spring注解是什么意思啊
  • 一、spring中ResponseBody注解和RequestBody注解区别

    在Spring中使用@ResponseBody注解可以将方法返回的对象序列化成JSON,

    将返回的对象转成json字符串返回, 与下面的@ResponseBody注解功能相反.

    在Controller方法中,可以使用@RequestBody将提交的JSON自动映射到方法参数上

    @RequestMapping("user")@ResponseBodypublic void User(@RequestBody User user){ }

    将下面的json映射到上面的User对象中

    {"userName":"mrbird","age":26}

    一、springBoot @RequestBody 写在方法上与写在参数上的区别?

    1. @Controller
    控制层组件,定义一个springMVC的控制器类,往往需要和@RequestMapping配合使用。
    2. @RestController
    相当于@ResponseBody+@Controller合在一起的作用。
    3. @Service
    服务层组件,用于标注业务层组件,表示定义一个bean,自动根据bean的类名实例化一个首写字母为小写的bean,也可以指定bean的名称:@Service(“beanName”)。
    4. @Repository
    持久层组件,用于标注数据访问组件,即DAO组件。
    5. @Component
    把普通pojo实例化到spring容器中,相当于配置文件中的 。
    6. @RequestMapping
    用于配置控制层的访问URL,可以用在控制器类上和控制器方法上,如果用在控制器类上,则访问类中的方法是要加上类上的路径,例如:
    @Controller
    @RequestMapping("/personal/linkInfo")
    public class LinkInfoController {
    @RequestMapping(value = "/addLinkInfo")
    public String addLinkInfo(LinkInfoReq linkInfoReq) {
    linkInfoService.addLinkInfo(linkInfoReq);
    return "redirect:/personal/linkInfo/toLinkInfo";
    }
    }
    上述代码的访问路径就是XXX/personal/linkInfo/addLinkInfo。
    @RequestMapping源代码如下图:
    a) value:设置访问的URL,数组,可以将多个请求映射到一个方法上去。支持通配符配置
    代码示例:
    @RequestMapping(value = {"/page","/page*"})
    public void getInfo() {
    }
    上述代码访问路径可以是:XXX/page,XXX/pageadc等满足value条件的路径。
    b) method:设置访问的方法,数组,可是设置多个访问方法映射到同一个方法上,默认为GET方法
    代码示例:
    @RequestMapping(value = "/page", method = RequestMethod.POST)
    public void getInfo() {
    }
    上述代码 /page路径就只能用POST方法才能请求。
    method的可选值有GET,HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE。
    c) params:指定request中必须包含某些参数值是,才让该方法处理。数组。
    @RequestMapping(value = "/page", params = {"type=1"})
    public void getInfo() {
    }
    上述代码/page路径只有请求参数中包含type且值等于1时才能访问该方法。
    d) headers:指定request中必须包含某些指定的header值,才能让该方法处理请求。数组。
    示例代码:
    @RequestMapping(value = "/page", headers = {" content-type=text/plain " })
    public void getInfo() {
    }
    上述代码/page路径只有headers中content-type=text/plain才能访问该方法。
    e) consumes:指定处理请求的提交内容类型(Content-Type),例如application/json, text/html。
    f) produces:指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回。
    7. @ResponseBody
    通常使用在controller方法上,作用是将方法的返回值通过合适的HttpMessageConverter转换成特定格式写入到response的body区域,然后返回给客户端,如果没有使用@RequestBody注解,方法返回值将会封装到ModelAndView并解析返回视图。
    8. @RequestParam
    接受的参数来自requestHeader,即请求头,用来接收GET和POST请求参数并将参数赋值到被@RequestParam注解的变量上,同样可以使用requet.getParameter(“name”)获取,默认的参数接受方式,如果controller方法的参数未使用@RequestParam,则默认也是使用@RequestParam接受参数。用来处理Content-Type: 为 application/x-编码的内容。
    @RequestParam有三个配置参数:
    a) required:是否必须,默认true,必须。
    b) defaultValue:默认值,请求的参数为空时使用默认值。
    c) value:请求的参数名。
    9. @RequestBody
    接受的参数来自requestBody,即请求体,一般用于处理非 Content-Type: application/x-编码格式的数据,比如:application/json、application/xml等类型的数据。
    10. @Autowired
    它可以对类成员变量,方法及构造函数进行标注,完成自动装配工作,可以消除set,get方法。
    11. @Resource
    其作用和@Autowired相似。
    不同点:
    @Resource是Java自己的注解,@Resource有两个属性重要属性,分是name和type;Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。所以如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略。如果既不指定name也不指定type属性,这时将通过反射机制使用byName自动注入策略。
    @Autowired是spring的注解,是spring2.5版本引入的,@Autowired只根据type进行注入,不会去匹配name。如果涉及到type无法辨别注入对象时,那需要依赖@Qualifier注解一起来修饰。
    @Resource装配顺序
    a) 如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常
    b) 如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常
    c) 如果指定了type,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常
    d) 如果既没有指定name,又没有指定type,则自动按照byName方式进行装配;如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则自动装配;
    推荐使用@Resource,不用谢set方法,并且这个注解属于java自己的,减少了与spring的耦合度。
    12. @Value
    该注解有两种使用方式:
    a) @Value(“${}”)
    这种使用方式注入的是配置文件里的参数
    这样配置文件中的com.title就能配置到LinkInfoController的title属性中
    b) @Value(“#{}”)
    该方式表示SpEl表达式通常用来获取bean的属性,或者调用bean的某个方法。
    这样就可以把User对象的name配置到LinkInfoController的name属性中。
    13. @Transactional
    用于配置spring事务管理。属性信息如下:
    事物的传播行为如下:
    14. @SpringBootApplication
    该注解其实是一个组合注解,源码如下图:
    比较重要的注解有三个:
    a) @SpringBootConfiguration
    从源代码可以看到@SpringBootConfiguration继承自@Configuration,这两个注解的功能也是一样的。
    b) @EnableAutoConfiguration
    此注释自动载入应用程序所需的所有Bean。
    c) @ComponentScan
    该注解会扫描指定路径下的的类,并将其加入到IoC容器中。在springboot中,@ComponentScan默认扫描@SpringBootApplication所在类的同级目录以及它的子目录。
    15. @Configuration
    从Spring3.0,@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器。
    16. @Bean
    该注解主要用在@Configuration注解的类里,也可以用在@Component注解的类里。添加的bean的id为方法名。相当于配置文件里的。
    @Configuration
    public class RedisConfig extends CachingConfigurerSupport{
    @Bean
    public CacheManager cacheManager(RedisConnectionFactory connectionFactory) {
    RedisCacheManager redisCacheManager = RedisCacheManager.create(connectionFactory);
    return redisCacheManager;
    }
    }
    如上代码就相当于在xml文件里配置:



    17. @MapperScan
    指定要变成实现类的接口所在的包,然后包下面的所有接口在编译之后都会生成相应的实现类添加位置:是在Springboot启动类上面添加:
    18. @EnableCaching
    该注解是spring framework中的注解驱动的缓存管理功能。自spring版本3.1起加入了该注解。如果你使用了这个注解,那么你就不需要在XML文件中配置cache manager了。
    @Configuration
    @EnableCaching
    public class RedisConfig extends CachingConfigurerSupport{

    @Bean
    public CacheManager cacheManager(RedisConnectionFactory connectionFactory) {
    RedisCacheManager redisCacheManager = RedisCacheManager.create(connectionFactory);
    return redisCacheManager;
    }
    }
    19. @EnableRedisHttpSession
    用来设置springboot使用redis存储session,该注解会创建一个名字叫springSessionRepositoryFilter的Spring Bean,其实就是一个Filter,这个Filter负责用Spring Session来替换原先的默认HttpSession实现。
    示例代码如下:
    @Configuration
    @EnableRedisHttpSession(maxInactiveIntervalInSeconds = 60*30)
    public class HttpSessionConfig {
    }
    其中属性maxInactiveIntervalInSeconds是设置session的有效时间,单位毫秒,默认1800ms。
    但其实这样还是不够的,还要在配置文件中设置redis存储session:
    spring.session.store-type=redis
    这样就可以了。

    二、spring常用注解

    一、组件注解

    1、 @Component(“xxx”)

    指定某个类是容器的bean, @Component(value="xx") 相当于 ,其中 value 可以不写。

    用于标注类为spring容器bean的注解有四个, 主要用于区别不同的组件类,提高代码的可读性:

    a、 @Component, 用于标注一个普通的bean

    b、 @Controller 用于标注一个控制器类(控制层 controller)

    c、 @Service 用于标注业务逻辑类(业务逻辑层 service)

    d、 @Repository 用于标注DAO数据访问类 (数据访问层 dao)

    对于上面四种注解的解析可能是相同的,尽量使用不同的注解提高代码可读性。

    注解用于修饰类,当不写value属性值时,默认值为类名首字母小写。

    2、 @Scope(“prototype”)

    该注解和 @Component 这一类注解联合使用,用于标记该类的作用域,默认 singleton 。
    也可以和 @Bean 一起使用,此时 @Scope 修饰一个方法。关于@Bean稍后有说明

    3、 @Lazy(true)

    指定bean是否延时初始化,相当于 ,默认false。@Lazy可以和@Component这一类注解联合使用修饰类,也可以和@Bean一起使用修饰方法

    注 :此处初始化不是指不执行 init-method ,而是不创建bean实例和依赖注入。只有当该bean(被@Lazy修饰的类或方法)被其他bean引用(可以是自动注入的方式)或者执行getBean方法获取,才会真正的创建该bean实例,其实这也是BeanFactory的执行方式。

    4、 @DepondsOn({“aa”,“bb”})

    该注解也是配合 @Component 这类注解使用,用于强制初始化其他bean

    上面的代码指定,初始化bean “userAction"之前需要先初始化“aa”和“bb”两个bean,但是使用了@Lazy(true)所以spring容器初始化时不会初始化"userAction” bean。

    5、 @PostConstructor和@PreDestroy

    @PostConstructor 和 @PreDestroy 这两个注解是j2ee规范下的注解。这两个注解用于修饰方法,spring用这两个注解管理容器中spring生命周期行为。

    a、 @PostConstructor 从名字可以看出构造器之后调用,相当于 。就是在依赖注入之后执行

    b、 @PreDestroy 容器销毁之前bean调用的方法,相当于

    6、 @Resource(name=“xx”)

    @Resource 可以修饰成员变量也可以修饰set方法。当修饰成员变量时可以不写set方法,此时spring会直接使用j2ee规范的Field注入。

    @Resource有两个比较重要的属性,name和type

    a、 如果指定了name和type,则从Spring容器中找到唯一匹配的bean进行装配,找不到则抛出异常;

    b、 如果指定了name,则从spring容器查找名称(id)匹配的bean进行装配,找不到则抛出异常;

    c、 如果指定了type,则从spring容器中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常;

    d、 如果既没有指定name,又没有指定type,则自动按照byName方式进行装配

    如果没有写name属性值时

    a、 修饰成员变量,此时name为成员变量名称

    b、 修饰set方法,此时name 为set方法的去掉set后首字母小写得到的字符串

    7、 @Autowired(required=false)

    @Autowired可以修饰构造器,成员变量,set方法,普通方法。@Autowired默认使用byType方式自动装配。required标记该类型的bean是否是必须的,默认为必须存在(true)。

    可以配合 @Qualifier(value="xx") ,实现按beanName注入:

    a、 required=true(默认),为true时,从spring容器查找和指定类型匹配的bean,匹配不到或匹配多个则抛出异常

    b、 使用 @Qualifier("xx") ,则会从spring容器匹配类型和 id 一致的bean,匹配不到则抛出异常

    @Autowired会根据修饰的成员选取不同的类型:

    a、 修饰成员变量。该类型为成员变量类型

    b、 修饰方法,构造器。注入类型为参数的数据类型,当然可以有多个参数

    8、demo

    业务逻辑层:

    数据访问层:

    测试类:

    输出结果:

    可以看到虽然UserDao 使用@Lazy,但是还是在spring容器初始化的时候还是创建了UserDao实例。原因很简单,因为在UserService中需要注入UserDao,所以在此时创建的UserDao实例也属于延时初始化。

    在上面我们还使用了两个接口InitializingBean 和DisposableBean,这两个接口用于管理 singleton 作用域的bean的生命周期,类似init-method和destroy-method。不同之处就是调用的循序不一致:

    a、 初始化调用顺序 :@PostConstructor > InitializingBean > init-method 用于指定bean依赖注入后的行为

    b、 销毁调用顺序 @PreDestroy > DisposableBean > destroy-method 用于定制bean销毁之前的行为

    该注解是AspectJ中的注解,并不是spring提供的,所以还需要导入aspectjweaver.jar,aspectjrt.jar,除此之外还需要依赖aopalliance.jar

    依赖包:

    UserDao.java

    配置文件 applicationContext.xml:

    测试类:

    1、 @Aspect

    修饰Java类,指定该类为切面类。当spring容器检测到某个bean被@Aspect修饰时,spring容器不会对该bean做增强处理(bean后处理器增强,代理增强)

    2、 @Before

    修饰方法,before增强处理。用于对目标方法(切入点表达式表示方法)执行前做增强处理。可以用于权限检查,登陆检查。

    常用属性:

    value: 指定切入点表达式 或者引用一个切入点

    对com.example.aop 包下所有的类的所有方法做 before增强处理:

    结果:

    如果同一条切入点表达式被使用多次,可以使用更友好的方式。定义一个切入点:

    增强方法可以接受一个JoinPoint 类型的参数,用于获取被执行目标方法的一下属性。

    结果:

    3、 @AfterReturning

    修饰方法,afterreturning增强处理。目标方法正常结束后做增强处理。

    常用属性:

    a、 pointcut/value:指定切入点表达式

    b、 returning:指定一个参数名,用于接受目标方法正常结束时返回的值。参数名称需要在增强方法中定义同名的参数。

    注意:

    a、 如果使用了returning 。那么增强方法中的数据类型必须是返回结果的类型或者父类型,否则不会调用该增强处理。

    b、 使用了returning 还可以用来 修改返回结果 。

    以上面的例子来说,目标方法返回结果类型应该满足下面的条件

    修改返回值:

    结果:

    可以看到 AfterReturning 修改了返回结果。

    4、 @AfterThrowing

    修饰方法,afterthrowing增强处理。当目标程序方法抛出 异常或者异常无法捕获时,做增强处理。

    常用属性:

    a、 pointcut/value :指定切入点表达式

    b、 throwing:指定一个形参,在增强方法中定义同名形参,用于访问目标方法抛出的异常

    参数类型必须是 Throwable 的子类,同样也会有上面@AfterReturning 参数类型匹配的问题。

    5、 @After

    修饰方法 ,after增强处理。无论方法是否正常结束,都会调用该增强处理(@After= @AfterReturning+@AfterThrowing)。但是该增强方式无法获取目标方法的返回结果,也获取目标方法抛出的异常。所以一般用于进行释放资源,功能类似于 finally。

    常用属性:

    a、 value :指定切入点表达式

    结果:

    从上面的结果来看 After 增加处理 ,因为不能接受返回结果作为参数,所以不能修改返回结果。

    6、 @Around

    修饰方法, around增强处理。该处理可以目标方法执行之前和执行之后织入增强处理(@Before+@AfterReturning)。

    Around增强处理通常需要在线程安全的环境下使用,如果@Before和@AfterReturning可以处理就没必要使用@Around。

    常用属性:

    a、 value :指定切入点表达式

    当定义一个Aound增前处理时,增强方法第一形参需要时ProceedingJoinPoint类型。ProceedingJoinPoint有一个Object proceed()方法,用于执行目标方法。当然也可以为目标方法传递数组参数,来修改目前方法的传入参数。

    around小结:

    a、 Around增强处理通常需要 在线程安全 的环境下使用

    b、 调用 proceed()可以获取返回结果,所以可以修改目标方法的返回值

    c、 proceed(Object[] var1) 可以修改入参,修改目标方法的入参

    d、 可以进行目标方法执行之前和执行之后织入增强处理

    around 和 afterReturning 都可以修改返回结果。不过两者的原理不同:

    a、 around:可以任意修改,或者返回不相关的值。这个返回值完全可以自主控制

    b、 afterReturning,通过方法参数 ,使用对象引用的方式来修改对象。修改对象引用地址那么修改时无效的

    除此之外从输出结果来看,增强处理是有序的:

    around 和 afterReturning小结:

    a、 只有 around 和 afterReturning 可以获取并修改返回结果。需要注意两种方式修改的区别。

    b、 around 需要线程安全

    c、 虽然增强处理都需要 切入点表达式,并不是都支持 pointcut 属性,所以最好都是用value 属性指定。当注解只需要value属性时,value可以省略

    7、 @Pointcut

    修饰方法,定义一个切入点表达式用于被其他增强调用。使用该方式定义切入点方便管理,易复用。

    切入点方法定义和测试方法定义类似,具有以下特点:

    a、 无返回值 (void)

    b、 无参数

    c、 方法体为空

    d、 方法名就是切入点名称

    e、 方法名不能为 execution

    切入点表达式

    切入点表达式可以通过 && 、 || 、 ! 连接

    1)、execution 表达式:

    2)、within 表达式:

    a、匹配指定类下的所有方法。

    b、匹配执行包及其子包下所有类的所有方法。

    所以within可以看做execution的简写,不需要指定返回类型、方法名、参数( 最小作用单位是类 )

    3)、 @annotation:匹配使用指定注解修饰的目标方法;

    匹配使用@CustomMethodAnnotation注解的目标方法。

    4)、 @within: 用于匹配使用指定注解修饰的类下的所有方法

    within 作用范围是类,@within的作用范围与其一致。不同的是@within 指定的不是类而是注解

    匹配使用@ResponseBody 注解的类 下的所有方法。

    AOP小结:

    1)、 Around增强处理通常需要 在线程安全 的环境下使用

    2)、 使用 around 和 afterReturning 可以获取并修改返回结果

    3)、 增强处理指定 切入点表达式时,最好使用value 属性

    4)、 切入点 名称(方法名)不能为 execution

    5)、 AfterReturning 指定了 returning 属性接受目标方法返回结果,注意 参数类型需要和返回结果类型一致(满足 resutType instanceof argsType )

    增强方式的顺序:

    1、 @Bean(name=“xxx”)

    修饰方法,该方法的返回值为spring容器中管理的bean。当然该注解和上面的@Component效果一样,主要用于做区分。

    @Bean 通常使用在 @Configuration 修饰的配置类中,该注解功能相当于 元素

    常用的属性:

    a、 name:bean id 。name可以省略,省略时bean名称为方法名。也可以指定多个名称(逗号隔开)。

    b、 autowire: 是否自动注入,默认Autowire.NO

    c、 initMethod:bean的初始化方法。在依赖注入之后执行

    d、 destroyMethod: spring容器关闭时bean调用的方法
    当然 @Bean 还可以配合 @Scope 指定bean的作用域

    2、 @ConfigurationProperties

    用于从属性文件中获取值 application.properties 或者 application.yml 。当然了 如果在配置文件中引入其他配置文件,也可以获取到属性值。

    包含的属性:

    a、 value | prefix 两者互为别名。指定前缀,默认为""

    b、 ignoreUnknownFields:默认为true。是否忽略未知字段,当实体中的字段在配置文件中不存在时,是忽略还是抛出异常

    c、 ignoreInvalidFields: 默认false。 是否忽略不合法的字段,此处的不合法是指类型不合适,配置文件中存在改配置但是无法转化为指定的字段类型。

    Mybatis属性配置

    application.properties:

    ConfigurationProperties 可以配置前缀,然后会根据实体的变量名拼接前缀,去配置文件中查询配置。

    3、 @Configuration

    修饰一个Java类,被修饰的类相当于一个xml配置文件。功能类似于 。在springboot中大量使用了该注解,该注解提供了一种使用Java类方式配置bean。

    可以发现 @Configuration使用了@Component 注解修饰。

    实例

    配置Mybatis会话工厂

    4、 @Import

    功能和 类似,修饰Java类,用于向当前类导入其他配置类。 可以导入多个配置文件,通常用于导入不在包扫描范围内的配置文件。可以被扫描的配置类可以直接访问,没有必要使用@Import 导入。

    比如 SpringBoot的启动类指定的包扫描路径为 com.example

    数据库的配置文件在 com包下。

    在MyBatisConfig 中引入 DataSourceConfig, 就会解析DataSourceConfig。将解析出的Bean交给容器管理

    5、 @ImportResource

    修饰Java类,用于向类引入xml配置文件。

    用于导入包含bean定义的配置文件,功能和 类似。默认情况下可以处理后缀为 .groovy 和.xml 的配置文件

    6、 @Value("${expression}")

    修饰成员变量或者 方法、构造器的参数,用于属性值注入(在配置文件中配置的值)。

    注意: @Value不能对 static 属性注入。

    如果的确需要注入到静态变量,可以通过以下方式间接进行注入:

    1)、设置一个私有静态 实例

    2)、通过构造函数或者 @PostConstruct 注解为 静态实例 赋值,指向本身(this)

    3)、对成员属性注入内容

    4)、提供静态方法,使用静态实例获取成员属性

    7、@PropertySource(value=“classpath:jdbc.properties”)

    该注解用来加载属性文件。

    常用属性:

    a、 ignoreResourceNotFound: 当资源文件找不到的时候是否会忽略该配置,而不是抛出错误。一般用于可选项

    b、 encoding : 资源文件使用什么编码方式

    c、 value : 指定属性文件位置。可以配置多个属性文件,不可以使用通配符。

    在 PropertySource 中可以指定多个路径,并且会将属性文件中的值加载到 Environment 中。

    @ConfigurationProperties 和 @PropertySource

    它们的使用有一些差异:

    1)、 @PropertySource 使用该注解加载的是 相对独立的属性文件,可以同时加载多个文件 (xxx.properties),而且 不支持自动注入 , 不支持前缀注入

    2)、 @ConfigurationProperties 用于加载配置文件(application.properties | application.yml)。该注解功能更强大:

    a、 支持前缀注入 ( prefix )

    b、 相同属性名的自动注入

    c、 $("") 支持EL表达式注入

    应用实例:

    在以往的开发中通常会将数据库连接信息存放在单独的属性文件中(jdbc.properties)。而在spring boot 中我们会将数据库的信息存放在配置文件中,这会极大便利开发工作。

    jdbc.properties:

    可以通过 @Value 注解将配置文件的值注入到实体类中

    也可以注入Environment ,通过Environment 获取值

    1、 @ResponseBody

    控制器方法返回值会使用 HttpMessageConverter 进行数据格式化,转化为JSON字符串。

    同样的 ResponseBodyAdvice: 针对使用@ResponseBody的注解的类,方法做增强处理。

    2、 @RestController

    @RestController = @Controller + @ResponseBody , 所以通常直接使用@RestController 注解

    3、 @RequestBody

    从Reuqest请求体中获取内容,绑定到方法的指定参数上。 SpringMVC 使用HttpMessageConverter 接口将请求体中的数据转化为方法参数类型。

    SpringMVC 给用户对参数的处理提供了很大支配权。 我们可以使用 接口RequestBodyAdvice 来实现对参数进行拦截处理。

    注意

    1)、 RequestBodyAdvice : 针对所有以@RequestBody的参数做处理

    2)、 自定义的处理对象类上必须得加上@ControllerAdvice注解!

    利用此功能我们可以做以下处理工作:

    1)、参数做解密处理。

    2)、修改接受的参数数据。

    4、 @RequestParam

    从Request请求中获取指定的参数。

    可以设置的属性:

    1)、 required : 默认为true 参数必须存在 。参数不存在时抛出异常(MissingServletRequestParameterException). 提示信息

    2)、 defaultValue : 设置参数默认值。 当参数没有提供或者为空值时生效, 包含隐式定义 required=false

    3)、 name | value , 互为别名的属性, 绑定请求中的参数名。 request.getParameter(name);

    5、 @RequestMapping

    用于设置 请求 和 Method 的映射关系。指明何种请求可以和方法匹配

    可配置属性值:

    1)、 path、value、 name, 互为别名,设置可以处理的url。

    2)、 consumes,字符串数组。 指定可以处理的 媒资类型,仅当请求头中的 Content-Type 与其中一种媒体类型匹配时,才会映射请求。所以该配置会缩小可匹配的请求。 当url 匹配但是consumes不匹配时, 状态码415。 不设置的话,表示不限制媒资类型,参数的具体使用何种方式解析,SpringMVC会选择合适的处理器处理。

    3)、 produces,字符串数组。 生成的媒资类型,该属性会影响实际的输出类型。和consumes一样,改配置会缩小匹配的范围。 只有当请求头中的 Accept 与 配置的任意一个媒资类型匹配时,才会映射请求。 当url 匹配与consumes不匹配时, 状态码406 。 比如:为了生成UTF-8编码的JSON响应,应使用 MediaType.APPLICATION_JSON_UTF8_VALUE。

    三、@ResponseBody这个在spring注解是什么意思啊

    @ResponseBody表示响应的主体。即不需要VIEW展现层模块,直接显示到客户端的内容。
    @RequestBody PmsAttendance attendance,
    HttpServletRequest request
    这个的意思是,PmsAttendance这个是响应的主体内容。

    java开发,推荐你一个超轻量级的java数据库开发框架,JDiy。百度搜索JDiy进官网了解更多内容。

    关于response的问题,通过《spring常用注解》、《@ResponseBody这个在spring注解是什么意思啊》等文章的解答希望已经帮助到您了!如您想了解更多关于response的相关信息,请到本站进行查找!

    爱资源吧版权声明:以上文中内容来自网络,如有侵权请联系删除,谢谢。

    response
    appointment什么意思 想买内存和固态硬盘的最好再等等!价格可能会继续走跌