1. 程式人生 > 其它 >SpringMVC學習06:Controller配置總結

SpringMVC學習06:Controller配置總結

SpringMVC學習06:Controller配置總結

  • 控制器:Controller:

    • 控制器負責提供訪問應用程式的行為,通常通過介面定義註解定義【推薦】2種方法實現;

    • 控制器負責解析使用者的請求並將其轉換為一個模型(Model)

    • 在SpringMVC中,一個控制器類可以包含多個方法;

    • 在SpringMVC中,對於Controller的配置方式有很多種;

 

  • 實現Controller介面:

    • Controller是一個介面,在org.springframework.web.servlet.mvc包下,介面中只有一個方法:

      //實現該介面的類獲得控制器功能
      public interface Controller {
        //處理請求並且返回一個模型與檢視物件
        ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception;

      }
    • 測試:

    • 1,新建一個Module:新增web支援,編寫web.xml中DispatcherServlet配置檔案;

    • 2,新建springmvc-servlet.xml配置檔案:

      • 配置檔案中添加註解:掃描包:<context:component-san />

      • 添加註解:<mvc:annotation-driven/ >

      • 新增過濾靜態資源註解:<mvc:default-servlet-handler/ >

      <?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
            https://www.springframework.org/schema/context/spring-context.xsd
            http://www.springframework.org/schema/mvc
            https://www.springframework.org/schema/mvc/spring-mvc.xsd">



         <!--   註解方式:掃描包-->
         <context:component-scan base-package="com.ljxdemo.controller"/>

         <!--處理器介面卡,處理器對映器-->
         <mvc:annotation-driven/>
         <!--過濾靜態資源-->
         <mvc:default-servlet-handler/>


         <!--檢視解析器-->
         <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
             <property name="prefix" value="/WEB-INF/jsp"/>
             <property name="suffix" value=".jsp"/>
         </bean>

      </beans>
    • 3,新建JSP資料夾:新建test.jsp

    • 4,新建ControllerTest類,實現Controller介面;

      //只有實現了Controller的類,說明這就是一個控制器
      public class ControllerTest1 implements Controller {

         public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
             ModelAndView mv = new ModelAndView();

             mv.addObject("msg","demo");
             mv.setViewName("hello");

             return  mv;
        }
      }
    • 5,配置Tomcat,啟動測試;

       

 

 

  • 註解方式實現Controller:

    • 常見註解:

      @Component   元件
      @Service     service層
      @Controller  控制層
      @Repository  dao層
    • 註解實現Controller:

      //@Controller代表這個類會被Spring接管:這個註解的類中的所有方法:
      // 如果返回值是String,並且有具體頁面可以跳轉,那麼就會被檢視解析器解析;
      @Controller
      public class ControllerTest2 {

         @RequestMapping("/t1")
         public String doneT1(Model model){
             model.addAttribute("msg","demo11");
             return "hello";
        }

         @RequestMapping("/t2")
         public String doneT2(Model model){
             model.addAttribute("msg","demo22");
             return "hello";
        }
      }
    • 可以發現,我們的2個請求都可以指向同一個檢視,但是頁面的結果是不一樣的,從這裡可以看出檢視是被複用的,而控制器與檢視直接是弱耦合關係;