@Controller:在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示。在SpringMVC 中提供了一个非常简便的定义Controller 的方法,你无需继承特定的类或实现特定的接口,只需使用@Controller 标记一个类是Controller ,然后使用@RequestMapping 和@RequestParam 等一些注解用以定义URL 请求和Controller 方法之间的映射,这样的Controller 就能被外界访问到。此外Controller 不会直接依赖于HttpServletRequest 和HttpServletResponse 等HttpServlet 对象,它们可以通过Controller 的方法参数灵活的获取到。

  @GetMapping:Spring4.3中引进了{@GetMapping、@PostMapping、@PutMapping、@DeleteMapping、@PatchMapping},来帮助简化常用的HTTP方法的映射,并更好地表达被注解方法的语义。以@GetMapping为例,Spring官方文档说:@GetMapping是一个组合@RequestMapping(method = RequestMethod.GET)的缩写。该注解将HTTP Get 映射到 特定的处理方法上。

  produces = "application/json":@RequestMapping(value = "/produces", produces = "application/json"):表示将功能处理方法将生产json格式的数据,此时根据请求头中的Accept进行匹配,如请求头“Accept:application/json”时即可匹配;@RequestMapping(value = "/produces", produces = "application/xml"):表示将功能处理方法将生产xml格式的数据,此时根据请求头中的Accept进行匹配,如请求头“Accept:application/xml”时即可匹配。此种方式相对使用@RequestMapping的“headers = "Accept=application/json"”更能表明你的目的。

  @ResponseBody:该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。使用时机:返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用;那么只需删除注解:@ResponseBody 便可以返回页面pay/success.jsp。而且达到了与客户端后台交互的效果。

  @RequiresRoles:在controller控制器中的一个方法里面使用@RequireRoles("admin")注解,说明访问该方法时,需要admin角色才能访问。

  @ApiOperation:@ApiOperation不是spring自带的注解是swagger里的 com.wordnik.swagger.annotations.ApiOperation;@ApiOperation和@ApiParam为添加的API相关注解,个参数说明如下: @ApiOperation(value = “接口说明”, httpMethod = “接口请求方式”, response = “接口返回参数类型”, notes = “接口发布说明”;其他参数可参考源码; @ApiParam(required = “是否必须参数”, name = “参数名称”, value = “参数具体描述”

实际项目中非常需要写文档,提高Java服务端和Web前端以及移动端的对接效率。Swagger是当前最好用的Restful API文档生成的开源项目,通swagger-spring项目实现了与SpingMVC框架的无缝集成功能,方便生成spring restful风格的接口文档,同时swagger-ui还可以测试spring restful风格的接口功能。

  @RestController:返回string或者json的话就直接用@RestController。如果想要页面跳转的话,就使用@Controller。一开始就有个疑问,就是我想在一个类中既能返回string或者json又能进行页面跳转怎么办。现在终于明白:点击打开链接。在这篇文章中介绍的非常详细,简单说来@RestController = @Controller + @ResponseBody。所以,以后定义controller的时候,可以直接使用@Controller,如果需要返回json可以直接在方法中添加@ResponseBody即可。

  @RequiresPermissions("system:*"):shiro中的注解

  @SuppressWarnings("SpringJavaAutowiringInspection"):该批注的作用是给编译器一条指令,告诉它对被批注的代码元素内部的某些警告保持静默。

    @Deprecated:用 @Deprecated注释的程序元素,不鼓励程序员使用这样的元素,通常是因为它很危险或存在更好的选择。在使用不被赞成的程序元素或在不被赞成的代码中执行重写时,编译器会发出警告。

  @Transient: 该注解,是Hibernate等框架的注解。 实体类中使用了@Table注解后,想要添加表中不存在字段,就要使用@Transient这个注解了。

  @Table:@Entity注释指名这是一个实体Bean,@Table注释指定了Entity所要映射带数据库表,其中@Table.name()用来指定映射表的表名。如果缺省@Table注释,系统默认采用类名作为映射表的表名。实体Bean的每个实例代表数据表中的一行数据,行中的一列对应实例中的一个属性。

  @component (把普通pojo实例化到spring容器中,相当于配置文件中的<bean id="" class=""/>)

SSM框架中常用的注解的更多相关文章

  1. SSM框架中常用的注解及含义

    @Controller---使用它标记在一个类上,dispatcher会扫描使用该注解类的方法,并检测该方法是否使用了@RequestMapping注解,加上RequestMapping注解的方法才是 ...

  2. SSM框架中常用的配置文件

    学习框架,刚开始的时候最烦的就是一些配置文件,有很多需要配置的东西,今天把这些配置文件信息稍微整理一下,以后说不定会用的到. web.xml文件 <?xml version="1.0& ...

  3. 在SSM框架中我设置拦截器filter不能通过注解获取到实现类

    我在用注解注入实现类的时候,出现了这样的错误:如以下截图: 这个地方报出的错误是说明我的一个接口类型的类没有获取到,后来我就想要是我的实现类没有获取到那么我就直接new一个实现类然后再进行调用就会出现 ...

  4. maven springMVC SSM框架中 出现的406 (Not Acceptable)

    首先,需要清楚,http state 406代表什么意思: 406是HTTP协议状态码的一种,表示无法使用请求的特性来响应请求的网页.一般指客户端浏览器不接受所请求页面的MIME类型. 出现这样的错误 ...

  5. Junit中常用的注解说明

    Java注解((Annotation)的使用方法是@注解名 ,能通过简单的词语来实现一些功能.在junit中常用的注解有@Test.@Ignore.@BeforeClass.@AfterClass.@ ...

  6. SSM框架中,controller的action返回参数给vue.js

    在SSM框架中,controller的action中,返回的是视图,即jsp页面或是ModelAndView,若是通过axios给vue传值的话,需要转换为字符串或是user实体类对象. 使用@Res ...

  7. JAVA使用log4j(另SSM框架中使用log4j)

    1.引入jar包 log4j-1.2.13.jar 2.src下建立配置文件:log4j.properties #不+All,只写后一种LOG log4j.rootLogger =ALL,system ...

  8. SSM框架中的前后端分离

    认识前后端分离 在传统的web应用开发中,大多数的程序员会将浏览器作为前后端的分界线.将浏览器中为用户进行页面展示的部分称之为前端,而将运行在服务器,为前端提供业务逻辑和数据准备的所有代码统称为后端. ...

  9. spring框架中的@Import注解

    spring框架中的@Import注解 Spring框架中的@Import注解 在之前的文章中,作者介绍了Spring JavaConfig. 这是除了使用传统的XML文件之外,spring带来的新的 ...

随机推荐

  1. PHP童鞋改JAVA代码怎么处理

    用线上升级平台代码练手,学习JAVA.飞哥建议我们自己从头再搭建一套,提高会大.我自己作为一个JAVA出身的人,用了几天时间学会PHP的经验来看.最好,先在原来代码基础上改些东西.熟悉了基本语法之后再 ...

  2. __init__.py

    python中的Module是比较重要的概念.常见的情况是,事先写好一个.py文 件,在另一个文件中需要import时,将事先写好的.py文件拷贝 到当前目录,或者是在sys.path中增加事先写好的 ...

  3. 转账示例(一):Dao层面实现(本例采用QueryRunner来执行sql语句,数据源为C3P0)

    缺点:Dao层面把Service层面的操作完成了,不利于后期的代码修改和重构 1.自行创建C3P0Util account数据库 2.jar包 3.Dao层面 接口: package com.lear ...

  4. Notepad++ 7.3.2 Download 64-bit x64 / 32-bit x86

    Notepad++ 7.3.2 Download 32-bit x86 Notepad++ Installer 32-bit x86: Take this one if you have no ide ...

  5. jQuery使用小结

    $(document).ready( function(){} ); 选择器 $("p:first")            第一个元素 $("p.intro" ...

  6. saltstack部署

    环境准备 [root@server elasticsearch]# cat /etc/redhat-release CentOS release 6.6 (Final)[root@server ela ...

  7. 【转】JDBC学习笔记(4)——PreparedStatement的使用

    转自:http://www.cnblogs.com/ysw-go/ PreparedStatement public interface PreparedStatement extends State ...

  8. MySQL最常用分组聚合函数

    一.聚合函数(aggregation function)---也就是组函数 在一个行的集合(一组行)上进行操作,对每个组给一个结果. 常用的组函数: AVG([distinct] expr) 求平均值 ...

  9. 使用vue-cli构建多页面应用+vux(三)

    上节中,我们成功的将vue-cli改造成了多入口,既然用了上简单的脚手架,那就希望用个合适的UI组件,去搜索了几个以后,最后选择了使用vux 贴上其vux的github地址  https://gith ...

  10. java映射(map用法)

    主要分两个接口:collection和Map 主要分三类:集合(set).列表(List).映射(Map)1.集合:没有重复对象,没有特定排序方式2.列表:对象按索引位置排序,可以有重复对象3.映射: ...