1. web.xml

配置springmvc的入口DispatcherServlet,把所有的请求都提交到该Servlet。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"><!-- DispatcherServlet --><servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>/</url-pattern></servlet-mapping>
</web-app>

说明:
1:在web.xml里面导入前端控制器,通过< url-pattern >设置匹配规则,如上面设置的/,会匹配所有的url。
2:若url匹配成功,交给HandlerMapping处理映射器处理(具体的形式是业务代码中的Controller,通过RequestMapping进一步传递匹配)
3:HandlerAdapter处理器适配器,处理一些功能请求,返回一个ModelAndView对象(包括模型数据、逻辑视图名)
4:ViewResolver视图解析器,先根据ModelAndView中设置的View解析具体视图
5:然后再将Model模型中的数据渲染到View上。
6:若第2步的url未成功匹配,则相当于通过缺省匹配(有关匹配规则,下面会解释),直接由ViewResolver视图解析器负责映射资源文件。映射成功予以返回显示,否则则返回404错误。
原文:https://blog.csdn.net/windflybird/article/details/81054584
<servlet>必须含有<servlet-name><servlet-class>,或者<servlet-name><jsp-file>

  1. <servlet-name>用来定义servlet的名称,该名称在整个应用中必须是惟一的与<servlet-mapping>标签中的<servlet-name>名字相同。
  2. <servlet-class>用来指定servlet的完全限定的名称。
  3. <load-start-up>在servlet标签中写入该标签后,可以在服务器启动时自动创建该servlet,这个标签中还可以写入数字,来提供创建servlet的顺序。
  4. <servlet-mapping>含有<servlet-name><url-pattern>
    <url-pattern>表示浏览器访问的页面
    <servlet-name>名字与<servlet>中的<servlet-name>相同。

2.加载Servlet的过程
容器的Context对象对请求路径(URL)做出处理,去掉请求URL的上下文路径后,按路径映射规则和Servlet映射路径(<url- pattern>)做匹配,如果匹配成功,则调用这个Servlet处理请求。

3.Serclet是如何匹配路径的

  1. 精确路径匹配**?例子:比如servletA 的url-pattern为 /test,servletB的url-pattern为 / ,这个时候,如果我访问的url为http://localhost/test ,这个时候容器就会先进行精确路径匹配,发现/test正好被servletA精确匹配,那么就去调用servletA,也不会去理会其他的servlet了。
  2. 最长路径匹配**?*例子:servletA的url-pattern为/test/,而servletB的url-pattern为/test/a/,此时访问http://localhost/test/a时,容器会选择路径最长的servlet来匹配,也就是这里的servletB。
  3. 扩展匹配**?*如果url最后一段包含扩展,容器将会根据扩展选择合适的servlet。例子:servletA的url-pattern:*.action
  4. 如果前面三条规则都没有找到一个servlet,容器会根据url选择对应的请求资源。如果应用定义了一个default servlet,则容器会将请求丢给default servlet(什么是default servlet?后面会讲)。

4.工程名-servlet.xml

  1. 默认查找MVC配置文件的地址是:/WEB-INF/${servletName}-servlet.xml
  2. 可以通过配置修改MVC配置文件的位置,需要在配置DispatcherServlet时指定MVC配置文件的位置。
    我们在平台项目两个工程中分别使用了不同的配置方式,介绍如下:
    我们在business-client工程中按照默认方式查找MVC的配置文件,配置文件目录为: /WEB-INF/business-servlet.xml。工程目录结构如下所示:

    我们在public-base-server工程中,通过第2种方式进行配置,把spring-servlet.xml放到src/main/resources/config/spring-servlet.xml,则需要在配置DispatcherServlet时指定标签。具体代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"><!-- DispatcherServlet --><servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:controller/springmvc-servlet.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>/</url-pattern></servlet-mapping>
</web-app>

工程目录结构如下所示:

注意:用户可以配置多个DispatcherServlet来分别处理不同的url请求,每个DispatcherServlet上下文都对应一个自己的子Spring容器,他们都拥有相同的父Spring容器(业务层,持久(dao)bean所在的容器)。
classpath:在工程文件中有一个.classpath文件,打开后找到如下:
这里的path就是classpath的路径。打开这个文件路径可以看到不仅仅是java类会被编译成class存放在classes目录下,而且properties文件、xml文件也会放到这个目录下,但没有找到web.xml。

4.jsp页面的访问
先附上要访问的jsp页面:

这里要访问的是WEB-INF底下page文件夹中的index.jsp页面。
工程名-servlet.xml的代码只能访问到WEB-INF中的jsp文件,而不能具体到其子目录中的文件
原:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans><!--id实例化的名字,class实例化的类 --><bean id="simpleUrlHandlerMapping"class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"><property name="mappings"><props><prop key="/index">indexController</prop></props></property></bean><bean id="indexController" class="controller.IndexController"></bean>
</beans>

