创建第一个springmvc项目,静态资源的访问
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项目,静态资源的访问相关推荐
- idea创建第一个SpringMVC项目
这几天一直想用idea重新学一下Spring,重温一下Spring的知识,今天我想用idea创建一个SpringMVC项目. 一,首先新建一个Spring项目,勾选如下 点击Next 填写projec ...
- SpringMVC解决静态资源不能访问
解决: 直接在SpringMVC的xml文件中加一行配置: <mvc:default-servlet-handler/> 问题根源: 做项目迁移的时候,原来控制层的框架是Struts2,现 ...
- SpringMVC常用配置-添加静态资源处理器-针对SpringMVC中静态资源无法访问的问题...
转载于:https://www.cnblogs.com/weilu2/p/springmvc_resourcehandler_registry.html
- 创建一个springMVC项目总结
创建一个springMVC项目总结 1.如何搭建起一个Spring mvc的环境并运行程序. 参考:http://www.cnblogs.com/bigdataZJ/p/springmvc1.html ...
- --------------springMVC的开篇,以及底层执行流程,配置视图解析器,静态资源的访问,流程图,工作原理...
springMVC: 一:创建第一个项目 01.引入需要的jar包 web webmvc context context-support 02.在web.xml文件中 配置我们需要的核心控制器 Dis ...
- 第一个springmvc项目
cho1-hello-springmvc:第一个springmvc项目 一. 需求: 用户在页面发起一个请求,请求交给springmvc的控制器对象,并显示请求的处理结果(在结果页面显示一个欢迎语句) ...
- java 资源映射访问本地磁盘的文件或者访问项目静态资源
1.创建一个配置类实现MvcConfigur接口或者继承WebMvcConfigurationSupport类(WebMvcConfigurationAdapter在Spring5以后 已过时) 1. ...
- 将Maven集成到idea中并创建第一个Maven项目
在将Maven集成到idea中之前,你需要确保你已经安装过了Maven,在DOS下输入mvn -v如果显示如下,则证明已安装,如果没有安装,可以参考Maven的下载安装,如果你不知道Maven的一些基 ...
- VsCode创建第一个vue项目
转载自:https://www.cnblogs.com/z45281625/p/9015380.html VsCode创建第一个vue项目 使用vue-cli快速构建项目 ( vue-cli 是vu ...
- springmvc之静态资源访问不到
问题描述:项目正常启动,可以访问页面,但是无法找到静态资源文件,如css,js等文件资源. 控制台: No mapping found for HTTP request with URI [/Spri ...
最新文章
- javascript正则表达式介绍
- conversation:in Good common
- Android Studio Library 模块中 Native 代码进行 debug 的一些坑
- linux下使用C++操作mysql
- 蓝桥杯 基础练习 十六进制转八进制
- Servlet 登录时数据校验
- JSP:src路径里有中文,产生乱码问题
- 潜移默化学会WPF(样式)-- DataGrid(转载)
- 隐藏在SWT、Swing、AWT背后的故事
- 什么是电子元器件 电子元件和电子器件的区别
- 应急管理大数据ppt_大数据在应急管理中的应用
- python(三):时间窗口
- php追加append,PHP ArrayObject append()用法及代码示例
- 【系统优化】解决windows11桌面切换卡顿(非重装以及关闭特效)
- 鸿蒙基于linux系统,鸿蒙操作系统(HarmonyOS)是基于Linux的吗?尽管已知道它是基于微内核的...
- 微软这个系统,90% 的人都没用过!
- java 枚举 总结,java枚举总结
- RationalDMIS 2020 自动测量圆柱
- ansa打开catia文件_ANSA下载,ANSA购买,ANSA试用,ANSA介绍,ANSA评价
- SQL Server 动态数据掩藏(Dynamic Data Masking)探索和实施