1:spring mvc 概述

  1. 什麼是mvc

  2. 什麼是spring mvc

           Spring MVC 是一種基於 Java 的實現了 Web MVC 設計模式的請求驅動類型的輕量級 Web 框架, 即便用了MVC 架構模式的思想,將 web 層進行職責解耦, 基於請求驅動指的就是使用請求-響應模型, 框架的目的就是幫助咱們簡化開發, Spring Web MVC 也是要簡化咱們平常 Web 開發的。前端

  3. spring mvc能作什麼

    ▶ 進行更簡潔的 Web 層的開發;java

    ▶ 天生與 Spring 框架集成(如 IoC 容器、 AOP 等);web

    ▶ 提供強大的約定大於配置的契約式編程支持;spring

    ▶ 能簡單的進行 Web 層的單元測試;提供強大的約定大於配置的契約式編程支持;編程

    ▶ 能簡單的進行 Web 層的單元測試;設計模式

    ▶ 支持靈活的 URL 到頁面控制器的映射;數據結構

    ▶ 很是容易與其餘視圖技術集成,如 Velocity、FreeMarker 等等, 由於模型數據不放在特定的 API 裏,而是放在一個Model 裏(Map 數據結構實現, 所以很容易被其餘框架使用);架構

    ▶ 很是靈活的數據驗證、 格式化和數據綁定機制, 能使用任何對象進行數據綁定, 沒必要實現特定框架的 API;提供一套強大的 JSP 標籤庫, 簡化 JSP 開發;
    ▶ 支持靈活的本地化、 主題等解析;
    ▶ 更加簡單的異常處理;
    ▶ 對靜態資源的支持;
    ▶ 支持 Restful 風格。mvc

  4. spring mvc有哪些東西 

    1. ▶ DispatcherServlet: 前端控制器
      ▶ HandlerMapping: 將請求映射處處理器
      ▶ HandlerAdapter: 把處理器包裝爲適配器, 用來支持多種類型的處理器
      ▶ View Resolver: 視圖解析器
      ▶ Controller接口: 頁面控制器/動做/處理器
      ▶ LocalResolver: 本地化解析, 由於Spring支持國際化,所以LocalResolver解析客戶端的Locale信息從而方便
      進行國際化
      ▶ ThemeResovler: 主題解析, 經過它來實現一個頁面多套風格, 即常見的相似於軟件皮膚效果app

      ▶ MultipartResolver:文件上傳解析, 用於支持文件上傳
      ▶ HandlerExceptionResolver: 解析並處理異
      ▶ RequestToViewNameTranslator: 當處理器沒有返回邏輯視圖名等相關信息時,自動將請求URL映射爲邏輯
      視圖名
      ▶ FlashMapManager: 用於管理FlashMap的策略接口,FlashMap用於存儲一個請求的輸出, 當進入另外一個請求時做爲該請求的輸入, 一般用於重定向場景

      spring mvc 處理流程

            spring mvc 開發步驟

            ▶ DispatcherServlet 在 web.xml 中的部署描述, 從而攔截請求到 Spring MVC
            ▶ 配置HandlerMapping, 從而將請求映射處處理器
            ▶ 配置HandlerAdapter, 從而支持多種類型的處理器
            ▶ 配置ViewResolver, 從而將邏輯視圖名解析爲具體視圖技術
            ▶ 配置處理器(頁面控制器), 從而進行功能處理

  5. spring mvc的優點

      一、清晰的角色劃分: 前端控制(DispatcherServlet)、請求處處理器映射(HandlerMapping)、 處理器適配器(HandlerAdapter)、 視圖解析器(ViewResolver)、處理器或頁面控制器(Controller)、 驗證器(Validator)、 命令對象(Command 請求參數綁定到的對象就叫命令對象)、表單對象(Form Object 提供給表單展現和提交到的對象就叫表單對象)。
      二、 分工明確, 並且擴展點至關靈活, 能夠很容易擴展,雖然幾乎不須要;
      三、 因爲命令對象就是一個 POJO, 無需繼承框架特定API, 可使用命令對象直接做爲業務對象;
      四、 和 Spring 其餘框架無縫集成,是其它 Web 框架所不具有的;
      五、 可適配, 經過 HandlerAdapter 能夠支持任意的類做爲處理器;
      六、 可定製性, HandlerMapping、 ViewResolver 等可以很是簡單的定製;
      七、 功能強大的數據驗證、 格式化、 綁定機制;
      八、 利用 Spring 提供的 Mock 對象可以很是簡單的進行Web 層單元測試;
      九、 本地化、 主題的解析的支持, 使咱們更容易進行國際化和主題的切換。
      十、 強大的 JSP 標籤庫, 使 JSP 編寫更容易。

  6. spring mvc 的第一個程序

            1.在web.xml下面配置DispatcherServlet

<servlet>
		<servlet-name>springmvc</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<!-- 啓動優先級 -->
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>springmvc</servlet-name>
		<!-- /標示前臺全部url請求都會被  DispatcherServlet 攔截-->
		<url-pattern>/</url-pattern>
	</servlet-mapping>

        <!-- 針對Post方式的請求進行編碼的設置 -->
	<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>
	</filter>
	
	<filter-mapping>
		<filter-name>CharacterEncodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

2.在/WEB-INF/springmvc-servlet.xml中配置 HandlerMapping 和 HandlerAdapter 和 ViewResolver

<!-- 配置HandlerMapping   默認配置,可省略 -->
      <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
	  <!-- 配置HandlerAdapter 默認配置,可省略 -->
      <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
      
      <!-- 配置ViewResolver-->
      <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
      	<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
      	<!-- 第一個斜槓/不能省略 -->
      	<property name="prefix" value="/pages/"></property>
      	<property name="suffix" value=".jsp"></property>
      </bean> 
      <bean class="com.hejie.controller.HelloWorldController"></bean>

3.最後編寫controller便可

@Controller
public class HelloWorldController {
		
	@RequestMapping (value="/hello")
	public Model helloWorld (HttpServletRequest request,
			HttpServletResponse response,Model model) {
		//獲取前端傳遞的值
		String name = request.getParameter("name");
		System.out.println("name==============="+name);
		model.addAttribute("name", name);
		return model;
	}
}
相關文章
相關標籤/搜索