1. 程式人生 > >【補充】Spring第四天原版筆記

【補充】Spring第四天原版筆記

原版筆記

##Spring Web MVC

Spring框架功能,基於IOC容器功能。

用於開發Web程式的,按MVC結構開發。

  1. Spring Web MVC結構

  2. 設計請求-響應的處理流程

/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

  1. 流程的實現

    編寫流程中需要的元件,然後追加元件配置。

    • hello.jsp
    • HelloController

    實現Controller介面、完成handleRequest方法。返回一個ModelAndView物件,設定檢視名和傳出資料

  2. 流程的配置

    • 配置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”> ​ ​ ​ ​ ​

  3. 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

  1. web.xml可以指定多個Spring配置檔案,用逗號隔開

     <init-param>
    

    ​ contextConfigLocation ​ classpath:spring-mvc.xml,classpath:applicationContext.xml ​

  2. Controller使用DAO或Service,都可以採用IOC注入方式使用

    @Controller ​ public class ListController {

     	@Resource
     	private NewsDao newsDao;//省略了setNewsDao方法
     
     	//其他省略
     
     }
    
  3. 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>
      

Spring功能結構圖