1. 程式人生 > 其它 >springmvc-servlet.xml配置

springmvc-servlet.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"

       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/mvc
       http://www.springframework.org/schema/mvc/spring-mvc.xsd">

<!---------------------springMVC配置----------------------------------------------->

    <!--靜態資源過濾     mvc預設處理對映器HandlerMapping&處理器介面卡HandlerAdapter
	
	tomcat容器的web.xml中有一個defaultServlet(用於處理靜態資源),
	對映路徑是"/",我們自定義的web.xml最終相當於會與容器的web.xml合併,
	而自定義DispatchServlet一般也是使用"/",導致容器中的defaultServlet被覆蓋,
	從而靜態資源請求也會被髮送到springmvc,springmvc會去找這個路徑的對映器
	(相當於對應的Controller,這是找不到的),配置這個<mvc:default-servlet-handler>,
	應該就是在SpringMvc找不到對映路徑後,再將其轉給tomcat的defaultServlet,
	這是就可以tomcat就可以正確解析靜態資源路徑。-->
    <mvc:default-servlet-handler/>

    <!--允許註解配置controller-->
    <mvc:annotation-driven>
        <mvc:message-converters register-defaults="true">
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                <constructor-arg value="UTF-8"/>
            </bean>
            <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                <property name="objectMapper">
                    <bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">
                        <property name="failOnEmptyBeans" value="false"/>
                    </bean>
                </property>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>

    <!--檢視解析器ViewResolver
    接受DispatcherServlet給他的ModelAndView
    並根據其中的ViewName拼接出View地址-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="InternalResourceViewResolver">
        <!--字首-->
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <!--字尾-->
        <property name="suffix" value=".jsp"/>
    </bean>

<!---------------------使用註解配置bean並配置掃描範圍----------------------------------------------->

    <!--pojo-->
    <context:component-scan base-package="com.kg.pojo"/>

    <!--mapper-->
    <context:component-scan base-package="com.kg.mapper"/>
    <bean id="bookMapperImpl" class="com.kg.mapper.bookMapperImpl">
        <property name="sqlSessionFactory" ref="sqlSessionFactory"/>
    </bean>

    <!--service-->
    <context:component-scan base-package="com.kg.service"/>

    <!--controller-->
    <context:component-scan base-package="com.kg.controller"/>




<!---------------------以下配置可使用default-servlet-handler代替----------------------------------------------->


    <!--處理對映器HandlerMapping
接受DispatcherServlet給他的地址資訊id="/hello"
並通過HandlerExecution類去執行獲得handler的類名即class="com.kg.controller.helloSpringMvcController"
將資訊返回給DispatcherServlet
-->
    <!--    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>-->

    <!--處理器介面卡HandlerAdapter
    接受上面的class資訊尋找這個目標類並處理其中方法
    目標類將結果(model and view & viewName地址)返回給本類
    本類返回給DispatcherServlet-->
    <!--    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>-->

</beans>