一個簡單的 SpringMVC 例項
阿新 • • 發佈:2019-01-27
- 新增 spring 框架所需的 jar 包。首先使用 Eclipse 新建一個動態的 Web 工程,命名為SpringMVCDome 如果沒有特別的要求可以將 spring-framework-4.2.0.RELEASE(在我的spring框架學習-下載和檔案說明中有介紹怎麼下載)資料夾下 libs 中的 class 型別的 jar 包都加入。
- 在 web.xml 中配置前端控制器 DispatcherServlet。
web.xml 檔案的內容告訴 Web 容器,將使用 spring MVC 的 DispatcherServlet,並通過配置 url-pattern 元素的值為“/”,將所有的 URL 對映到該 Servlet。<?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>
- 配置spring MVC 的 controller 的配置檔案,路徑:SpringMVCDemo/WebContent/WEB-INF/springmvc-config.xml
使用註解型別就不需要再在配置檔案中使用 XML 描述 Bean。 spring 使用掃描機制查詢應用程式中所有基於註解的控制器類。<?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>
- 基於註解的控制器
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; } }
- 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>
- 請求
請求成功後頁面會顯示“Hello World!”。http://localhost:8080/SpringMVCDemo/hello