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=
就可以了。