如下web.xml示例:
part1.用spring的配置加载contextConfigLocation
2.配置spring-mvc的contextConfigLocation
<context-param> <param-name>contextConfigLocation</param-name> <param-value> classpath:spring-*.xml </param-value> </context-param> --------------------------------------------------------------------------- <servlet> <servlet-name>spring-mvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!--查找controller位置的xml文件配置 --> <init-param> <param-name>contextConfigLocation</param-name> <!--查找这里可以配置多个,用逗号分割或者用通配符*也就是第二行 --> <param-value>/WEB-INF/classes/spring-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> <async-supported>true</async-supported> </servlet>
非常不幸,part1+2不能互相替代, 并且,如果两部分的xml重复命中,比如spring-*,就会导致springmvc的映射,scan重复加载两次。从启动日志和启动时长可以看到。 补充:重复加载还会导致配置的task,schadule任务重复执行!
所以,合理的做法是,把spring-mvc的定义单独摘出来定义在web容器启动的时候加载,名称也换成servlet-mvc.xml避免被spring重复加载, 而在spring的core xml定义中,不要出现mvc的东东
<servlet> <servlet-name>spring-mvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!--查找controller位置的xml文件配置 --> <init-param> <param-name>contextConfigLocation</param-name> <!--查找这里可以配置多个,用逗号分割或者用通配符*也就是第二行 --> <param-value>/WEB-INF/classes/servlet-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> <async-supported>true</async-supported> </servlet>
<!-- (Annotation方式配置services)enable component scanning (beware that this does not enable mapper scanning!) --> <context:component-scan base-package="com.xx.controller" /> <!-- enable autowire --> <context:annotation-config /> <!-- 默认的注解映射的支持 --> <mvc:annotation-driven /> <!-- 拦截器 --> <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/*/**"/> <bean class="com.xx.interceptors.DebugLogInterceptor" /> </mvc:interceptor> <mvc:interceptor> <mvc:mapping path="/user/**"/> <mvc:mapping path="/group/**"/> <mvc:mapping path="/groupalbum/**"/> <mvc:mapping path="/message/**"/> <mvc:exclude-mapping path="/user/login"/> <mvc:exclude-mapping path="/user/c/mobile"/> <mvc:exclude-mapping path="/user/c/email"/> <bean class="com.hoomic.interceptors.LoginInterceptor" /> </mvc:interceptor> </mvc:interceptors>
相关推荐
分页在Web应用中十分常见,尤其是在数据量大的情况下,它可以提高用户体验,避免一次性加载大量数据导致页面响应慢或者内存压力过大。 1. **Struts2分页**: Struts2通过Action类来接收和处理用户的请求。在分页场景...
Spring MVC 和 Hibernate 是两个在 Java Web 开发中广泛使用的框架。Spring MVC 是 Spring 框架的一部分,主要用于构建前端控制器,处理 HTTP 请求并分发到相应的业务逻辑。而 Hibernate 则是一个强大的 ORM(对象...
Spring MVC 和 JPA 是两种广泛应用于Java开发的技术。Spring MVC 是Spring框架的一部分,是一个轻量级的、模型-视图-控制器(MVC)架构,用于构建Web应用程序。JPA(Java Persistence API)是Java平台上的一个标准,...
在IT行业中,Spring MVC 和 MyBatis 是两个非常流行的开源框架,它们分别用于构建Web应用程序的模型-视图-控制器(MVC)架构和数据库操作。在这个特定的场景下,我们讨论的是如何在Spring MVC中结合MyBatis实现分页...
SpringMVC 的工作流程可以分为两个阶段:启动服务器初始化过程和单次请求过程。 1. 启动服务器初始化过程: * 执行 ServletContainersInitConfig 类,初始化 web 容器 * 执行 createServletApplicationContext ...
Spring Boot是基于Spring框架的快速开发工具,它简化了Spring应用程序的配置,提供了一键启动的便利性。 **七、Spring Security** Spring Security是Spring生态中的安全框架,提供身份验证、授权和会话管理等功能,...
为了更好的使用 SpringMVC,我们将 SpringMVC 的使用过程总共分两个阶段来分析,分别是启动服务器初始化过程和单次请求过程。 启动服务器初始化过程 在启动服务器初始化过程中,会执行 ...
Spring MVC是Spring的一个模块,它提供了构建Web应用程序的MVC架构实现。它将Web层分成了模型(Model)、视图(View)和控制器(Controller),通过分离关注点来简化Web层的开发。 49、描述一下DispatcherServlet的...
在Java企业级应用开发中,Spring和Hibernate是两个非常重要的框架。Spring是一个全面的后端应用框架,提供了依赖注入、AOP(面向切面编程)、MVC(模型-视图-控制器)等特性,而Hibernate则是一个强大的ORM(对象...
在IT行业中,Spring和Hibernate是两个非常重要的框架,它们分别在应用层和数据持久化层发挥着关键作用。Spring是一个全面的Java企业级应用开发框架,提供了依赖注入、AOP(面向切面编程)、MVC(模型-视图-控制器)...
MVC(Model-View-Controller)是一种软件设计模式,广泛应用于Web应用程序开发中,尤其在Java Web开发领域,MVC框架如Spring MVC、Struts等非常流行。MVC架构将应用程序分为三个核心部分:模型(Model)、视图(View...
【标题】"springmvc+maven+hibernate+ajax+分页" 描述了一个综合性的Web应用开发示例,它涵盖了多个关键的技术栈,包括Spring MVC作为MVC框架,Maven作为项目构建工具,Hibernate作为ORM(对象关系映射)框架,以及...
**分页**是大型Web应用中必不可少的功能,能够提高用户体验,避免一次性加载过多数据导致页面响应慢或服务器压力过大。在SSM框架中,实现分页通常有两种方式: 1. **自定义分页**: 开发者需要编写SQL查询,手动计算...
在Web开发方面,Spring MVC的改进包括支持RESTful风格的URL映射、数据绑定和验证。此外,3.0版本还引入了Spring Expression Language(SpEL),这是一个强大的表达式语言,用于在运行时查询和操作对象图。 对于CHM...
maven web 项目、补全目录结构、导入插件和坐标(tomcat、javax.servlet-api、spring-webmvc)、定义处理请求的功能类(UserController)、设置请求映射(请求路径)、将 springmvc 设定加载到 tomcat 容器中。 ...
2. **懒加载与级联操作**:通过懒加载机制,Hibernate可以优化数据的加载性能,只在真正需要时加载关联的数据。级联操作允许在一次操作中处理多个相关对象。 3. **缓存机制**:Hibernate支持二级缓存,提高数据读取...
例如,当获取一个实体对象时,与其关联的集合默认不会立即加载,而是在第一次访问时才加载,这就是延迟加载。 类之间的关系通过配置文件中的映射元素(如many-to-one、one-to-many、many-to-many)来定义,如一对一...
- 监听器在Web应用启动时加载配置文件,初始化Spring上下文。 - 容器加载Spring配置,创建Bean实例。 - 应用运行期间,Spring管理Bean的生命周期。 --- #### Hibernate篇 **1. Hibernate优缺点** - **优点**: ...