【補充】Spring第四天原版筆記
原版筆記
##Spring Web MVC
Spring框架功能,基於IOC容器功能。
用於開發Web程式的,按MVC結構開發。
-
Spring Web MVC結構
-
設計請求-響應的處理流程
/list.do–>DispatcherServlet–>HandlerMapping–>ListController–>ViewResolver–>/list.jsp
/add.do–>DispatcherServlet–>HandlerMapping–>AddController–>ViewResolver–>/success.jsp
/hello.do–>DispatcherServlet–>HandlerMapping–>HelloController(返回ModelAndView)–>ViewResolver–>/hello.jsp
-
流程的實現
編寫流程中需要的元件,然後追加元件配置。
- hello.jsp
- HelloController
實現Controller介面、完成handleRequest方法。返回一個ModelAndView物件,設定檢視名和傳出資料
-
流程的配置
-
配置DispatcherServlet(web.xml)
<servlet>
springmvc org.springframework.web.servlet.DispatcherServlet contextConfigLocation classpath:spring-mvc.xml springmvc *.do
-
配置HandlerMapping
<!-- HandlerMapping,id名沒有約定 -->
<bean id=“handler” class=“org.springframework.web.servlet.handler.SimpleUrlHandlerMapping”> helloController
-
配置Controller
<!-- Controller,id名有約定跟handlerMapping對應 -->
-
配置ViewResolver
<!-- ViewResolver,id名沒有約定 -->
<bean id=“viewResolver” class=“org.springframework.web.servlet.view.InternalResourceViewResolver”>
-
-
Spring Web MVC註解配置
- 替換HandlerMapping元件
使用RequestMappingHandlerMapping元件,支援@RequestMapping註解標記,載入Controller方法前。
<mvc:annotation-driven />
- Controller元件編寫和配置
Controller元件類可以不用實現Controller介面,方法可以靈活定義。
public ModelAndView xxx(){...} public ModelAndView xxx(HttpServletRequest request){...} public ModelAndView xxx(HttpServletResponse response){...} public ModelAndView xxx(HttpServletRequest request,HttpServletResponse response){...}
Controller配置可以用元件掃描,在Controller元件上使用@Controller標記
<context:component-scan base-package="cn.xdl.web.controller"/>
##列表顯示
/list.do–>DispatcherServlet–>HandlerMapping–>ListController–>ViewResolver–>/WEB-INF/list.jsp
-
web.xml可以指定多個Spring配置檔案,用逗號隔開
<init-param>
contextConfigLocation classpath:spring-mvc.xml,classpath:applicationContext.xml
-
Controller使用DAO或Service,都可以採用IOC注入方式使用
@Controller public class ListController {
@Resource private NewsDao newsDao;//省略了setNewsDao方法 //其他省略 }
-
list.jsp頁面採用JSTL+EL表示式列表顯示
-
匯入jstl開發包
-
在jsp新增標籤庫引入
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
-
使用<c:forEach>標記迴圈
<table> <c:forEach items="${news}" var="news"> <tr> <td>${news.title}</td> <td>${news.releaseTime}</td> </tr> </c:forEach> </table>
-