Jsp
表达式<%= %>
指令page/include
动作<jsp:useBean>/param/include/plugin/setProperty......等
对象application 对象是 javax.servlet.ServletContext 类的实例
对象config 对象是 javax.servlet.ServletConfig 类的实例
对象pageContext 对象是 javax.servlet:jsp.pageContext 类的一个实例
对象request/response/out/session/pageContext/page/config/application
Servlet
1.javax.servlet 其中包含定义servlet和servlet容器之间契约的类和接口。
2.javax.servlet.http 其中包含定义HTTP Servlet 和Servlet容器之间的关系。
3.javax.servlet.annotation 其中包含标注servlet,Filter,Listener的标注。它还为被标注元件定义元数据。
4.javax.servlet.descriptor,其中包含提供程序化登录Web应用程序的配置信息的类型。
继承关系Servlet
Servlet ServletConfig ServletContext顶层接口
↑ ↑ ↑
(GenericServlet实现类) ServletRequest ServletResponse JspPage ServletException ServletOutputStream Filter接口,并没有继承
↑ ↑ ↑ ↑
httpServlet httpServletRequest httpServletResponse httpJspPage httpSession(引用ServletContext)
DispatcherServlet封装了httpServlet(httpServlet->httpServletBean->frameworkServlet->DispatcherServlet)
DispatcherServlet就是一个前端控制器(接收request,进行response),集中提供请求处理机制。将url映射到指定的Controller处理,Controller处理完毕后将ModelAndView返回给DispatcherServlet,DispatcherServlet通过viewResovler进行视图解析,然后将model填充到view,响应给用户
DispatcherServlet类的内部实现
HandlerMapping处理器映射器:根据url查找Handler。(可以通过xml配置方式,注解方式)
HandlerAdapter处理器适配器:根据特定规则去执行Handler,编写Handler时需要按照HandlerAdapter的要求去编写。
Handler处理器(后端控制器):需要程序员去编写,常用注解开发方式。
Handler处理器执行后结果是ModelAndView,具体开发时Handler返回方法值类型包括:ModelAndView、String(逻辑视图名)、void(通过在Handler形参中添加request和response,类似原始 servlet开发方式,注意:可以通过指定response响应的结果类型实现json数据输出)
View Resolver视图解析器:根据逻辑视图名生成真正的视图(在springmvc中使用View对象表示)
View视图:jsp页面,仅是数据展示,没有业务逻辑。
Springmvc中封装request(RequestMappingHandlerMapping)都有实现HandlerMapping
Springmvc中封装request都有实现也InitializingBean接口,位于org.springframework.beans.factory
Springmvc中封装request都有实现也Aware接口,实现了Aware系列接口的bean可以访问Spring容器。这些Aware系列接口增强了Spring bean的功能,用于辅助Spring Bean以编程的方式调用Spring容器,也位于org.springframework.beans.factory
org.springframework.context.ApplicationContextAware接口
Spring框架启动时,ApplicationContext初始化实现了该接口的Spring Bean时,会将ApplicationContext的引用作为参数传递给创建的Bean实例,创建的Bean实例可以通过ApplicationContext的引用操作Spring框架的各种资源。
作用与@Autowired标注类似。位于org.springframework.beans.factory.annotation.Autowired
LoadTimeWeaverAware,加载Spring Bean时织入第三方模块,如AspectJ
BeanClassLoaderAware,加载Spring Bean的类加载器
BootstrapContextAware,资源适配器BootstrapContext,如JCA,CCI
ResourceLoaderAware,底层访问资源的加载器
BeanFactoryAware,声明BeanFactory
PortletConfigAware,PortletConfig
PortletContextAware,PortletContext
ServletConfigAware,ServletConfig
ServletContextAware,ServletContext
MessageSourceAware,国际化
ApplicationEventPublisherAware,应用事件
NotificationPublisherAware,JMX通知
org.springframework.beans.factory.BeanNameAware,声明Spring Bean的名字
这时程序处理完后返回页面
InternalResourceViewResolver查看是实现了ViewResolver接口,和Ordered接口,顾名思义,就是用来排序的。
Spring就提供了Ordered这个接口,来处理相同接口实现类的优先级问题。
然后ViewResolver解析为JstlView、View对象,该类AbstractView实现了View接口,View接口的主要作用是用于处理视图,然后返回给客户端。
1. ViewResolve的作用就是通过解析MdoelAndView,将MdoelAndView中的逻辑视图名变为一个真正的View对象,并将MdoelAndView中的Model取出
2. View的作用就是在获取到ViewResolve传来的View和Model,对Model进行渲染,通过View对象找到要展示给用户的物理视图,将渲染后的视图展示给用户。用很直白的话将就是将数据通过request存储起来,找到要展示给用户的页面,将这些数据放在页面中,并将页面呈现给用户。
-----------------