1.springmvc是单例模式的框架,但它是线程安全的,因为springmvc没有成员变量,所有参数的封装都是基于方法的,属于当前线程的私有变量. 因此是线程安全的框架。
SpringMVC工作流程:
- 用户向服务端发起一次请求,请求会首先到达前端控制器DispatcherServlet(中央控制器);
- DispatcherServlet接收到请求后调用HandlerMapping处理器映射器。由此得知该请求由哪个Controller处理;
- DispatcherServlet调用HandlerAdapter处理器适配器,告诉处理器适配器去执行哪一个Controller;
- HandlerAdapter处理器适配器执行对应的Controller并将处理结果封装到ModelAndView(数据和视图)中,并返回给DispatcherServlet;
- DispatcherServlet将ModelAndView交给ViewReslover视图解析器处理返回真正的视图;
- DispatcherServlet将模型数据填充到视图中,最终将结果返回给用户。
SpringMvc常用注解:
1、@Controller
springmvc中,Controller负责处理由前端控制器DispatcherServlet (中央控制器)分发的请求,将用户请求的数据经业务处理层处理后封装成Model,然后将Model返回给对应的View进行展示。无需继承和实现特定的类,只需@Controller标记一个类是Controller,然后通过@RequestMapping和@RequestParam等注解用以定义URL请求和Controler方法之间的映射,就能使Controller被外界访问到,不依赖HttpServletRequest和HttpServletResponse等HttpServlet对象。
2、RequestMapping
RequestMapping用来处理请求地址的映射,可用在类或方法上。用在类上面作为父路径。
RequestMapping属性:value 、method 、consumes、produces、params、headers
- value:指请求的实际路径,指定的地址可以是URI Template
- method:执行请求类型(GET、POST、PUT、DELETE)
- consumes:指处理请求的提交内容类型(Content-Type)例:application/json 、text/html
- produces:指定返回的内容类型,仅当request请求头中(Accept)类型中包含指定类型才返回。
- params:指定request中必须包含某些参数值时才处理方法。
- headers:指定request中必须包含某些header值时才处理该请求。
3、@Resource和@Autowired
未完待续~