SpringMVC
SpringMVC流程
1、一个请求匹配前端控制器DispatcherServlet 的请求映射路径(web.xml中指定),WEB容器将该请求转交给DispatcherServlet 处理。
2、DispatcherServlet 接收到请求后,将根据请求信息交给处理器映射器(HandlerMapping)
3、HandlerMapping根据用户的url请求,查找匹配该url的Handler,并返回一个执行链。
4、DispatcherServlet 再请求,处理器适配器(Handler Adapter)调用相应的Handler进行处理并返回ModelAndView给DispatcherServlet
5、DispatcherServlet 将ModelAndView请求ViewReslover(视图解析器)解析,返回具体View
6、DispatcherServlet 对View进行渲染视图(即 将模型数据填充至视图中)
7、DispatcherServlet将页面响应给用户
Spring mvc有哪些组件
前端控制器(DispatcherServlet)、处理器映射器(HandlerMapping)
处理器适配器(HandlerAdapter)、拦截器(HandlerInterceptor)
语言环境处理器(LocaleResolver)、主题解析器(ThemeResolver)
视图解析器(ViewResolver) 、文件上传处理器(MultipartResolver)
异常处理器(HandlerExceptionResolver)、数据转换(DataBinder)
消息转换器(HttpMessageConverter)
请求转视图翻译器(RequestToViewNameTranslator)
页面跳转参数管理器(FlashMapManager)
处理程序执行链(HandlerExecutionChain)
@RequestMapping的作用是什么
@RequestMapping 是一个注解,用来标识 http 请求地址与 Controller 类的方法之间的映射。可作用于类和方法上,方法匹配的完整是路径是 Controller 类上 @RequestMapping 注解的 value 值加上方法上的 @RequestMapping 注解的 value 值。
如果在controller类上面添加了注解@RequestMapping("/dong") ,然后又在方法上面加上了注解@RequestMapping("/hello"),你的项目端口是8080,然后在访问的时候就是localhost:8080/dong/hello
几个注解
byName:会自动在容器上下文中查找,和自己对象set方法后面的值对应的beanid
byType:会自动在容器上下文中查找,和自己对象属性类型相同的bean
@Resource和**@Autowired**的区别:都是用来自动装配的,都可以放在属性字段上(@Resource(name=“cat2”)),Resource先根据名字再根据类型,Autowired先根据类型再根据名字。
可以在属性中使用 @Autowired 注解来除去 setter 方法
如果@Autowired自动装配的环境比较复杂,自动装配无法通过一个注解@Autowired完成的时候,我们可以使用@Qualifier(value=“xxx”)去配置@Autowired的使用,指定一个唯一的bean对象注入。
@Component 组件,放在类上,就说明这个类被Spring管理了,就是bean。等价于
@Component在dao层是@Repository,在Service是@Service,在controller层是**@Controller.**
这四个注解功能都是一样的,都是代表将某个类注册到Spring中,装配bean。
@Scope(“prototype”)
@Configuration代表这是一个配置类,就等于beans.xml
@ComponentScan(“com.kuang.pojo”)扫描包
@Import(KuangConfig2.class)
@ComponentScan(“com.kuang.pojo”)扫描包
@Import(KuangConfig2.class)