(一)SpringMVC一個簡單例子(列印HelloWorld!)
簡介:在MVC框架中,使用者的請求直接與 C(控制器)互動,控制器再把請求進行分發,分發給 M(模型,也可以說是資料),再選擇V(檢視)把使用者要獲取的資料展示出來
0.web應用的目錄樹:
紅色是要關注的地方。
1.SpringMVC中的DispatcherServlet(用於排程控制 使用者請求)
在許多 MVC框架中,都包含一個用於排程控制的Servlet。Spring MVC也提供了一個名為 org.springframework.web.servlet.DispatcherServlet 的 Servlet 充當前端控制器。所有的請求都圍繞這個 DispatcherServlet 來分派。
DispatcherServlet 是一個Servlet (它繼承自 HttpServlet基類),因此使用時需要把它配置在 Web 應用的 web.xml檔案中。
下面是 web.xml的配置:
*由上圖:本工程的 spring配置檔案的名字為: srpingmvc-config.xml
2. 基於Controller介面的 Handle 的編寫:
DispatcherServlet 在 Spring 當中充當一個前端控制器的角色,它的核心功能是分發請求。請求會被分發給對應處理的 Java類,Spring MVC中稱為 Handle。
開發一個 Handle 的方法是 實現 org.springframework.web.servlet.mvc.Controller介面
的
而實現 Controller介面 就必須實現一個handleRequest 方法:
ModelAndView handleRequest(HttpServletRequest request,HttpServletRespone)throws Exception
(Controller介面的實現類)可以通過 handleRequest方法傳遞的引數 來 訪問對應請求 HttpServletRequest 和 HttpServletRespone 物件。處理完請求後,必須返回一個
包含模型物件和檢視路徑的 ModelAndView 物件。
3.Spring配置檔案
第12,15,18行是固定的。作用是配置 處理對映器,處理介面卡,檢視解析器。<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 配置 Handle,對映“/hello”請求 --> <bean name="/hello" class="com.springmvc.HelloController"></bean> <!-- (處理對映器)將(上面)bean的name作為url進行查詢,需要再配置Handle時指定name(即url) --> <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean> <!-- SimpleControllerHandlerAdapter是一個(處理介面卡),所有處理介面卡都要實現HandleAdapter介面 --> <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean> <!-- 檢視解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"></bean> </beans>
第9 行是配置自己寫的Handle也即控制器(即 HelloController)
4.控制器(MVC中的C)
HelloController.java:
package com.springmvc;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
public class HelloController implements Controller {
public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {
/*建立返回的 ModelAndView物件,該物件通常包含了(返回檢視名)和(模型的名稱),以及模型物件*/
ModelAndView mv = new ModelAndView();
/*新增模型資料*/
mv.addObject("message", "HelloWorld!");
/*設定(邏輯檢視名),檢視解析器會根據該名字解析到具體的檢視頁面*/
mv.setViewName("/WEB-INF/content/welcome.jsp");
return mv;
}
控制器必須實現 (Controller介面)裡的 handleRequest 方法。
第20行:往控制器里加資訊(可被呼叫的物件)
23行:設定此控制器 呼叫的介面(View)。此處為放在目錄 /WEB-INF/content/ 下的 welcome.jsp
5.檢視(View)
welcome.jsp:
紅框處為KL表示式。作用為列印 message的值。
啟動伺服器後,輸入伺服器地址 (http://localhost/XXX/XXX/XXX) 後的結果: