Spring MVC相关

摘要:
ContextLoadListener类用于创建Spring applicationcontext并将applicationcontext注册到servletContext中。Servlet API中有一个ServletContextListener接口。它可以监听ServletContext对象的生命周期,这实际上是Web应用程序的生命周期。当servlet容器启动或终止web应用程序时,它将触发ServletContextEvent事件,该事件由ServletContextListener处理。在ServletContextListener接口中定义了两个方法contextInitialized()和contextDestroyed()来处理ServletContextEvent事件。ContextLoaderListener侦听器的作用是在启动Web容器时自动组装ApplicationContext的配置信息。它读取web.xml中配置的context param中的配置文件,并在web容器初始化之前预先准备与业务对应的应用程序上下文;将创建的Applicationcontext放在ServletContext中,为springMVC部分的初始化做准备。

配置文件说明

  • web.xml, 相当于一个java web项目的配置文件

  • applicationContext.xml, spring配置文件, mybatis连接mysql配置文件

  • sql-map-config-mysql.xml,mybatis配置文件

  • application.properties, 配置文件常量

web.xml

  • Servlet相当于PHP

  • org.springframework.web.context.ContextLoaderListener相当于ThinkPHP的核心包

  • servlet和Filter初始化前和销毁后,都会给实现了servletContextListener接口的监听器发出相应的通知。

  • ContextLoadListener的定义,实现了上面的servletContextListener。这里用到了代理模式,简单的代理了ContextLoader类。ContextLoadListener类用来创建Spring application context,并且将application context注册到servletContext里面去。

  • 在 Servlet API中有一个ServletContextListener接口,它能够监听ServletContext对象的生命周期,实际上就是监听Web应用的生命周期。当Servlet容器启动或终止Web应用时,会触发ServletContextEvent事件,该事件由ServletContextListener来处理。在ServletContextListener接口中定义了处理ServletContextEvent 事件的两个方法contextInitialized()和contextDestroyed()。ContextLoaderListener监听器的作用就是启动Web容器时,自动装配ApplicationContext的配置信息。因为它实现了ServletContextListener这个接口,在web.xml配置了这个监听器,启动容器时,就会默认执行它实现的方法。由于在ContextLoaderListener中关联了ContextLoader这个类,所以整个加载配置过程由ContextLoader来完成。

  • 综上,ContextLoaderListener类起着至关重要的作用。它读取web.xml中配置的context-param中的配置文件,提前在web容器初始化前准备业务对应的Application context;将创建好的Application context放置于ServletContext中,为springMVC部分的初始化做好准备。

  • DispatchServlet就类似TP的前端入口index.php

  • Filter,主要作用:统一设置字符集等。依赖于servlet容器,过滤器实例只在初始化的时候调用一次。

  • 关于classpath, 如果只是一个普通的java web项目,classpath就是src目录,如果是用Maven构建的就是resources目录下。但是最终classpath都是映射到WEB-INF/classes

 

applicationContext.xml

  • context:component-scan:在xml配置了这个标签后,spring可以自动去扫描base-pack下面或者子包下面的java文件,如果扫描到有@Component @Controller@Service等这些注解的类,则把这些类注册为bean(bean就是实现了gettter和setter的一个类,用来和数据库交互,和PHP中的model类似)

  • mvc:annotation-driven:在使用Spring MVC来做web前端框架时,需要使用标签<mvc:annotation-driven/>,它是启用MVC注解的钥匙。如果没有使用这个标签,而仅仅是使用<context:component-scan/>标签扫描并注册了相关的注解类到bean中,那么相关的细节功能并不能使用(@Controller@RequestMapping等基本功能除外),比如返回类型的定义,@RestController等。<context:component-scan/>标签只是注册bean,<mvc:annotation-driven/>则是告诉框架让这些注解生效,是递进关系。

 

pom.xml

    • profiles标签下有两个profile分别对应了本地和线上两个环境,分别对应了main/resource/distribute/local|server, 两套配置,本地运行mvn clean package -Plocal -DVERSION=12345 -Dmaven.test.skip=false tomcat:run,线上应该是mvn clean package -Pserver -DVERSION=12345 -Dmaven.test.skip=false tomcat:run?

    • repositories下面的两个repository配置的是项目中依赖仓库的地址,如果在项目中设置了地址,那maven的配置文件setting.xml中的配置就不会用到,比如我本机maven的setting.xml配置的地址是maven.aliyun.com,但是项目中实际配置了我们公司内网的maven地址http://maven.fn.com,所以maven.aliyun.com就不会被用到,所有的依赖都是从maven.fn.com下载

sqlMapConfig.xml

项目命令

  • 本地运行btob-service:  mvn clean package -Plocal -DVERSION=12345 -Dmaven.test.skip=false tomcat:run

     

     

 

 

 

applicationContext.xml的解释:https://www.cnblogs.com/cczz_11/p/4363314.html

Spring MVC启动过程详解:https://www.cnblogs.com/RunForLove/p/5688731.html

Spring contextConfigLocation默认加载文件的位置: https://www.cnblogs.com/stonefeng/p/5746857.html

Spring MVC配置文件概述:https://www.yiibai.com/spring_mvc/springmvc_overview.html

浅谈jdbcTemplate和MyBatis的区别:https://www.cnblogs.com/ChenD/p/7080934.html

免责声明:文章转载自《Spring MVC相关》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇NodeJS stream 一:Buffer使用UltraISO工具制作U盘启动光盘下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

在springmvc中配置jedis(转)

主要学习https://github.com/thinkgem/jeesite。一下代码均参考于此并稍作修改。 1.jedis 首先,需要添加jedis: <!--jedis--> <dependency> <groupId>redis.clients</groupId> &l...

SpringMVC上传视频等大文件

前言:因自己负责的项目(jetty内嵌启动的SpringMvc)中需要实现文件上传,而自己对java文件上传这一块未接触过,且对 Http 协议较模糊,故这次采用渐进的方式来学习文件上传的原理与实践。该博客重在实践。 一. Http协议原理简介 HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出...

SpringMVC学习笔记3

---恢复内容开始--- 一、文件上传 1.上传相关jar包  2.网页上传 表单必须是post提交,编码必须是multipart/form-data  文件上传文本框必须起名。  3.在springmvc中配置文件上传解析器。  4.在控制层处理代码  二、拦截器 1.创建一个类,实现接口 HandlerInterceptor 2.重写接口中的...

SpringMVC加载配置Properties文件的几种方式

最近开发的项目使用了SpringMVC的框架,用下来感觉SpringMVC的代码实现的非常优雅,功能也非常强大, 网上介绍Controller参数绑定、URL映射的文章都很多了,写这篇博客主要总结一下SpringMVC加载配置Properties文件的几种方式 1.通过context:property-placeholde实现配置文件加载   1.1、在...

springMVC-错误消息的显示和国际化

显示:在页面添加<form:errors path="*">会把错误消息集中显示在一块 在页面添加<form:errors path="lastname">可以显示在对应字段的后面,分开显示 提示消息的国际化 * 每个属性在数据绑定和数据校验发生错误时,都会生成一个对应的Fielderror 对象。 * 当一个属性校验失败后,校验框...

Bug实录 | 第二篇:重写WebMvcConfigurationSupport后SpringBoot自动配置失效

一、背景 公司的项目前段时间发版上线后,测试反馈用户的批量删除功能报错。正常情况下看起来应该是个小BUG,可怪就怪在上个版本正常,且此次发版未涉及用户功能的改动。因为这个看似小BUG我了解到不少未知的东西,在这里和你们分享下。 先声明下具体原因为了避免耽误找解决问题方法的小伙伴们的宝贵时间,因为项目重写了WebMvcConfigurationSupport...