java元婴期(27)----java进阶(springmvc(1)---springmvc框架入门程序(上)(不基于注解开发))
springmvc框架
什么是springmvc
springmvc是spring框架的一個模塊,springmvc和spring無需通過中間整合層進(jìn)行整合。(struts2與Spring整合的時候需要借助單獨的jar包)
springmvc是一個基于mvc的web框架。
mvc在b/s系統(tǒng) 下的應(yīng)用
mvc是一個設(shè)計模式,mvc在b/s系統(tǒng) 下的應(yīng)用:
springmvc框架
- 第一步:發(fā)起請求到前端控制器(DispatcherServlet)
- 第二步:前端控制器請求HandlerMapping查找 Handler,?可以根據(jù)xml配置、注解進(jìn)行查找
- 第三步:處理器映射器HandlerMapping向前端控制器返回Handler
- 第四步:前端控制器調(diào)用處理器適配器去執(zhí)行Handler
- 第五步:處理器適配器去執(zhí)行Handler
- 第六步:Handler執(zhí)行完成給適配器返回ModelAndView
- 第七步:處理器適配器向前端控制器返回ModelAndView,ModelAndView是springmvc框架的一個底層對象,包括 Model和view
- 第八步:前端控制器請求視圖解析器去進(jìn)行視圖解析,根據(jù)邏輯視圖名解析成真正的視圖(jsp)
- 第九步:視圖解析器向前端控制器返回View
- 第十步:前端控制器進(jìn)行視圖渲染,視圖渲染將模型數(shù)據(jù)(在ModelAndView對象中)填充到request域
- 第十一步:前端控制器向用戶響應(yīng)結(jié)果
組件:
1、前端控制器DispatcherServlet(不需要程序員開發(fā))
作用接收請求,響應(yīng)結(jié)果,相當(dāng)于轉(zhuǎn)發(fā)器,中央處理器。
有了DispatcherServlet減少了其它組件之間的耦合度。
2、處理器映射器HandlerMapping(不需要程序員開發(fā))
作用:根據(jù)請求的url查找Handler
3、處理器適配器HandlerAdapter
作用:按照特定規(guī)則(HandlerAdapter要求的規(guī)則)去執(zhí)行Handler
4、處理器Handler(需要程序員開發(fā))
注意:編寫Handler時按照HandlerAdapter的要求去做,這樣適配器才可以去正確執(zhí)行Handler
5、視圖解析器View resolver(不需要程序員開發(fā))
作用:進(jìn)行視圖解析,根據(jù)邏輯視圖名解析成真正的視圖(view)
6、視圖View(需要程序員開發(fā)jsp)
View是一個接口,實現(xiàn)類支持不同的View類型(jsp、freemarker、pdf...)
入門程序
需求
以案例作為驅(qū)動。
springmvc和mybaits使用一個案例(商品訂單管理)。
功能需求:商品列表查詢
環(huán)境準(zhǔn)備
數(shù)據(jù)庫環(huán)境:mysql5.1
java環(huán)境:
- jdk1.7.0_72
- eclipse indigo
- springmvc版本:spring3.2
- 需要spring3.2所有jar(一定包括spring-webmvc-3.2.0.RELEASE.jar)
配置前端控制器
在web.xml中配置前端控制器。
配置處理器適配器
在classpath下的springmvc.xml中配置處理器適配器
通過查看原代碼:???????
此適配器能執(zhí)行實現(xiàn) Controller接口的Handler。
開發(fā)Handler
需要實現(xiàn) controller接口,才能由org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter適配器執(zhí)行。
public class ItemsController1 implements Controller {@Overridepublic ModelAndView handleRequest(HttpServletRequest request,HttpServletResponse response) throws Exception {//調(diào)用service查找 數(shù)據(jù)庫,查詢商品列表,這里使用靜態(tài)數(shù)據(jù)模擬List<Items> itemsList = new ArrayList<Items>();//向list中填充靜態(tài)數(shù)據(jù)Items items_1 = new Items();items_1.setName("聯(lián)想筆記本");items_1.setPrice(6000f);items_1.setDetail("ThinkPad T430 聯(lián)想筆記本電腦!");Items items_2 = new Items();items_2.setName("蘋果手機(jī)");items_2.setPrice(5000f);items_2.setDetail("iphone6蘋果手機(jī)!");itemsList.add(items_1);itemsList.add(items_2);//返回ModelAndViewModelAndView modelAndView = new ModelAndView();//相當(dāng) 于request的setAttribut,在jsp頁面中通過itemsList取數(shù)據(jù)modelAndView.addObject("itemsList", itemsList);//指定視圖modelAndView.setViewName("/WEB-INF/jsp/items/itemsList.jsp");return modelAndView;}}視圖編寫
配置Handler
將編寫Handler在spring容器加載。
配置處理器映射器
在classpath下的springmvc.xml中配置處理器映射器???????
配置視圖解析器
需要配置解析jsp的視圖解析器。
部署調(diào)試
訪問地址:http://localhost:8080/springmvcfirst1208/queryItems.action
處理器映射器根據(jù)url找不到Handler,報下邊的錯誤。說明url錯誤。
處理器映射器根據(jù)url找到了Handler,轉(zhuǎn)發(fā)的jsp頁面找到,報下邊的錯誤,說明jsp頁面地址錯誤了。
?
總結(jié)
以上是生活随笔為你收集整理的java元婴期(27)----java进阶(springmvc(1)---springmvc框架入门程序(上)(不基于注解开发))的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java元婴期(26)----java进
- 下一篇: java元婴期(28)----java进