springmvc中找不到頁面,進入不到方法,而且不報錯

在springmvc配置中,出現了兩次進入不到action方法中,並花費了大部分時間去找問題,因此詳細記錄下相關的配置java

1.配置的位置:spring

applicationContext.xml文件,是必須配置的,也是spring的配置:express

servlet-context.xml文件,是給Tomcat配置的,能夠寫,也能夠不寫,可是若是寫的話就必定要注意,由於問題基本都會出如今這個配置上mvc

兩種寫法:app

項目中,在base-package指定的包中有的子包是不含有註解的,因此這些包能夠不進行掃描,此時能夠指定
<context:exclude-filter>來進行過濾,說明此包不須要被掃描。
Use-dafault-filters=」false」的狀況下:<context:exclude-filter>指定的包不進行相應註解的掃描,
<context:include-filter>指定包或其子包進行相應註解的掃描。框架

不掃描@Controller註解

applicationContext.xml.net

<mvc:annotation-driven />
        <context:component-scan base-package="包名">
            <context:exclude-filter type="annotation"
                expression="org.springframework.stereotype.Controller" />    
        </context:component-scan>

servlet-context.xmlcode

<!-- 掃描@Controller註解 -->
<mvc:annotation-driven />
		<context:component-scan base-package="包名">
			<context:include-filter type="annotation"
				expression="org.springframework.stereotype.Controller" />	
		</context:component-scan>

區別在於一個用的是include,一個用的是exclude,component

spring不只掃描了@Controller修飾的javaod ,還掃描了指定包或其子包下有@Service
@Repository註解修飾的java類此時指定的include-filter沒有起到做用,只要把use-default-filter設置成
false就能夠了。這樣就能夠避免在base-packeage配置多個包名。xml

第二種寫法,我的以爲若是是傳統的springmvc,那麼第二種方法出錯的機率會更小一些

<mvc:annotation-driven />
		<context:component-scan base-package="包名">
		</context:component-scan>

掃描此包下面的全部註解,能夠將controller,service等都注入進去,只須要在applicationContext.xml中配置就能夠了

還有一個疑惑就是:

springmvc的工做流程就是從controller到service,那麼exclude這種配置方法的意義在哪裏?

理解:

有的時候會出現框架混用,或者不須要controller中的註解,須要使用service,或者本身想要的註解,這種我本身尚未接觸過,因此也只是一個大概的理解。

參考概念:

https://www.jianshu.com/p/72f24dc82560

相關文章
相關標籤/搜索