这两天在研究spring dm中web module时候遇到些问题,现已成功解决,现在将问题和解决方法发布如下,避免大家继续走弯路,呵呵。
1.开发的时候请使用OSGI推荐的Import-Package方式来导入包,不要直接设置工程的依赖,这个不是我遇到的问题,也拿出来说下,因为OSGI的开发方式还是有些不一样的。
2.在spring的bean定义文件中,如果有用到spring框架的类,请将其package使用Import-Package导入到class-path中,比如org.springframework.web.servlet.handler.SimpleUrlHandlerMapping等类;
3.在MANIFEST.MF文件中指定了Web-DispatcherServletUrlPatterns时千万要注意它的规则,首先它必须是符合servlet的url-pattern的,其规则如下:
在web.xml文件中,以下语法用于定义映射:
1.以”/’开头和以”/*”结尾的是用来做路径映射的。
2.以前缀”*.”开头的是用来做扩展映射的。
3.“/” 是用来定义default servlet映射的。
4.剩下的都是用来定义详细映射的。比如: /aa/bb/cc.action
所以,为什么定义”/*.action”这样一个看起来很正常的匹配会错?因为这个匹配即属于路径映射,也属于扩展映射,导致容器无法判断。
同时,spring的mvc在进行url匹配的时候是将Web-DispatcherServletUrlPatterns去掉后再匹配mappings的,如spring的定义文件的mappings如下:
<property name="mappings">
<props>
<prop key="/abcd/test.do">test_Controller</prop>
</props>
</property>
如果你的Web-DispatcherServletUrlPatterns指定为/abcd/*,那么访问地址应该是:/abcd/abcd/test.do,而不是/abcd/test.do。这个问题弄得我很郁闷啊,不过终于解决了,呵呵。
4.如果在web module中有用到filter,如下步骤:
1.新建类实现javax.servlet.Filter接口;
2.在Bundle中Import-Package如下包:org.springframework.web.filter,因为spring是用DelegatingFilterProxy类来做filter委托代理的,这个是运行时的要求,编译并不会报错的,OSGI的class loader原因,呵呵;
3.然后在bean定义文件中设置filter的bean,命名ID,然后在MANIFEST.MF中加入:Web-FilterMappings: myfilter;url-patterns:="*.do"行,其中url-patterns可以使用逗号分割多个表达式,但必须都是符合servlet规范的url-patterns.
完成上面的步骤后,我们就可以使用filter了在spring web module。
分享到:
相关推荐
在基于OSGi和Spring开发Web应用时,需要指定Target Platform到所用到的所有的bundle包的目录中,创建一个Service接口bundle和一个接口bundle的实现bundle,然后将这个实现类发布成为一个OSGI服务。最后,创建一个WEB...
在源码中,主要涉及到以下几个关键组件: 1. DispatcherServlet:这是Spring MVC的前端控制器,它负责接收HTTP请求,并根据配置找到合适的处理器进行处理。 2. HandlerMapping:这个接口定义了如何将请求映射到...
Spring5 是一个重要的版本,距离Spring...随着 Java、JavaEE 和其他一些框架基准版本的增加,SpringFramework5 取消了对几个框架的支持。例如: Portlet Velocity JasperReports XMLBeans JDO Guava
该模块还支持了几个面向 web 的任务,如透明的处理多文件上传请求及将请求参数同业务对象绑定起来。 Spring MVC 模块 Spring 提供 MVC 框架构建 web 应用程序。Spring 可以很轻松的同其他 MVC 框架结合,但 Spring...
标题中的“在自己的项目中利用axis2+spring发布webservice与客户端调用包括session”指出的是一个关于在实际项目开发中如何使用Axis2和Spring框架来发布Web服务,并且涉及了Web服务客户端调用以及会话(session)...
- **定义**: Spring框架的设计理念之一是非侵入性,这意味着基于Spring开发的应用程序中的对象并不需要依赖于Spring的API。 - **意义**: 这种设计使得Spring与其他框架和库的集成变得更加容易,同时也降低了应用...
Spring框架的核心架构主要包括以下几个模块: - **Spring Core Container**:包括了BeanFactory和ApplicationContext两个核心接口,它们是Spring IoC容器的基础。 - **BeanFactory**:是最基本的容器,提供了配置...
3. 配置 Web 应用:在每个需要共享 Spring 上下文的 Web 应用的 `WEB-INF/jboss-deployment-structure.xml` 文件中,引入刚才创建的 JBoss 模块,这样应用就能访问到共享的上下文。 4. 使用上下文:在 Web 应用的...
整合过程中,需要注意以下几点: 1. Spring MVC配置:设置内容类型为JSON,以便AngularJS能正确解析响应。 2. 安全性:考虑跨域资源共享(CORS)策略,确保前后端通信的安全。 3. 数据交互:定义RESTful API接口,...
在集成开发环境(如IntelliJ IDEA)中创建Spring Boot工程,通常包括新建Spring Initializr工程、编辑工程以及运行工程几个步骤。新建工程时,可以指定项目的Group、Artifact以及依赖项。系统会自动生成一个启动类,...
在"manage-master"这个项目中,我们可以预期有以下几个主要模块: 1. **父模块**(Parent):包含所有子模块的公共依赖和配置。 2. **后端服务模块**(Service Module):包含业务逻辑和服务接口,可能使用Spring的...
在实际操作中,多模块项目的结构通常包括以下几个部分: 1. **父模块(Parent Module)**:父模块主要用来管理子模块间的版本依赖,设置全局的构建配置,如编码规范、插件版本等。通过在pom.xml或build.gradle文件...
总结来说,Gradle构建(war) web项目涉及以下几个关键点: 1. 应用'war'插件:提供构建web应用的基本配置。 2. 配置依赖:通过`dependencies`声明项目所需的库。 3. 设置源代码和资源目录:确保编译和打包时正确处理...
在整合Spring Boot与Activiti时,我们需要以下几个关键步骤: 1. **添加依赖**:在Spring Boot的`pom.xml`文件中,我们需要引入Activiti的依赖。这通常包括`activiti-spring`和`activiti-modeler`等模块,确保...
【Spring4GWT】是一个将Spring框架与Google Web Toolkit(GWT)集成的项目源码,旨在帮助开发者在GWT应用程序中充分利用Spring的功能,如依赖注入、服务定位、AOP等。这个压缩包包含了实现这一集成的关键代码和配置...
Spring框架的核心组成部分包括以下几个关键模块: 1. **核心容器(Core Container)** - **Core module**:提供Spring框架的基本功能,是Spring的基础。 - **Bean module**:提供BeanFactory的实现,这是Spring...
这通常涉及到以下几个步骤: 1. **环境配置**:首先,我们需要确保正确安装了JDK、Tomcat服务器以及相关的开发工具,如Eclipse或IntelliJ IDEA。同时,需要在项目中引入Tapestry4、Spring和Hibernate的依赖库。 2....
WebWork2的架构主要包括以下几个部分: - **Action**:处理具体的业务逻辑。 - **Interceptor**:类似于过滤器,可以在请求到达Action之前或之后执行某些操作。 - **Module**:一组相关的Action和配置文件的集合。 -...
创建一个多模块Spring Boot项目时,我们需要考虑以下几个步骤: 1. **初始化Gradle项目**:在IDEA中选择“New Project”,然后选择“Gradle”,勾选“Use Gradle Wrapper”并指定Java版本。确保选择“空项目”,...
接下来,为了使Spring Boot应用可以被Tomcat识别为一个标准的Servlet容器应用,我们需要在`src/main/webapp/WEB-INF`目录下创建`web.xml`文件。但要注意,Spring Boot 2.x及以上版本默认并不支持这种方式,因为它们...