1. 程式人生 > >一個簡單的 SpringMVC 例項

一個簡單的 SpringMVC 例項

  1. 新增 spring 框架所需的 jar 包。首先使用 Eclipse 新建一個動態的 Web 工程,命名為SpringMVCDome 如果沒有特別的要求可以將 spring-framework-4.2.0.RELEASE(在我的spring框架學習-下載和檔案說明中有介紹怎麼下載)資料夾下 libs 中的 class 型別的 jar 包都加入。
  2. 在 web.xml 中配置前端控制器 DispatcherServlet。
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    	xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
    	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
    	http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
    	id="WebApp_ID" version="3.1">
    	<!-- 定義Spring MVC的前端控制器 -->
      <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <init-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>/WEB-INF/springmvc-config.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
      </servlet>
      <!-- 讓Spring MVC的前端控制器攔截所有請求 -->
      <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
      </servlet-mapping>
    </web-app>
    web.xml 檔案的內容告訴 Web 容器,將使用 spring MVC 的 DispatcherServlet,並通過配置 url-pattern 元素的值為“/”,將所有的 URL 對映到該 Servlet。
  3. 配置spring MVC 的 controller 的配置檔案,路徑:SpringMVCDemo/WebContent/WEB-INF/springmvc-config.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:mvc="http://www.springframework.org/schema/mvc"
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="
            http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
            http://www.springframework.org/schema/mvc
            http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd     
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context-4.2.xsd">
            
        <!-- spring可以自動去掃描base-pack下面的包或者子包下面的java檔案,
        如果掃描到有Spring的相關注解的類,則把這些類註冊為Spring的bean -->
        <context:component-scan base-package="org.springmvc.controller"/>
        
        <!-- 配置處理對映器 -->
        <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
         
         <!-- 配置處理器介面卡-->
        <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
    
    
    <!-- 檢視解析器 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>
    
    </beans>
    使用註解型別就不需要再在配置檔案中使用 XML 描述 Bean。 spring 使用掃描機制查詢應用程式中所有基於註解的控制器類。
  4. 基於註解的控制器
    package org.springmvc.controller;
    
    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.servlet.ModelAndView;
    
    /**
     *  HelloController是一個基於註解的控制器,
     *  可以同時處理多個請求動作,並且無須實現任何介面。
     *  org.springframework.stereotype.Controller註解用於指示該類是一個控制器
     */
    @Controller
    public class HelloController{
    
    	 private static final Log logger = LogFactory
    	            .getLog(HelloController.class);
    	 
    	 /**
    	  * org.springframework.web.bind.annotation.RequestMapping註解
    	  * 用來對映請求的的URL和請求的方法等。本例用來對映"/hello"
    	  * hello只是一個普通方法。
    	  * 該方法返回一個包含檢視路徑或檢視路徑和模型的ModelAndView物件。
    	  * */
    	 @RequestMapping(value="/hello")
    	 public ModelAndView hello(){
    		 logger.info("hello方法 被呼叫");
    		 // 建立準備返回的ModelAndView物件,該物件通常包含了返回檢視的路徑、模型的名稱以及模型物件
    		 ModelAndView mv = new ModelAndView();
    		 //新增模型資料 可以是任意的POJO物件  
    	     mv.addObject("message", "Hello World!");  
    	     // 設定邏輯檢視名,檢視解析器會根據該名字解析到具體的檢視頁面  
    	     mv.setViewName("/WEB-INF/content/welcome.jsp"); 
    		// 返回ModelAndView物件。
    		return mv;
    	 }
    
    }
    

  5. view頁面
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>welcome</title>
    </head>
    <body>
    <!-- 頁面可以訪問Controller傳遞傳遞出來的message -->
    ${requestScope.message}
    </body>
    </html>

  6. 請求
    http://localhost:8080/SpringMVCDemo/hello
    請求成功後頁面會顯示“Hello World!”。