ssm框架整合筆記
@Service
public class ItemServiceImpl implements ItemService {
@Autowired 將類當做屬性注入,然後呼叫其中的方法
private ItemMapper itemMapper;
@Override
public List<Item> queryItemList() {
// 從資料庫查詢商品資料
List<Item> list = this.itemMapper.selectByExample(null);
return list;
}
}
@Controller
public class ItemController {
@Autowired
private ItemService itemService;
@RequestMapping("/itemList") //或者@RequestMapping(value="item")
public ModelAndView queryItemList() {
// 獲取商品資料
List<Item> list = this.itemService.queryItemList();
ModelAndView modelAndView = new ModelAndView();
// 把商品資料放到模型中
modelAndView.addObject("itemList", list);
// 設定邏輯檢視
modelAndView.setViewName("itemList");
return modelAndView;
@RequestMapping定義不同的處理器對映規則
@RequestMapping(value = { "itemList", "itemListAll" })
public ModelAndView queryItemList()
//可以將多個url對映到同一個方法
請求方法限定
@RequestMapping(method = RequestMethod.GET)
@RequestMapping(value = "itemList",method = RequestMethod.POST)
@RequestMapping(method = {RequestMethod.GET,RequestMethod.POST})
請求中的引數繫結問題
簡單引數繫結
頁面點選修改按鈕,發起請求
http://127.0.0.1:8080/springmvc-web/itemEdit.action?id=1
一.
RequestMapping("/itemEdit")
public ModelAndView queryItemById(HttpServletRequest request) {
(支援的引數型別:
1.通過request物件獲取請求資訊
2.通過response處理響應資訊
3.通過session物件得到session中存放的物件)
// 從request中獲取請求引數
String strId = request.getParameter("id");
Integer id = Integer.valueOf(strId);
// 根據id查詢商品資料
Item item = this.itemService.queryItemById(id);
二.繫結簡單型別
1.(當請求的引數名稱和處理器形參名稱一致時會將請求引數與形參進行繫結,支援的資料型別<推薦使用包裝資料型別,基礎資料型別不可以為null>包括
整形:Integer、int
字串:String
單精度:Float、float
雙精度:Double、double
布林型:Boolean、boolean
)
@RequestMapping("/itemEdit")
public String queryItemById(int id, ModelMap model) {
// 根據id查詢商品資料
Item item = this.itemService.queryItemById(id);
2.@RequestParam也常用於處理簡單型別的繫結(當請求引數名字不對應的時候)。
@RequestMapping("/itemEdit")
public String queryItemById(@RequestParam(value = "itemId", required = true, defaultValue = "1") Integer id,ModelMap modelMap) {
// 根據id查詢商品資料
Item item = this.itemService.queryItemById(id);
(引數名字,引數是否必須,引數的,預設值)
3.使用pojo接收表單資料
如果提交的引數很多,或者提交的表單中的內容很多的時候,可以使用簡單型別接受資料,也可以使用pojo接收資料(pojo物件中的屬性名和表單中input的name屬性一致)
@RequestMapping("/updateItem")
public String updateItem(Item item) {
// 呼叫服務更新商品
this.itemService.updateItemById(item);
// 返回邏輯檢視
return "success";
}
4.使用包裝的pojo接收查詢引數,最後將查詢結果返回jsp頁面
包裝物件定義如下:
public class QueryVo {
private Item item;
set/get。。。
}
接收查詢條件
// 繫結包裝資料型別
@RequestMapping("/queryItem")
public String queryItem(QueryVo queryVo) {
System.out.println(queryVo.getItem().getId());
System.out.println(queryVo.getItem().getName());
return "success";
高階引數繫結問題
1.繫結陣列
功能要求商品列表頁面中的每個商品前有一個checkbok,選中多個商品後點選刪除按鈕把商品id傳遞給Controller,根據商品id刪除商品資訊。
前面用pojo的包裝類接收了表單資料
public class QueryVo{
private Item item;
private Integer[] ids;
}
我們將查詢引數使用item接收,將查詢到的結果在頁面顯示, 然後每個商品前有核取方塊,當點選核取方塊則會將
商品的id屬性傳入到ids屬性中根據,然後可根據陣列中的id刪除相應的商品
@RequestMapping("queryItem")
public String queryItem(QueryVo queryVo, Integer[] ids) {
System.out.println(queryVo.getItem().getId());
System.out.println(queryVo.getItem().getName());
System.out.println(queryVo.getIds().length);
System.out.println(ids.length);
return "success";
}
//未做刪除操作
2.繫結list集合
需求
<1>在商品列表頁面中可以對商品資訊進行修改。
<2>可以批量提交修改後的商品資料。
public class QueryVo{
private Item item;
private Integer[] ids; //可以選擇哪些進行批量修改
private List<Item> itemList; //批量修改後的商品集合
}
注意:接收List型別的資料必須是pojo的屬性,如果方法的形參為ArrayList型別無法正確接收到資料?
除了ModelAndView以外,還可以使用Model(或者ModelMap --只需將model換成ModelMap 即可)來向頁面傳遞資料,程式碼可以得到簡化
@RequestMapping("/itemEdit")
public String queryItemById(HttpServletRequest request, Model model) {
// 從request中獲取請求引數
String strId = request.getParameter("id");
Integer id = Integer.valueOf(strId);
// 根據id查詢商品資料
Item item = this.itemService.queryItemById(id);
model.addAttribute("item", item);
return "itemEdit";
}
返回值問題
1.返回void(此時return無返回值)
@RequestMapping("queryItem")
public void queryItem(HttpServletRequest request, HttpServletResponse response) throws Exception {
// 1 使用request進行轉發
// request.getRequestDispatcher("/WEB-INF/jsp/success.jsp").forward(request,
// response);
// 2 使用response進行重定向到編輯頁面
// response.sendRedirect("/springmvc-web2/itemEdit.action");
// 3 使用response直接顯示
response.getWriter().print("{\"abc\":123}");
}
擴充套件:轉發和重定向的原理
使用轉發時,jsp容器使用內部方法獲取原來頁面的請求,將這個請求轉發到新的頁面,新的頁面繼續處理這個請求,這個過程都是在伺服器完成的,瀏覽器不知道. 相反,重定向方式的是第一個頁面通知瀏覽器傳送一個新的頁面請求. 因此,轉發用的是同一個request(引數可以共享)而重定向是兩個不同的request(引數不共享)
2.返回字串(即一個頁面)
//指定邏輯檢視名,經過檢視解析器解析為jsp物理路徑:/WEB-INF/jsp/itemList.jsp
return “itemList”;
3.forward轉發
Controller方法執行後繼續執行另一個Controller方法
@RequestMapping("updateItem")
public String updateItemById(Item item) {
// 更新商品
this.itemService.updateItemById(item);
//結果轉發到editItem.action,request可以帶過去
return "forward: /itemEdit.action"; //執行另一個Controller方法
}
4.5.3.2. Redirect重定向
Contrller方法返回字串可以重定向到一個url地址
@RequestMapping("updateItem")
public String updateItemById(Item item) {
// 更新商品
this.itemService.updateItemById(item);
// 重定向相當於執行了新的request和response,所以之前的請求引數都會丟失
// 如果要指定請求引數,需要在重定向的url後面新增 ?itemId=1 這樣的請求引數
return "redirect:/itemEdit.action?itemId=" + item.getId(); //重定向到一個url地址
}
對比轉發和重定向發現可以實現同樣的功能,只是一個不需要重新攜帶引數,另一個需要
相關文章
- SSM學習筆記3——整合 SpringMVC、整合SSMSSM筆記SpringMVC
- SSM框架整合SSM框架
- 整合SSM框架SSM框架
- SSM框架的整合SSM框架
- SSM框架整合開發SSM框架
- SSM框架整合流程SSM框架
- SSM框架整合(配置檔案)SSM框架
- 【Java】SSM框架整合 附原始碼JavaSSM框架原始碼
- SpringMVC(3)- 校驗框架、SSM整合SpringMVC框架SSM
- SSM框架學習筆記_第1章_SpringIOC概述SSM框架筆記Spring
- SSM三大框架整合詳細教程SSM框架
- SSM框架整合——書籍管理系統SSM框架
- ssm框架整合redis(demo)---通過cache方式SSM框架Redis
- ssm整合SSM
- SSM 框架快速整合例項--學生查詢SSM框架
- SSM(Spring-MyBatis-SpringMVC)框架整合【完整版】SSMMyBatisSpringMVC框架
- SSM框架實現高併發秒殺API學習筆記SSM框架API筆記
- SSM框架SSM框架
- [Android]後端之路--整合SSM(Spring+SpringMVC+MyBatis)框架(2)Android後端SSMSpringMVCMyBatis框架
- SSM三大框架整合詳細教程(Spring+SpringMVC+MyBatis)SSM框架SpringMVCMyBatis
- SSM整合步驟SSM
- SSM整合開發SSM
- SpringMVC-整合SSMSpringMVCSSM
- 八、SpringMVC——ssm整合SpringMVCSSM
- ssm整合(maven版本)SSMMaven
- ssm整合詳解SSM
- idea ssm maven專案搭建筆記IdeaSSMMaven筆記
- ssm框架理解SSM框架
- SSM整合(Spring、SpringMVC、Mybatis)SSMSpringMVCMyBatis
- SSM——Spring整合SpringMVC,MyBatisSSMSpringMVCMyBatis
- SSM(SpringMVC + Spring + Mybatis)整合SSMSpringMVCMyBatis
- SSM整合之CRUD環境搭建整合SSM
- 【SSM框架整合】專案xml檔案、properties等檔案的配置SSM框架XML
- Apache Calcite 動態資料管理框架整合 csv 實戰筆記Apache框架筆記
- Mybatis20_ssm整合10MyBatisSSM
- ssm高階整合 尚矽谷SSM
- SSM專案整合——後端SSM後端
- 用IDEA搭建SSM框架IdeaSSM框架