Java Web之基於註解的Spring MVC環境配置

YungFan發表於2017-12-13

1、在web.xml中配置前端控制器,攔截請求,然後配置載入SpringMVC的配置檔案(處理器對映器、處理器介面卡、檢視解析器等)

<!-- springmvc前端控制器 -->
  <servlet>
      <servlet-name>springmvc</servlet-name>
      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
      
<!-- 
contextConfigLocation配置springmvc載入的配置檔案(配置處理器對映器、介面卡等等)
如果不配置contextConfigLocation,預設載入的是/WEB-INF/servlet名稱-serlvet.xml(springmvc-servlet.xml)
-->
      <init-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>classpath:springmvc.xml</param-value>
      </init-param>
  </servlet>

  <servlet-mapping>
      <servlet-name>springmvc</servlet-name>
     
 <!-- 
      第一種:*.action,訪問以.action結尾 由DispatcherServlet進行解析
      第二種:/,所以訪問的地址都由DispatcherServlet進行解析,對於靜態檔案的解析需要配置不讓DispatcherServlet進行解析, 使用此種方式可以實現 RESTful風格的url
      第三種:/*,這樣配置不對,使用這種配置,最終要轉發到一個jsp頁面時,
      仍然會由DispatcherServlet解析jsp地址,不能根據jsp頁面找到handler,會報錯。
-->
      <url-pattern>*.action</url-pattern>
  </servlet-mapping>

複製程式碼

2、設定基於註解的處理器對映器和介面卡

  • 在Spring3.1之後使用註解對映器
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping
複製程式碼
  • 在Spring3.1之後使用註解對映器
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter
複製程式碼

3、使用 mvc:annotation-driven可以代替註解對映器和註解介面卡配置

 <!--註解對映器 -->
   <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
   <!--註解介面卡 -->
   <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>

<!-- 
mvc:annotation-driven預設載入很多的引數繫結方法,比如json轉換解析器就預設載入了,
如果使用mvc:annotation-driven不用配置上邊的兩句,實際開發時使用mvc:annotation-driven 
-->
   <mvc:annotation-driven></mvc:annotation-driven>
複製程式碼

4、開發註解Handler

使用 @Controller 標識它是一個控制器(處理器),使用 @RequestMapping 實現控制器中的方法和訪問時的url之間的對映,使用基於註解的處理器對映器不需要在xml中配置url和Handler的對映關係。

5、在spring容器中(xml檔案)載入Handler

   <!-- 對於註解的Handler可以單個配置 實際開發中建議使用元件掃描 -->
   <!-- <bean class="cn.ssm.controller.XXXX" /> -->
   <!-- 可以掃描controller、service、... 掃描controller,指定controller的包 -->
   <context:component-scan base-package="cn.ssm.controller"></context:component-scan>
複製程式碼

6、配置檢視解析器

<!-- 
檢視解析器  解析jsp解析,預設使用jstl標籤,classpath下的得有jstl的包  
這樣配置以後 控制器中的ModelAndView.setViewName("")時就無需指定前字尾了   
-->
   <bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
         <!-- 配置jsp路徑的字首 -->
        <property name="prefix" value="/WEB-INF/jsp/"/>   
         <!-- 配置jsp路徑的字尾 -->
        <property name="suffix" value=".jsp"/>
   </bean>
複製程式碼

相關文章