jerry, tomcat6
websphere7
spring mvc项目部署到WebSphere注意事项
web.xml配置:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-*.xml</param-value>
</context-param>
这种配置websphere不支持,
报错:
org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [org.jeecgframework.web.system.service.SystemService] found for dependency
修改为:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:spring-minidao.xml,
classpath*:spring-mvc-aop.xml,
classpath*:spring-mvc-cgform.xml,
classpath*:spring-mvc-context.xml,
classpath*:spring-mvc-hibernate.xml,
classpath*:spring-mvc-timeTask.xml,
classpath*:spring-mvc.xml
</param-value>
</context-param>
(也可以再xml里import)
web.xml中classpath:和classpath*: 有什么区别?
classpath:只会到你的class路径中查找找文件;
classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找.
有时候会用模糊匹配的方式配置多配置文件。
但是如果配置文件是在jar包里,模糊匹配就找不到了。可以用逗号隔开的方式配置多个配置文件。
2、请求映射
如果Controller的方法配置的请求映射是这样
@RequestMapping(params = "checkuser")
前台请求是这样
loginController.do?checkuser
报错:
[org.jeecgframework.core.common.exception.MyExceptionHandler]org.springframework.web.servlet.mvc.multiaction.NoSuchRequestHandlingMethodException: No matching handler method found for servlet request: path '/loginController.do', method 'POST', parameters map['randCode' -> array<String>['9n88'], 'password' -> array<String>['123456'], 'userName' -> array<String>['admin'], 'userKey' -> array<String>['D1B5CC2FE46C4CC983C073BCA897935608D926CD32992B5900']]
这种websphere是不支持的,websphere所实现的request支持key-value的形式,估计这种只有key没有value的请求参数,websphere给扔了
可改为这种
@RequestMapping(params = "method=checkuser")
loginController.do?method=checkuser
如果是spring mvc项目修改
Ctrl+H
.do\?
替换为
.do?method=
@RequestMapping(params = "
@RequestMapping(params="
替换为
@RequestMapping(params = "method=
就可以了。