springMVC入門截圖
----------------------------------------------------
在web.xml中配置前端控制器(系統提供的一個servlet類 只需配置即可 無需程序員開發 )
--------------------------------------------------------------
------------------------
非註解適配器
使用A適配器能夠執行實現Controller接口的handler
package org.ssm.controller; import java.util.ArrayList;import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.Controller; import org.ssm.po.Items; //實現controller接口的處理器 public class ItemsController1 implementsController{ public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception { // TODO Auto-generated method stub //調用service查找 數據庫,查詢商品列表,這裏使用靜態數據模擬 List<Items> itemsList = new ArrayList<Items>(); //向list中填充靜態數據Items items_1 = new Items(); items_1.setName("聯想筆記本"); items_1.setPrice(6000f); items_1.setDetail("ThinkPad T430 聯想筆記本電腦!"); Items items_2 = new Items(); items_2.setName("蘋果手機"); items_2.setPrice(5000f); items_2.setDetail("iphone6蘋果手機!"); itemsList.add(items_1); itemsList.add(items_2); //這個方法需要返回modelAndView 所以創建 ModelAndView modelAndView=new ModelAndView(); //這個方法九相當於request.setAttribute modelAndView.addObject("itemsList", itemsList); //指定視圖 modelAndView.setViewName("/WEB-INF/jsp/items/itemsList.jsp"); return modelAndView; } }
使用B適配器能夠執行 實現HttpRequestHandler接口的handler
package org.ssm.controller; import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.HttpRequestHandler; import org.ssm.po.Items; public class ItemsController2 implements HttpRequestHandler{ //這個handler對應的適配器類是 org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter public void handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException { // TODO Auto-generated method stub //調用service查找 數據庫,查詢商品列表,這裏使用靜態數據模擬 List<Items> itemsList = new ArrayList<Items>(); //向list中填充靜態數據 Items items_1 = new Items(); items_1.setName("聯想筆記本"); items_1.setPrice(6000f); items_1.setDetail("ThinkPad T430 聯想筆記本電腦!"); Items items_2 = new Items(); items_2.setName("蘋果手機"); items_2.setPrice(5000f); items_2.setDetail("iphone6蘋果手機!"); itemsList.add(items_1); itemsList.add(items_2); arg0.setAttribute("itemsList", itemsList); //早期servlet程序轉發操作 arg0.getRequestDispatcher("/WEB-INF/jsp/items/itemsList.jsp").forward(arg0, arg1); //使用哪個適配器都可以 但是這個適配器 可以通過response對象 來設置響應數據的格式 } }
----------
jsp頁面
--------------------
非註解映射器
-----------------------------
視圖解析器
-f---------------------
註解映射器、適配器
------------------------------------
使用註解方式開發的handler
package org.ssm.controller; import java.util.ArrayList; import java.util.List; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import org.ssm.po.Items; //使用註解開發的handler 不需要實現接口 這個註解和spring階段 把action對象註入bean容器時使用的註解一樣 導入的包也一樣 //要明白 這裏就是把該headler註入進spring容器中 @Controller //使用註解標識這是一個handler public class ItemsController3 { //這裏邊可以編寫任意多個方法 沒有之前實現指定的接口時 只能覆寫指定接口的局限性 //使用註解標識映射路徑 即將來訪問的路徑 建議映射路徑和類名一樣 action寫不寫都行 //@RequestMapping實現對query1方法的一個映射 一個方法對應一個url @RequestMapping("/query1.action") public ModelAndView query1()throws Exception{ //調用service查找 數據庫,查詢商品列表,這裏使用靜態數據模擬 List<Items> itemsList = new ArrayList<Items>(); //向list中填充靜態數據 Items items_1 = new Items(); items_1.setName("聯想筆記本"); items_1.setPrice(6000f); items_1.setDetail("ThinkPad T430 聯想筆記本電腦!"); Items items_2 = new Items(); items_2.setName("蘋果手機"); items_2.setPrice(5000f); items_2.setDetail("iphone6蘋果手機!"); itemsList.add(items_1); itemsList.add(items_2); //創建modelAndView ModelAndView modelAndView=new ModelAndView(); modelAndView.addObject(itemsList); //指定視圖 modelAndView.setViewName("/WEB-INF/jsp/items/itemsList.jsp"); return modelAndView; } }
然後再配置文件中配置該handler 推薦使用註解掃描方式(對標記@Controller類中標識有@RequestMapping的方法進行映射 在@RequestMapping裏邊定義映射的url)
否則 一個handler類就需要配置一個bean
--------------------------------
視圖解析器的前綴和後綴配置
註意:如果配置了前綴和後綴 那麽 在handler設置視圖路徑的時候 就不能在指定完整的路徑了 但是有一個handler除外
不能指定完整路徑的handler:1.實現Controller接口 以及2.註解方式實現的handler
1.
2.
路徑為:
在配置了前綴和後綴之後 仍然需要指定完整路徑的handler:實現了HttpRequesstHandler接口的handler
路徑仍然為:
----------------------------
springMVC入門截圖