1. 程式人生 > >(一)SpringMVC一個簡單例子(列印HelloWorld!)

(一)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配置檔案

<?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>
第12,15,18行是固定的。作用是配置 處理對映器,處理介面卡,檢視解析器。

第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) 後的結果: