<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
ContextLoaderListener的作用就是启动Web容器时,自动装配
ApplicationContext.xml的配置信息。因为它实现了ServletContextListener这个接口,在web.xml配置这个监听器,启动容器时,就会默认执行它实现的方法。
<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*:applicationContext-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
在web.xml中通过contextConfigLocation配置spring,contextConfigLocation参数定义了要装入的 Spring 配置文件。
classpath 是指在发布到tomcat后打包的.class文件目录 webapps/WEB-INF/classes 存放编译之后
的字节码文件(其中包括自动生成的resource文件夹 里面存档spring spring-mvc等配置文件)
classpath:只会到你的class路径中查找找文件;
classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找。
< load-on-startup>1< /load-on-startup>的作用
- 1)load-on-startup元素标记容器是否在启动的时候就加载这个servlet(实例化并调用其init()方法)。
- 2)它的值必须是一个整数,表示servlet应该被载入的顺序
- 3)当值为0或者大于0时,表示容器在应用启动时就加载并初始化这个servlet;
- 4)当值小于0或者没有指定时,则表示容器在该servlet被选择时才会去加载。
- 5)正数的值越小,该servlet的优先级越高,应用启动时就越先加载。
- 6)当值相同时,容器就会自己选择顺序来加载。
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
< url-pattern>/< /url-pattern> 会匹配到/login这样的路径型url,不会匹配到模式为*.jsp这样的后缀型url
< url-pattern>/< /url-pattern> 会匹配所有url:路径型的和后缀型的url(包括/login,.jsp,.js和.html等)
因此很好理解 为什么前端控制器 会拦截所有的请求 但是不会拦截静态资源 例如 123.html 123.jsp
但是会拦截/123 (把/123映射到HandleMapping 匹配 当做是一个servlet) 所以浏览器客户端访问URL
的时候 填写 例如index.html index.jsp(放在webapp下)的资源文件可以直接访问 因为并没有经过前端控
制器的拦截 只是单纯的认为是一个静态资源