根据前一篇文章的步骤,目前项目进度应该是:核心过滤器配置完成、DispatcherServlet和ContextLoader配置完成、数据库dataSource配置完成、视图解析器配置完成、Mapper sql和dao method对应没有问题、注解驱动、事务启动、default-Servlet-handler配置完成。
------------这篇文章主要介绍,业务逻辑和数据流程-----------------
核心流程:
用户请求(url)—>配置中DispatcherServlet拦截请求----->通过内部配置HandlerMapping检查URL对应的Controller---->controller返回字符串或者Modealandview------>ViewResolver视图解析器解析物理视图地址------>控制权交DispatcherServlet------->返回对象数据给服务器---------->客户端
------------------------注解详解放最后了--------------------------------
1.直接粘个Service的增删改
2.Controller
3.别的好像没啥介绍了,基本步骤就这些,数据流程在上面,注解介绍在下面。
基本注解介绍
@Controller
负责注册一个控制器,Singleton,线程共享
@Service 标注在Service类
@Repository 标注在Dao类
@Component 当不清楚类的具体功能,只是想把这个组件加到spring容器 中,用此注解
@AutoWired 自动装配注解
@RequestMapping(value=”/url” , method = RequestMethod.POST)
注解为控制器指定URL 请求,可以标注方法也可以标注在控制类上,
请求格式:/类路径/方法路径 或 /方法路径
@RequestBody该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上 ,再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上
A) GET、POST方式提时, 根据request header Content-Type的值来判断:
- application/x-www-form-urlencoded, 可选(即非必须,因为这种情况的数据@RequestParam, @ModelAttribute也可以处理,当然@RequestBody也能处理);
- multipart/form-data, 不能处理(即使用@RequestBody不能处理这种格式的数据);
- 其他格式, 必须(其他格式包括application/json, application/xml等。这些格式的数据,必须使用@RequestBody来处理);
B) PUT方式提交时, 根据request header Content-Type的值来判断:
- application/x-www-form-urlencoded, 必须;
- multipart/form-data, 不能处理;
- 其他格式, 必须;
@ResponseBody
该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区
返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用;
@SessionAttributes(value={“user”},type={String.class})
value:通过名称存放在session
type:会将某一类型的对象传入
由于该注解会自动装配,所以使用inlivate()清空
使用SessionStatus.SetComplete();方法清空session
该注解用来绑定HttpSession中的attribute对象的值,便于在方法中的参数里使用。只能标注在类上,不能标注方法;
@ModelAttribute
在方法定义上使用 @ModelAttribute 注解:Spring MVC 在调用目标处理方法前,会先逐个调用在方法级上标注了@ModelAttribute 的方法
在方法的入参前使用 @ModelAttribute 注解:可以从隐含对象中获取隐含的模型数据中获取对象,再将请求参数 –绑定到对象中,再传入入参将方法入参对象添加到模型中
@RequestParam
在处理方法入参处使用 @RequestParam 可以把请求参 数传递给请求方法
(@PathVariable(“id”) Int id)
绑定 URL 占位符到入参(“/url/{id}”)
@ExceptionHandler注解到方法上,出现异常时会执行该方法
@ControllerAdvice使一个Contoller成为全局的异常处理类,类中用@ExceptionHandler方法注解的方法可以处理所有Controller发生的异常