1. 程式人生 > >搭建SSM框架之SpringMVC

搭建SSM框架之SpringMVC

nco add 核心 c中 resource param tor val 不同的

一、SpringWebMVC概述:

SpringWebMVC簡稱SpringMVC
SpringMVC就是Spring框架提供的一個模塊,通過實現MVC模式來很好地將數據、業務與展現進行分離,SpringMVC框架的目的是要簡化我們日常的Web開發。

二、SpringMVC框架的核心組件:

1.DispatcherServlet: 前端控制器,用來過濾客戶端發送過來,想要進行邏輯處理的請求。

2.Controller/Headler: 控制器/處理器。開發人員自定義,用來處理用戶請求的,並且處理完成之後返回給用戶指定視圖的對象。

3.HandlerMapping: 處理器映射器。DispatcherServlet接收到客戶端請求的URL之後,根據一定的匹配規則,再把請求轉發給對應的Handler,這個匹配規則由HandlerMapping決定。


4.HandlerAdaptor:處理器適配器。處理器適配器用來適配每一個要執行的Handler對象。通過HandlerAdapter可以支持任意的類作為處理器。


5.ViewResolver:視圖解析器。Handler返回的是邏輯視圖名,需要有一個解析器能夠將邏輯視圖名轉換成實際的物理視圖。而且Spring的可擴展性決定了視圖可以由很多種,所以需要不同的視圖解析器,解析不同的視圖。但是一般由jsp充當視圖的情況居多


SpringMVC框架提供一個核心的Servlet對象(DispatcherServlet,前端控制器)來對服務器接收到的請求進行解析,當這個請求被DispatcherServlet獲取到之後,DispatherServlet需要根據HandlerMapping對象的映射關系,將這個請求轉交給真正能夠處理客戶端請求的Controller控制器(我們要寫的就是這個東西,相當於之前的servlet)來處理。Controller處理完成後返回ModelAndView對象,也就是模型和視圖的結合體。ViewResolver視圖解析器根據ModelAndView中的邏輯視圖名找到真正的物理視圖,同時使用ModelAndView中模型裏面的數據對視圖進行渲染。最後把準備好的視圖展現給用戶

技術分享圖片

3.SpringMVC框架在項目中的搭建
第一步:構建Web項目
第二步:導入所需jar包
第三步:配置前端控制器DispatcherServlet
第四步:編寫Controller控制器(也稱為Handler處理器)
第五步:配置處理器映射器(可省去,有默認配置)
第六步:配置處理器適配器(可省去,有默認配置)
第七步:配置視圖解析器(可省去,有默認配置,但是前綴和後綴都為"")
第八步:配置控制器/處理器

例子:

所需要的jar包:

技術分享圖片

配置前端控制器:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
	version="3.0">
	<display-name>springmvc</display-name>
	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
		<welcome-file>index.htm</welcome-file>
		<welcome-file>index.jsp</welcome-file>
		<welcome-file>default.html</welcome-file>
		<welcome-file>default.htm</welcome-file>
		<welcome-file>default.jsp</welcome-file>
	</welcome-file-list>
	
	
	<!-- springweb提供的編碼過濾器 -->
	<filter>
		<filter-name>CharacterEncodingFilter</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
		<init-param>
			<param-name>forceEncoding</param-name>
			<param-value>true</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>CharacterEncodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	
	
	<!-- 配置springmvc中的前端控制器 -->
	<!-- 指定需要讀取的springmvc配置文件 -->
	<!-- 如果不指定,前端控制器也會自動讀取一個固定位置、固定名字的配置文件: -->
	<!-- /WEB-INF/[servlet-name]-servlet.xml -->
	<servlet>
		<servlet-name>SpringMVC</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:spring-web-mvc.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>SpringMVC</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>


</web-app>

  編寫Controller控制器:

package com.briup.web.controller;

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{

	@Override
	public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
		
		System.out.println("HelloController handleRequest()..");
		
		//和之前一樣處理請求
		
		//最後就不是跳轉頁面了,而是返回一個ModelAndView對象
		//ModelAndView對象中包含了模型中的數據,也包含了邏輯視圖名
		ModelAndView mv = new ModelAndView();
		
		//設置模板中的數據
		mv.addObject("name", "tom");
		//設置邏輯視圖名
		mv.setViewName("hello");
		
		return mv;
	}

}

配置處理器映射器
配置處理器適配器
配置視圖解析器
配置控制器/處理器

<?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-3.2.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
        http://www.springframework.org/schema/context 
		http://www.springframework.org/schema/context/spring-context-3.2.xsd">
	
	
	<!-- 配置映射器 -->
	<!-- 作用:告訴前端控制器,什麽樣的url對應什麽樣的Controller -->
	<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
	
	<!-- 配置適配器 -->
	<!-- 作用:告訴前端控制器,需要調用Controller中的哪個方法 -->
	<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
	
	
	<!-- 配置視圖解析器 -->
	<!-- 作用:告訴前端控制器,怎樣把邏輯視圖名轉換為具體的視圖路徑 -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
		<!-- 設置視圖中對jstl標簽庫的支持 -->
		<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>  
		<!-- 設置邏輯視圖名的前綴 -->
		<property name="prefix" value="/WEB-INF/jsp/"/>  
		<!-- 設置邏輯視圖名的後綴 -->
		<property name="suffix" value=".jsp"/>  
	</bean> 
	
	
	<!-- 配置控制器/處理器 -->
	<bean name="/hello.action" class="com.briup.web.controller.HelloController"></bean>
	
</beans>

  

搭建SSM框架之SpringMVC