SpringMVC入門

一, 什麼是springMVC?


   Spring Web MVC是一種基於Java的實現了MVC設計模式的、請求驅動類型的、輕量級Web框架。

springMVC入門使用

     Hello springMVC. . .

1,導入springmvc的依賴

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-webmvc</artifactId>
  <version>5.0.2.RELEASE</version>
</dependency>

2,導入springmvc框架的配置文件(掃描controller包、視圖解析器)springmvc-servlet.xml

<?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:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    <!-- 通過context:component-scan元素掃描指定包下的控制器-->
    <!--1) 掃描com.zking.zf及子子孫孫包下的控制器(掃描範圍過大,耗時)-->
    <context:component-scan base-package="com.practice.ssm"/>
 
 
    <!--2) 此標籤默認註冊DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter -->
	<!--兩個bean,這兩個bean是spring MVC爲@Controllers分發請求所必須的。並提供了數據綁定支持,-->
    <!--@NumberFormatannotation支持,@DateTimeFormat支持,@Valid支持,讀寫XML的支持(JAXB),讀寫JSON的支持(Jackson)-->
    <mvc:annotation-driven></mvc:annotation-driven>
 
    <!--3) ViewResolver視圖解析器 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- viewClass需要在pom中引入兩個包:standard.jar and jstl.jar -->
        <property name="viewClass"
                  value="org.springframework.web.servlet.view.JstlView"></property>
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
 
</beans>

3,配置web.xml    配置中央控制器(dispatchservlet)

<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"
         id="WebApp_ID" version="3.0">
  <display-name>Archetype Created Web Application</display-name>
 
  <!-- Spring和web項目集成start -->
  <!-- spring上下文配置文件 -->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
  </context-param>
  <!-- 讀取Spring上下文的監聽器 -->
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <!-- Spring和web項目集成end -->
 
  <!-- 防止Spring內存溢出監聽器 -->
  <listener>
    <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
  </listener>
 
  <!-- 中文亂碼處理 -->
  <filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <!--web.xml 3.0的新特性,是否支持異步-->
    <async-supported>true</async-supported>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  <!-- Spring MVC servlet -->
  <servlet>
    <servlet-name>SpringMVC</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!--此參數可以不配置,默認值爲:/WEB-INF/springmvc-servlet.xml-->
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>/WEB-INF/springmvc-servlet.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    <!--web.xml 3.0的新特性,是否支持異步-->
    <async-supported>true</async-supported>
  </servlet>
  <servlet-mapping>
    <servlet-name>SpringMVC</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>

注1: 配置亂碼處理 /* 導致註釋問題

4 ,HelloController


package com.practice.ssm.controller;
 
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
 
/**
 * @author Giraffe Wld
 * @site www.grf.com
 * @company grf公司
 * @create  2019-01-23 17:26
 */
@Controller
public class HelloController {
 
 
 
    /**
     *  遵循struts2原有的struts-sy.xml頁面跳轉配置
     *
     *   <package>
     *       <action name="" class="" namespace="">
     *           <result name="">跳轉頁面</result>
     *       </action>
     *   </package>
     *
     * RequetMapping 替換掉原有的action標籤的配置
     *  "括號內值" 是給action的屬性name賦值
     * @return
     */
    @RequestMapping("/hi")
    public String sayHello(){
        System.out.println("hello springMvc");
        return "hello";
    }
}

5,Hello.jsp

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2019/1/23
  Time: 17:43
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <h2>hello!!!  SpringMVC</h2>
</head>
<body>
 
</body>
</html>

二, SpringMVC處理請求的流程

  2.1 首先用戶發送請求-->DispatherServlet

(用戶發送請求通過項目的前端控制器)
  2.2 DispatcherServlet-->HandlerMapping

(前端控制器對用戶訪問的網頁路徑做處理,得到requestMapping的action屬性name的訪問)
  2.3 DispatcherServlet-->HandlerAdapter

(前端控制器進行方法的處理適配,找到相對應方法)
  2.4 HandlerAdapter-->處理器功能處理方法的調用

(處理適配器對方法的具體代碼邏輯進行調用處理)
  2.5 ModelAndView的邏輯視圖名-->ViewRecolver

視圖解析器:解析方法返回的結果碼,針對結果碼進行視圖處理

(通過方法返回結果碼,進行結果碼的視圖處理)
  2.6 View-->渲染

(具體視圖解析,渲染頁面視圖)
  2.7 返回控制權給DispatcherServlet,由DispatcherServlet返回呼應給用戶,流程結束

三, SpringMVC核心開發步驟

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


四,SpringMVC的組件

  4.1 前端控制器(DispatcherServlet)
  4.2 請求到處理器映射(HandlerMapping)
  4.3 處理器適配器(HandlerAdapter)
  4.4 視圖解析器(ViewResolver)
  4.5 處理器或頁面控制器(Controller)
  4.6 驗證器(Validator)
  4.6 命令對象(Command 請求參數綁定到的對象就叫命令對象)
  4.7 表單對象(Form Object提供給表單展示和提交到的對象就叫表單對象)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章