springMVC:一:创建第一个项目01.引入需要的jar包web  webmvc  context  context-support02.在web.xml文件中 配置我们需要的核心控制器  DispatcherServlet<servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class></servlet>注意点:<servlet-name>springmvc</servlet-name>那么我们springmvc的核心配置文件名称 必须是  springmvc-servlet.xml因为底层明确了文件的名称是  <servlet-name>-servlet.xml这个文件的位置 现阶段 只能在web-inf 下面03.在web-inf文件下创建需要的核心配置文件   springmvc-servlet.xml头部信息增加xmlns:mvc="http://www.springframework.org/schema/mvc"http://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsd04.书写一个controller(其实就是我们的servlet) 继承 AbastractController二:第一个项目的整体流程01.用户在index.jsp页面中点击Hello超链接
02.点击之后请求路径是  /hello   <a href="hello">Hello</a>
03.会被我们web.xml文件中配置的DispatcherServlet拦截
04.默认执行doDispatch()HandlerExecutionChain mappedHandler = null;  处理器执行链mappedHandler = this.getHandler(processedRequest); 根据用户的请求获取处理器执行链4.1.跟进getHandler()看到了for (HandlerMapping hm : this.handlerMappings)handlerMappings是一个List<HandlerMapping>HandlerExecutionChain handler = hm.getHandler(request);hm是List<HandlerMapping>是集合中的一个元素===》HandlerMapping根据用户的请求在处理器映射器中查询Handler4.2.跟进getHandler()看到了Object handler = getHandlerInternal(request); 获取需要执行的HandlerHandlerExecutionChain executionChain = getHandlerExecutionChain(handler, request);4.3.跟进getHandlerExecutionChain发现方法中有处理器拦截器for (HandlerInterceptor interceptor : this.adaptedInterceptors)所以mappedHandler(处理器执行链)中包含一个即将执行的handler和一些列的interceptor(拦截器)05.HandlerAdapter ha = getHandlerAdapter(mappedHandler.getHandler());获取处理器适配器跟进 getHandlerAdapter()for (HandlerAdapter ha : this.handlerAdapters)handlerAdapters是一个List<HandlerAdapter>ha就是List<HandlerAdapter>其中一个元素 就是HandlerAdapterif (ha.supports(handler)) {return ha;}5.1:跟进supports进入了HandlerAdapter====》是一个接口!接口有5个实现类!默认执行3个!在webmvc的jar包中的根目录下找到DispatcherServlet.properties默认的处理器映射器的配置org.springframework.web.servlet.HandlerMapping=org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping,\org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping默认的处理器适配器的配置org.springframework.web.servlet.HandlerAdapter=org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter,\org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter,\org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter5.2:回到doDispatch()mv = ha.handle(processedRequest, response, mappedHandler.getHandler());跟进handle()发现 HandlerAdapter====》是一个接口的handle()有5个实现首先进入HttpRequestHandlerAdapter,我们的HelloController和HttpRequestHandler没关系,继续执行下一个Adapter进入SimpleControllerHandlerAdapter,我们的HelloController继承了AbstractController,AbstractController实现了Controller! 产生了关系!5.3:跟进SimpleControllerHandlerAdapter类中的handler()return ((Controller) handler).handleRequest(request, response);只有转换成Controller才有handleRequest这个方法!关键是我们的HelloController中的方法名称是handleRequestInternal()001.只有转换成Controller才有handleRequest这个方法!002.AbstractController重写了Controller的handleRequest003.但是返回的是一个handleRequestInternal()004.我们的HelloController中的方法名称是handleRequestInternal()005.所以执行Controller的handleRequest就是执行HelloController中的handleRequestInternal()三:配置视图解析器为什么?01.我们controller中肯定会返回很多页面02.页面的前缀/WEB-INF  ==>安全03.后缀都是以.jsp结尾我们现在统一把所有的前缀和后缀写在一个地方!只要是后台有返回页面,我会自动的给页面加前缀和后缀!这时候就需要我们配置视图解析器有疑问?通关观察dispatcherServlet.properties文件我们看到了有默认的试图解析器就是InternalResourceViewResolver!那为什么我们还需要设置?因为我们需要对InternalResourceViewResolver视图解析器中的属性赋值!InternalResourceViewResolver的父类中 UrlBasedViewResolver的属性没有值private String prefix = "";private String suffix = "";四:静态资源的访问问题的引入:01.我们在web.xml文件中配置核心控制器的url-pattern是什么?  是  /02./  不能匹配 .jsp  .js .css  .png....后缀路径03.如果我们项目中需要这些文件,是不能使用的!所以需要设置允许静态资源的访问!解决方式3种01.去tomcat服务器中找到conf/web.xml中有如下配置<servlet-mapping><servlet-name>default</servlet-name><url-pattern>/</url-pattern>   不会匹配静态文件</servlet-mapping>在web.xml文件中配置<servlet-mapping><servlet-name>default</servlet-name><url-pattern>*.jpg</url-pattern></servlet-mapping>问题?如果我们的图片后缀比较多!那么我们的web.xml文件中的节点是不是很多!02.在springmvc核心配置文件中配置   推荐使用注释掉web.xml文件中的配置03.在springmvc核心配置文件中配置<mvc:default-servlet-handler/>

