天天看點

spring mvc 架構項目tomcat 移植到WebSphere

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=

就可以了。