spring
简单使用
1.在web.xml文件配置ContextLoaderListener
springMVC
简单使用:
1.在web.xml配置DispatcherServlet来处理指定的http请求路径,还要指定springMvc.xml配置文件位置来供DispatcherServlet来初始化springMVC。
2.在springMvc.xml文件中配置包扫描路径,来扫描@Controller。还要配置视图解析器,来指定返回哪个视图页面。
杂记:
1.支持Restful风格。?:代表一个字符、*:代表多个字符、**:代表多个路径
2.支持get/put/delete/post请求。用HiddenHttpMethodFiler过滤器解析_method参数来将request请求包装成对应的请求方式。
入参:
1.从url中获取参数,@PathVariable
2.绑定入参,@RequestParam和@RequestHeader和@CookieValue
或直接使用pojo类型当入参,还支持级联属性。如:name、dept.name
3.MVC方法可以接受这些ServletAPI类型的参数:
HttpServletRequest/HttpServletRespose/HttpSession
InputStream/OutputStream
Reader/Writer等
可以用Writer直接输出指定内容到页面。
出参:
1.ModelAndView:处理方法返回值类型为ModelAndView时,方法体即可通过该对象添加模型数据。
原理:其实是将数据都放到了HttpServletRequest中。
2.Map及Model:入参为org.springframework.ui.Model、org.springframework.ui.ModelMap或java.uti.Map时,
处理方法返回时,Map中的数据会自动添加到模型中。
3.SessionAttributes:将模型中的某个属性暂存到HttpSession中,以便多个请求之间可以共享这个属性。
4.ModelAttribute:方法的入参标注该注解后,入参的对象就会放到数据模型中。
拦截器:原理:拦截器是基于java反射机制(动态代理)实现
1.实现HandlerInterceptor接口
2.在springMvc.xml文件配置
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="自己的拦截器实现类包路径"/>
</mvc:interceptor>
</mvc:interceptors>
3.拦截器中三个方法执行时机:
perHandle:由DispatcherServle在调用真实方法之前一刻调用所有拦截器的perHandle方法。可以用来做权限和事务。
postHandle:由DispatcherServle在调用真实方法之后,但渲染视图异常处理之前调用。可以用来做数据和视图修改。
afterCompletion:由DispatcherServle在渲染视图之后调用
过滤器(Filter):它依赖于servlet容器。在实现上,基于函数回调
视图渲染:
1.DispatcherServlet拿到业务方法的结果ModelAndView后,
2.获取view对象,通过forward转发
备注:
1.springMVC容器可以引用springIOC容器中的bean,但springIOC容器不能引用springMVC中的bean.
2.springMVC的入口是Servlet,而Strust2是Filter.