转载于:https://www.cnblogs.com/qiantu/p/7717460.html

创建第一个springmvc项目,静态资源的访问相关推荐

  1. idea创建第一个SpringMVC项目

    这几天一直想用idea重新学一下Spring,重温一下Spring的知识,今天我想用idea创建一个SpringMVC项目. 一,首先新建一个Spring项目,勾选如下 点击Next 填写projec ...

  2. SpringMVC解决静态资源不能访问

    解决: 直接在SpringMVC的xml文件中加一行配置: <mvc:default-servlet-handler/> 问题根源: 做项目迁移的时候,原来控制层的框架是Struts2,现 ...

  3. SpringMVC常用配置-添加静态资源处理器-针对SpringMVC中静态资源无法访问的问题...

    转载于:https://www.cnblogs.com/weilu2/p/springmvc_resourcehandler_registry.html

  4. 创建一个springMVC项目总结

    创建一个springMVC项目总结 1.如何搭建起一个Spring mvc的环境并运行程序. 参考:http://www.cnblogs.com/bigdataZJ/p/springmvc1.html ...

  5. --------------springMVC的开篇,以及底层执行流程,配置视图解析器,静态资源的访问,流程图,工作原理...

    springMVC: 一:创建第一个项目 01.引入需要的jar包 web webmvc context context-support 02.在web.xml文件中 配置我们需要的核心控制器 Dis ...

  6. 第一个springmvc项目

    cho1-hello-springmvc:第一个springmvc项目 一. 需求: 用户在页面发起一个请求,请求交给springmvc的控制器对象,并显示请求的处理结果(在结果页面显示一个欢迎语句) ...

  7. java 资源映射访问本地磁盘的文件或者访问项目静态资源

    1.创建一个配置类实现MvcConfigur接口或者继承WebMvcConfigurationSupport类(WebMvcConfigurationAdapter在Spring5以后 已过时) 1. ...

  8. 将Maven集成到idea中并创建第一个Maven项目

    在将Maven集成到idea中之前,你需要确保你已经安装过了Maven,在DOS下输入mvn -v如果显示如下,则证明已安装,如果没有安装,可以参考Maven的下载安装,如果你不知道Maven的一些基 ...

  9. VsCode创建第一个vue项目

    转载自:https://www.cnblogs.com/z45281625/p/9015380.html VsCode创建第一个vue项目 使用vue-cli快速构建项目  ( vue-cli 是vu ...

  10. springmvc之静态资源访问不到

    问题描述:项目正常启动,可以访问页面,但是无法找到静态资源文件,如css,js等文件资源. 控制台: No mapping found for HTTP request with URI [/Spri ...

最新文章

  1. javascript正则表达式介绍
  2. conversation:in Good common
  3. Android Studio Library 模块中 Native 代码进行 debug 的一些坑
  4. linux下使用C++操作mysql
  5. 蓝桥杯 基础练习 十六进制转八进制
  6. Servlet 登录时数据校验
  7. JSP:src路径里有中文,产生乱码问题
  8. 潜移默化学会WPF(样式)-- DataGrid(转载)
  9. 隐藏在SWT、Swing、AWT背后的故事
  10. 什么是电子元器件 电子元件和电子器件的区别
  11. 应急管理大数据ppt_大数据在应急管理中的应用
  12. python(三):时间窗口
  13. php追加append,PHP ArrayObject append()用法及代码示例
  14. 【系统优化】解决windows11桌面切换卡顿(非重装以及关闭特效)
  15. 鸿蒙基于linux系统,鸿蒙操作系统(HarmonyOS)是基于Linux的吗?尽管已知道它是基于微内核的...
  16. 微软这个系统,90% 的人都没用过!
  17. java 枚举 总结,java枚举总结
  18. RationalDMIS 2020 自动测量圆柱
  19. ansa打开catia文件_ANSA下载,ANSA购买,ANSA试用,ANSA介绍,ANSA评价
  20. SQL Server 动态数据掩藏(Dynamic Data Masking)探索和实施

热门文章

  1. Python第四课作业,99乘法表和猜数字小游戏(编程)
  2. 简单谈谈城市大脑在智慧城市管理体系中有何作用
  3. 电源管理芯片代理商:电源管理芯片要求及价格波动
  4. 【uni-app】懂你找图--首页图片详情模块
  5. 德州申请著作权有以下几点好处
  6. 如何在Meego上网本系统安装Dropbox等应用
  7. 北京2008年以来全市在建在售小产权房项目分布图 (zz)
  8. 软件危机,软件生存周期(总结)
  9. Python获取秒级时间戳与毫秒级时间戳以及python中时间、日期、时间戳的转换
  10. 微信还没开始付费订阅 但帮你变现的工具已经有了