SpringMVC的基礎知識整理(3)Controller層註解及開發

Controller層註解

    @Controller: 控制器(注入服務)
    @Service: 服務(注入dao)
    @Repository:(實現dao訪問)
    @Component:
    以上4個註解都是實例化bean的功能,相當於配置文件中的<bean id="" class=""/>,後期spring可能會擴展其他功能。

    @RequestMapping:
        url映射
            定義controller方法對應的url,進行處理器映射使用。
        窄化請求映射
            在controller上加上該註解,方便對url分類管理。
        限制http請求方法
            出於安全性考慮,對http的鏈接進行方法限制。
            如果限制請求爲post方法,進行get請求就會報錯:

@RequestMapping(value = "/editItems", method = { RequestMethod.POST,RequestMethod.GET })

Controller方法的返回值
    1、返回ModelAndView

        需要方法結束時,定義ModelAndView,將model和view分別進行設置。

ModelAndView modelAndView = new ModelAndView();
            // 相當 於request的setAttribut,在jsp頁面中通過itemsList取數據
            modelAndView.addObject("itemsList", itemsList);
            // 指定視圖
            // 如果在視圖解析器中沒有配置jsp路徑的前綴和jsp路徑的後綴,則爲
            modelAndView.setViewName("/WEB-INF/jsp/items/itemsList.jsp");
            // 配置了jsp路徑的前後綴,則爲
            modelAndView.setViewName("items/itemsList");

    2、返回string
        如果controller方法返回string,

        (1)表示返回邏輯視圖名。
            真正視圖(jsp路徑)=前綴+邏輯視圖名+後綴

@RequestMapping(value = "/editItems", method = { RequestMethod.POST,RequestMethod.GET })
            public String editItems(Model model)throws Exception {
                // 調用service根據商品id查詢商品信息
                ItemsCustom itemsCustom = itemsService.findItemsById(1);
                model.addAttribute("items", itemsCustom);
                return "items/editItems";
            }

        (2)redirect重定向
        商品修改提交後,重定向到商品查詢列表。
        redirect重定向特點:瀏覽器地址欄中的url會變化。修改提交的request數據無法傳到重定向的地址。因爲重定向是發送了兩次請求(request無法共享)

        return "redirect:/items/queryItems.action";

        (3)forward頁面轉發
        通過forward進行頁面轉發,瀏覽器地址欄url不變,request可以共享。

        return "forward:/items/queryItems.action";

    3、返回void
    在controller方法形參上可以定義request和response,使用request或response指定響應結果:
        (1)使用request轉向頁面,如下:
        request.getRequestDispatcher("頁面路徑").forward(request, response);

        request.getRequestDispatcher("/WEB-INF/jsp/items/itemsList.jsp").forward(request, response);

        (2)也可以通過response頁面重定向:
        response.sendRedirect("url");

        response.sendRedirect("/WEB-INF/jsp/items/itemsList.jsp");

    也可以通過response指定響應結果,例如響應json數據如下:

response.setCharacterEncoding("utf-8");
        response.setContentType("application/json;charset=utf-8");
        response.getWriter().write("json串");

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章