在最简单的springmvc应用程序中,控制器是唯一需要在java web部署描述文件(web.xml)中配置的servlete(springmvc的控制器是Dispatcher Servlet)。每个web的生命周期必须通过Dispatcher Servlet以便管理整个请求的生命周期。
工作流程:
1.用户发送请求request,请求别DispatcherServlet获取
2.DispatcherServlet对URL进行解析调用HandlerMapping,HandlerMapping将会请求映射为HandlerExecutionChain对象(包括
Handler(页面控制器对象)和多个HanderInterceptor拦截器)、返回给DispatcherServlet
3.DispatcherServlet将Handler给HanderAdapter(处理器适配器)
4.handlerAdapter适配到相应的处理方法(Controller)完成功能处理,并且返回一个ModelAndView对象给DispatcherServlet
5.DispatcherServlet将ModelAndView交给VievResolver(视图解析器),解析为具体的View,并返回
6.然后Dispatcher根据穿进来的Model模型数据对View进行渲染,此处的Model实际是一个Map数据结构
因此更容易支持其他视图技术
7.返回控制权给DispatcherServlet,由DispathcerServlet返回相应用户,到此结束流程
springmvc常用注解:
@Controller声明action组件
@Service声明Service组件
@Repository声明Dao组件
@Component 泛指组件,当不好归类时
@RequestMapping(“/index”) 请求映射(url路径)
@Resource 用于注入(j2ee提供),默认按照名称注入@Resource(name="beanName")
@AutoWired用于注入(spring提供) 默认按照类型装配
@Transactional(rollbackFor={Exception.clas})事务管理
@ResponseBody 表示返回类型将会直接作为HTTP响应字节
@Scope(“prototype”) 设定bean的作用域
@PathVariable 方法中的参数绑定到地址URL的模板
例如:
Java代码
@RequestMapping(value="/owners/{ownerId}", method=RequestMethod.GET)
public String findOwner(@PathVariable String ownerId, Model model) {
Owner owner = ownerService.findOwner(ownerId);
model.addAttribute("owner", owner);
return "displayOwner";
}
@RequestParam @RequestParam包含3个配置 @RequestParam(required = ,value="", defaultValue = "")
required :参数是否必须,boolean类型,可选项,默认为true
value: 传递的参数名称,String类型,可选项,如果有值,对应到设置方法的参数
defaultValue:String类型,参数没有传递时为参数默认指定的值