A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© sout(黑马) 初级黑马   /  2019-5-31 18:35  /  1028 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

SpringMVC_快速入门Spring集成web环境集成思路
  • 解决spring在web项目中,Servlet频繁创建容器,加载配置文件的问题
通过监听器,在服务创建时加载Spring容器,并将spring容器对象放入ServletContextListener域中
  • 配置文件的名称耦合
在web.xml中配置全局初始化参数(context-param),再通过ServletContext获取出来
  • ApplicationContext接收的对象名称耦合
创建WebApplicationContextUtils,通过传入servletContext对象获取ApplicationContext对象
Spring提供ContextLoaderListener
该监听器内部加载Spring配置文件,创建应用上下文对象,并存储到ServletContext域中,提供了一个客户端工具WebApplicationContextUtils供使用者获得应用上下文对象。
步骤
  • 导入spring-web坐标
  • 配置ContextLoaderListener监听器
  • 使用WebApplicationContextUtils获得应用上下文对象

SpringMVC使用流程
  • 导入SpringMVC相关坐标(充当前端控制器)
  • 配置SpringMVC核心控制器DispatcherServlet
  • 创建Controller类和视图层页面
  • 编写Controller(POJO)
  • 将Controller使用注解配置到Spring容器中(@Controller)
  • 配置spring-mvc.xml文件(配置组件扫描)
  • 客户端发起请求测试
执行流程(*)
  • 客户端请求前端控制器(DispatcherServlet)
  • 前端控制器(DispatcherServlet)在处理器映射器(HandlerMapping)中请求查询Handler,
  • 处理器映射器(HandlerMapping)返回处理器执行链(HandlerExecutionChain)到前端控制器(DispatcherServlet)
  • 前端控制器(DispatcherServlet)在处理器适配器(HandlerAdaptor)请求执行Handler
  • 处理器适配器(HandlerAdaptor)请求处理器(Handler/contrlloer)
  • 处理器(Handler/contrlloer)将ModelAndView响应至处理器适配器(HandlerAdaptor)
  • 处理器适配器(HandlerAdaptor)返回ModelAndView至前端控制器(DispatcherServlet)
  • 前端控制器(DispatcherServlet)请求视图解析器(ViewResolver)
  • 视图解析器(ViewResovler)返回视图View对象
  • 前端控制器(DispatcherServlet)对视图页面jsp进行渲染(将模型数据填充到视图中)
  • 前端控制器(DispatcherServlet)将页面响应回客户端
关键Bean
  • Controller:处理器/页面控制器,做的是MVC中的C的事情,但控制逻辑转移到前端控制器了,用于对请求进行处理;
  • HandlerMapping:请求到处理器的映射,如果映射成功返回一个HandlerExecutionChain对象(包含一个Handler处理器(页面控制器)对象、多个HandlerInterceptor拦截器)对象;如BeanNameUrlHandlerMapping将URL与Bean名字映射,映射成功的Bean就是此处的处理器;
  • HandlerAdapter:HandlerAdapter将会把处理器包装为适配器,从而支持多种类型的处理器,即适配器设计模式的应用,从而很容易支持很多类型的处理器;如SimpleControllerHandlerAdapter将对实现了Controller接口的Bean进行适配,并且掉处理器的handleRequest方法进行功能处理;
  • ViewResolver:ViewResolver将把逻辑视图名解析为具体的View,通过这种策略模式,很容易更换其他视图技术;如InternalResourceViewResolver将逻辑视图名映射为jsp视图;
  • LocalResover:本地化解析,因为Spring支持国际化,因此LocalResover解析客户端的Locale信息从而方便进行国际化;
  • ThemeResovler:主题解析,通过它来实现一个页面多套风格,即常见的类似于软件皮肤效果;
  • MultipartResolver:文件上传解析,用于支持文件上传;
  • HandlerExceptionResolver:处理器异常解析,可以将异常映射到相应的统一错误界面,从而显示用户友好的界面(而不是给用户看到具体的错误信息);
  • RequestToViewNameTranslator:当处理器没有返回逻辑视图名等相关信息时,自动将请求URL映射为逻辑视图名;
  • FlashMapManager:用于管理FlashMap的策略接口,FlashMap用于存储一个请求的输出,当进入另一个请求时作为该请求的输入,通常用于重定向场景。
注解解析
@RequestMapping:放到方法或者类上,建立请求URL和处理请求方法之间的对应关系
位置
  • 类上:访问的一级目录
  • 方法上:如果该类上没有@RequestMapping注解,则可以通过此路径直接访问到,反之,则需要加上一级目录

#####属性
value:请求的url路径,等同于path
method:请求方式
  • 枚举方式(method = RequestMethod.POST)
params:请求参数条件
  • params = {"username"} :请求参数中必须有username存在,
    • 否则报异常: Parameter conditions "name" not met for actual request parameters:
  • params = “{id!5}” :请求参数中的id不等于5
组件扫描优化<context:component-scan base-package="work.hsy"><!-- 包含此注解类 --><context:include-filter type="annotation"expression="org.springframework.stereotype.Controller"/> <!-- 不包含此注解类 --><context:exclude-filter type="annotation"expression="org.springframework.stereotype.Controller"/> </context:component-scan>XML配置解析视图解析器配置跳转方式
return "user.jsp" :默认转发(forward) return "forward:user.jsp"
可选择重定向Redirect:return "redirect:user.jsp"
配置内部资源视图解析器<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">    <!-- 拼接前缀 -->    <property name="prefix" value="/admin/"/>    <!-- 拼接后缀 -->    <property name="suffix" value=".jsp"/></bean>

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马