更改后:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans><!--id实例化的名字,class实例化的类 --><!-- 作用是把视图约定在 /WEB-INF/page/*.jsp 这个位置 --><bean id="viewResolver"class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/page/" /><property name="suffix" value=".jsp" /></bean><bean id="simpleUrlHandlerMapping"class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"><property name="mappings"><props><prop key="/index">indexController</prop></props></property></bean><bean id="indexController" class="controller.IndexController"></bean>
</beans>

prefix:意思是前缀
suffix:意思是后缀
原先的访问路径为:http://localhost:8080/springmvc/index
现在的访问路径为:http://localhost:8080/springmvc/index
没有变化,改变的地方在IndexController类中,
原:为ModelAndView mav=new ModelAndView("index.jsp");
现在:为ModelAndView mav=new ModelAndView("index");
参考资料:
****https://blog.csdn.net/believejava/article/details/43229361

Day2-springmvc初解相关推荐

  1. 缓存初解(五)---SpringMVC基于注解的缓存配置--web应用实例

    之前为大家介绍了如何使用spring注解来进行缓存配置 (EHCache 和 OSCache)的简单的例子,详见 Spring基于注解的缓存配置--EHCache AND OSCache 现在介绍一下 ...

  2. 【SpringMVC】概述

    概述: SpringMVC:是基于spring的一个框架, 实际上就是spring的一个模块, 专门是做web开发的.                       理解是servlet的一个升级 Sp ...

  3. 【SpringMVC】基本概念

    SpringMVC的基本概念 三层架构 我们的开发一般都是基于c/s或者b/s架构.在JavaEE开发中,几乎全都是基于B/S架构开发.在B/S架构中,系统标准的三层架构包括:表现层,业务层,持久层. ...

  4. SSM框架整合(Spring+SpringMVC+MyBatis)

    输出结果 1.Maven Web项目创建 之前有写过Eclipse+Maven创建web项目的帖子,如果需要,请参考这里写链接内容 创建好项目之后因为入下图: 2.SSM整合 2.1 引入需要的JAR ...

  5. SpringBoot-web开发(四): SpringMVC的拓展、接管(源码分析)

    [SpringBoot-web系列]前文: SpringBoot-web开发(一): 静态资源的导入(源码分析) SpringBoot-web开发(二): 页面和图标定制(源码分析) SpringBo ...

  6. SpringMVC——通俗易懂讲讲Ajax~

    聊聊Ajax 一.什么是Ajax 二.iframe标签简单伪造Ajax 三.Ajax的实现 1. 基本概念的了解 Ajax的核心是什么? XMLHttpRequest是什么? Ajax数据传输的数据格 ...

  7. Jackson、FastJson快速入门(整合SpringMVC)

    目录 1. 什么是 JSON 2. JSON 语法规则 3. JSON 与 JS 对象的关系 4. JSON 和 JS 对象互转 5. Jackson-数据格式转换 1. 环境搭建 2. 对象转jso ...

  8. RESTful风格及其SpringMVC实现

    目录 1.RESTful概念 2.RESTful功能 3.对比:传统方式操作资源 4.SpringMVC实现传统方式操作资源 5.使用RestFul操作资源 6.SpringMVC实现RESTful操 ...

  9. 使用注解开发SpringMVC详细配置教程

    目录 1.使用注解开发SpringMVC 1.新建一个普通的maven项目,添加web支持 2.在pom.xml中导入相关依赖 3.配置web.xml 4.编写SpringMVC配置文件 1. 自动扫 ...

  10. SpringMVC的form:form表单的使用

    为什么要使用SpringMVC的form:form表单,有两个原因:一是可以更加快捷的完成表单的开发,比如会替你做好数据类型装换等本来需要你自己动手的工作.其次就是能够更加方便的实现表单回显. 首先要 ...

最新文章

  1. linux shell 实现循环输出
  2. 唯一索引允许为空吗_一次 MySQL 索引面试,被面试官怼的体无完肤!
  3. php一次性执行多条sql_PHP循环执行多条SQL
  4. 利用python爬虫(part6)--用Xpath匹配带来的数据合并问题
  5. caffe data层_Caffe Softmax层的实现原理?
  6. 思科修复运营商级路由器中的两个已遭利用漏洞
  7. mac80211概览
  8. 黑莓手机BlackBerry Servicebook(简称SB)应用详解指南
  9. mac如何挂载移动硬盘、U盘
  10. 撼龙图怎么开鸿蒙炁灵,《一人之下》藏金图怎么玩 撼龙藏金图高概率出绝世炁灵技巧...
  11. 淘宝API接口:获取sku详细信息
  12. dz每个php模板页文件,dz模板引擎分析
  13. 自动驾驶感知——红外传感器
  14. 读分布式服务框架原理与实践读后感
  15. 工业智能网关BL110详解之九十: 实现西门子S7-1200 PLC接入金鸽modbus云平台
  16. deepin 命令行卸载软件
  17. 基于java springboot vue elementui超市管理系统源码
  18. 《写给大家看的设计书》读后记录
  19. axios接口报错-参数类型错误解决
  20. 看书标记【R语言 商务数据分析实战5】

热门文章

  1. 时隔5年,再次接触数字图像处理
  2. 【洛谷 2709】小B的询问
  3. ASP.NET Core 模型验证的一个小小坑
  4. linux查看当前shell的方法
  5. 2015年蓝桥杯C/C++ B组题目题解
  6. 户籍改革更进一步!我国将推动户籍准入年限同城化累计互认
  7. 硅谷大佬为何加速逃离加州:赋税过重,生活质量持续恶化
  8. 有关bbr以及锐速的更新搬运
  9. mfc对话框的二次切分
  10. 信捷伺服刚性调整_伺服系统增益协调的作用及举例说明,文末有伺服产品调试学习PPT!...