SpringMVC基礎知識

做者:gqk前端


前言 :

本章目標:

  1. 什麼是SpringMVC

  2. SpringMVC框架原理

  3. SpringMVC入門程序

1,什麼是Spring和SpringMVC

    Spring 配備構建Web 應用的全功能MVC框架。Spring能夠很便捷地和其餘MVC框架集成,如Struts,Spring 的MVC框架用控制反轉把業務對象和控制邏輯清晰地隔離。它也容許以聲明的方式把請求參數和業務對象綁定。java

    spring mvc是一個基於mvc的web框架。spring mvc是spring框架的一個模塊,springmvc和spring無需經過中間整合層進行整合。web

2,SpringMVC框架原理(重要)

掌握幾個器:前端控制器,處理器映射器,處理器適配器,試圖解析器spring

 

 

 

  第一步:發起請求到前端控制器(DispatcherServlet)api

    第二步:前端控制器請求HandlerMapping查找Handler能夠根據xml配置、註解進行查找spring-mvc

    第三步:處理器映射器HandlerMapping向前端控制器返回Handlertomcat

    第四步:前端控制器調用處理器適配器去執行Handlermvc

    第五步:處理器適配器去執行Handlerapp

    第六步:Handler執行完成給適配器返回ModelAndView框架

    第七步:處理器適配器向前端控制器返回ModelAndView。ModelAndView是springmvc框架的一個底層對象,包括 Model和view

    第八步:前端控制器請求視圖解析器去進行視圖解析,根據邏輯視圖名解析成真正的視圖(jsp)

    第九步:視圖解析器向前端控制器返回View

    第十步:前端控制器進行視圖渲染。視圖渲染將模型數據(在ModelAndView對象中)填充到request域

    第十一步:前端控制器向用戶響應結果

SpringMVC中的組件:

  1. 前端控制器DispatcherServlet(SpringMVC已經封裝好無需咱們開發),能夠用來接收請求,響應結果
  2. 處理器映射器HandlerMapping:根據請求的url來查找對應的Handler
  3. 處理器適配器HandlerAdapter:按照特定的規則去執行Handler
  4. 處理器Handler:是一個控制器(編寫的時候要按照適配器的規則去編寫)
  5. 視圖解析器View resolver:進行視圖解析

 3,SpringMVC入門程序

idear導入本地maven插件

 

new->project->maven

 

建立好後咱們須要手動去建立一些目錄:手動建webapp的目錄

 

 

 建立好後 是沒有web,xml文件的須要導入web.xml文件(選擇項目結構)

選擇 facets,點擊+號, 選擇 web

 

 

 

 

 

 

 

 

 

 

 添加web.xml成功:

配置前端控制器

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0">
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- contextConfigLocation配置springmvc加載的配置文件(配置處理器映射器、適配器等等) 若不配置,默認加載WEB-INF/servlet名稱-servlet(springmvc-servlet.xml) -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <!-- 第一種:*.action,訪問以.action結尾,由DispatcherServlet進行解析 第二種:/,全部訪問的地址由DispatcherServlet進行解析,對靜態文件的解析須要配置不讓DispatcherServlet進行解析, 使用此種方式和實現RESTful風格的url 第三種:/*,這樣配置不對,使用這種配置,最終要轉發到一個jsp頁面時,仍然會由DispatcherServlet解析jsp地址, 不能根據jsp頁面找到handler,會報錯 -->
        <url-pattern>*.action</url-pattern>
    </servlet-mapping>
</web-app>

 

編寫控制器(控制器的編寫和適配器有關係)

注意:

javax.servlet.http.HttpServletRequest httpServletRequest可能會報錯 解決方法下面看(沒有servlet的jar)
package com.gqk.controller; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.Controller; import java.util.Date; public class HelloHandler implements Controller { public ModelAndView handleRequest(javax.servlet.http.HttpServletRequest httpServletRequest, javax.servlet.http.HttpServletResponse httpServletResponse) throws Exception { ModelAndView mv = new ModelAndView(); mv.setViewName("index"); mv.addObject("date",new Date()); return mv; } }

 

IntelliJ IDEA關於「cannot resolve symbol servlet」的解決

 

 

 

 

 右鍵項目->open module setting,以下圖所示

 

 

 

.libraries-> + ->Java->選擇路徑(tomcat安裝目錄下lib->tomcat-api.jar)

 

 

 

 

選擇對應的jar

 

 

 

 

 

配置Handler,處理器映射器,處理器適配器,視圖解析器

<?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.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">

<bean name="/hello.action" class="com.gqk.controller.HelloHandler"/>
<!-- 處理器映射器
將bean的name做爲url進行查找,須要在配置Handler時指定beanname(就是url)
-->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
<!-- 視圖解析器
解析jsp
-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 配置jsp路徑的前綴 -->
<property name="prefix" value="/"/>
<!-- 配置jsp路徑的後綴 -->
<property name="suffix" value=".jsp"/>
</bean>
</beans>

 

 

啓動tomcat訪問

http://localhost:8086/hello.action

 

 

總結:

  1. 導入環境

  2. 配置前端控制器

  3. 編寫控制器

  4. 配置控制器

  5. 配置適配器

  6. 配置映射器

  7. 配置試圖解析器

  8. 項目部署訪問

相關文章
相關標籤/搜索