Controller控制器
和mybatis不同,在springmvc中,注解开发才是主流,所以接下来都会使用注解来开发。
被@Controller标注的类是一个控制器类,其中的每一个方法都是一个控制器,都各自映射一个url地址
在spring中我们说过,使用注解的时候需要在spring的配置文件中开启注解扫描
1 | <context:component-scan base-package="com.lizhi.controller"/> |
回顾spring中的常用注册bean的注解
1 | 普通组件 |
因为我们配置的DispatcherServlet会拦截所有的请求,但是对于静态资源,我们不需要拦截对他做出处理,所以有了以下配置
1 | <!-- Springmvc不处理静态文件--> |
@RequestMapping
该注解可以作用于类上面或者方法上面
- 方法上面
该方法映射的url地址即为注解中的值
- 类上面
当其作用在类上面的时候,该控制器类中所有的方法的映射路径的前面都会加上该注解中的值
@GetMapping 该注解代表请求是get请求
@PostMapping 该注解代表请求是post请求
@PutMapping 该注解代表请求是put请求
@DeleteMapping该注解代表请求是delete请求
@RestController
当类上不是@Controller注解而是@RestController时候,该类中所有的方法返回的值,不会跳转视图,而是返回JSON字符串
如果不想让类中所有的方法都返回字符串
则类上面使用@Controller注解,方法上使用@ResponseBody标注此方法返回的结果是一个JSON字符串不要被视图解析器解析
RestFul风格
概念:RestFul就是一个资源定位及资源操作的风格。
它不是标准也不是协议,它就只是一个style。基于这种风格设计的软件可以更加简洁,更有层次,并且安全,更易于实现缓存等机制
传统方式操作资源通过不用的参数来实现不同的功能,方法单一,post和get
- http:/locoalhost:8080/item/insertItem post提交
- http:/locoalhost:8080/item/deleteitem get提交
- http:/locoalhost:8080/item/queryItem get提交
- http:/locoalhost:8080/item/updateitem post提交
使用RestFul风格操作资源
- http:/locoalhost:8080/item/add/参数/参数/…
- http:/locoalhost:8080/item/update/参数/…
- http:/locoalhost:8080/item/query/参数/…
- http:/locoalhost:8080/item/update/参数/…
本质其实就是通过不同的提交方式走不同的方法
结果跳转方式
控制器最后直接return字符串的话默认请求转发
如果想要重定向字符串前面加“**redirect:**”即可
处理前端数据
如果提交参数的名称和方法的参数名一致的话,
1 |
|
如果提交参数和方法参数不一致的话
提交数据:http://localhost:8080/user/add?username=lizhi&userage=20
1 |
|
如果提交的是一个对象
提交数据:http://localhost:8080/user/add
要求提交的表单要和属性的属性名一致,方法参数即可直接使用对象
1 |
|
返回前端数据
- ModelAndView
该对象在初识mvc的时候已经见过,不再赘述
- Model(这是一个接口)
该对象在使用注解开发的时候也已经见过,这里也不再赘述
- ModelMap
ModelMap实现了Model接口,继承了LinkedHashMap,所以它更强大,但是大部分情况下Model会更常用