日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringMVC_2.搭建SpringMVC

發布時間:2024/10/8 javascript 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringMVC_2.搭建SpringMVC 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第1步: 添加jar包

????????Spring開發 需要的基本包

  • Spring-beans-版本號.jar
  • Spring-context-版本號.jar
  • Spring-core-版本號.jar
  • Spring-expression-版本號.jar
  • commons.logging-版本號.jar(單獨下載)
  • log4j-版本號.jar(單獨下載)

????????SpringMVC開發 需要包

  • spring-web-5.1.2.RELEASE.jar
  • spring-webmvc-5.1.2.RELEASE.jar

第2步: 配置web.xml,引入SpringMVC框架(注冊前端控制器)

????????SpringMVC是基于請求驅動,圍繞Servlet設計.通過在web.xml中配置SpringMVC的核心Servlet程序--DispatcherServlet,實現將請求分派給控制器.

說明:

  • 導包(類全名) org.springframework.web.servlet.DispatcherServlet
  • 值必須為 " / " [ 攔截所有非JSP資源 ] , 不能寫為 " / * " [ 攔截所有請求?] .
  • <!--注冊前端控制/視圖分發器--> <servlet><servlet-name>springmvctest</servlet-name>/****/<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> </servlet> <servlet-mapping><servlet-name>springmvctest</servlet-name><url-pattern>/</url-pattern><!--攔截所有非JSP的請求--> </servlet-mapping>

    ?`問題:

    ????????1.為什么要注冊前端控制器?

    ????????原因: 之前使用Servlet進行頁面的跳轉控制,現在要用SpringMVC取代Servlet的功能,所以要注冊SpringMVC,告訴服務器(Tomcat)誰來管理轉向問題,按照注冊Servlet頁面的方式注冊即可

    ? ? ? ? 2.為什么不攔截JSP的請求

    ????????理解一(本人):

    ????????原因:

    ????????1.設置攔截主要攔截靜態資源請求,除了jsp和Servlet外都是靜態資源,就算 /list,/add,/delete 也算是靜態請求,攔截靜態請求后action類進行匹配執行,然后由后臺的action方法進行控制跳轉JSP或其他動態資源

    ? ? ? ? 補充: 因為只攔截控制靜態請求,不攔截控制動態請求,安全問題,用戶可能直接就訪問JSP頁面,而這些頁面我們是不想讓用戶看到的,用戶看到的都是JSP動態生成的HTML頁面,所以就把JSP文件全部放在WEB-INF文件夾下了,放在那里用戶不能直接訪問只能跳轉)

    關于這個問題留言 : 2021/6/28 直到今天,其實我還是感覺 /* 和 / 都沒區別,因為攔截部分和攔截全部都可以交給action類進行處理,搭配上注冊的Tomcat默認Servlet就可以防止攔截后的部分請求訪問不到,如: .png , .jgp ...這些結尾的文件,所以無法理解一定要用 / 來攔截

    ? ? ? ? 理解二(來自網絡):

    ????????處理*.jsp是tomcat做的事;所有項目的小web.xml都是繼承于大web.xml
    DefaultServlet是Tomcat中處理靜態資源的,除jsp和servlet外的所有都是靜態資源。
    Index.html:靜態資源,tomcat就會在服務器下找到這個資源并返回;我們前端控制器的/禁用了tomcat服務器中的DefaultServlet

  • 服務器的文件中web.xml中有一個DefaultServlet是url-pattern=/
  • 我們的配置中前端控制器url-pattern=/,靜態資源會來到DispatchServlet(前端控制器),看哪個方法的RequestMapping是這個index.html
  • 為啥jsp又能訪問,因為我們沒有覆蓋服務器中的JspServlet的配置
  • /*直接就是攔截了所有請求;我們寫/;也是為了迎合后來的Rest風格的URL地址。Rest風格的url我們后續博客會講。
  • ?延伸:

    • SpringMVC配置文件默認名稱: -servlet.xml.
    • SpringMVC配置文件默認位置:? / WEB-INF / *-servlet.xml? (和web.xml屬于同一位置)
    • SpringMVC配置文件默認名規則:注冊前段控制器時的?的值?拼上-servlet.xml.

    自定義配置文件名稱:

    ????????若自定義SpringMVC配置文件的文件名和位置 ( 位置這里以src下為例 ) ,必須在注冊前端控制器時,(servlet標簽里面)指出文件和位置,示例:

    <!--指出SpringMVC配置文件的位置和名字--> <init-param><param-name>contextConfigLocation</param-name>(固定名字)<param-value>classpath:springmvc.xml</param-value>(classpath:src下直接寫相對路徑) </init-param>

    ?示圖?( 注意有順序要求標簽要寫在和標簽后面 )?

    第3步: 編寫SpringMVC配置文件

    ????????備注: SpringMVC配置文件 與 Spring配置文件相同,區別在于配置的內容

    編寫SpringMVC配置文件 思路 :

    ????????1.? 注冊Action,指出哪些類可以處理請求和響應: 控制反轉的任意一種實現方式都可以完成注冊(這里用自動掃描)

    ? ? ? ? 2.? 注冊視圖解析器,在注冊解析器中聲明要拼接的內容,前綴內容和后綴內容,然后自動完成拼接,拼接規則:?http:localhost:8080/項目名稱 +?前綴 + 邏輯視圖名稱 + 后綴

    說明:

  • 導包(類全名) org.springframework.web.servlet.view.InternalResourceViewResolver
  • ????????附加: 了解Action 和 Servlet 的區別請點擊

    <!--注冊Action,指出哪些類可以處理請求和響應: 控制反轉的任意一種實現方式都可以完成注冊--> <context:component-scan base-package="action" /> <!--注冊視圖解析器--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="viewResolver"><property name="prefix" value="/WEB-INF/jsp/" />(name固定名字,prefix表示拼接文件的前綴)<property name="suffix" value=".jsp" />(name固定名字,suffix表示拼接路徑的后綴)<!-- 前綴+邏輯視圖名稱+后綴: /WEB-INF/jsp/index.jsp --><!-- http:localhost:8080/項目名稱+/WEB-INF/jsp/index.jsp --> </bean>

    ????????提示: 基本的安全問題,為了防止用戶可以任意直接訪問JSP頁面(因為JSP頁面屬于后臺頁面),所以把JSP頁面放入WEB-INF文件夾中,WEB-INF文件夾中的所有東西用戶都是無法訪問的,只有進行后臺跳轉才可以訪問

    name屬性名作用
    prefix設置前綴字符用
    suffix設置后綴字符用

    第4步: 編寫Action方法

    請求映射思路:

    ????????SpringMVC將請求轉到Action類中,然后根據請求的方式和資源,直接映射到具備相關資源和方式的Action方法

    @Controller //聲明當前類作為控制器使用,具備處理請求和相應的功能 public class TestAction {@RequestMapping("/映射路徑A") //http://localhost:8080/項目名/映射路徑A ?GET請求public String Action方法(){/*任務處理過程略*/return "邏輯視圖名"; //要返回時的視圖頁面} }
    注解名作用
    Controller?(使自動掃描器掃描到本類)聲明當前類作為控制器使用,具備處理請求和相應的功能
    RequestMapping("/映射路徑")

    默認攔截GET方式的請求,截取 http:localhost:8080/項目名稱 后面的內容進行判斷(也就是解決項目名后的內容)

    如果請求內容和請求方式一致進行攔截處理

    提示:地址欄中直接訪問屬于GET請求

    問題:

    ????????1.為什么要注解控制類?

    ????????原因: 讓SpringMVC配置文件掃描的時候可以發現有這么一個可以處理客戶端請求的類,方便接收到請求后轉給這個類進行處理

    ? ? ? ? 2.為什么Action中的處理請求的方法一定要注解?

    ????????原因:?控制類接收了請求,根據對有注解的方法的條件進行判斷,判斷請求方式,請求內容,找到滿足要求的,執行該方法

    ? ? ? ? 3.Action方法一般返回的是什么?

    ????????原因: 一般返回邏輯視圖名,即需要SpringMVC試圖解析其,解析出真實的文件,才能進行顯示(就像S額錄入Servlet文件中處理完成請求后要重定向或者轉向一個頁面給用戶顯示一樣)

    ? ? ? ? 2.Action方法返回邏輯視圖名后怎么處理的?

    ????????原因: 在SpringMVC配置文件中注冊了視圖解析器之后,視圖解析器就會根據Action方法返回的邏輯視圖名進行拼接,拼接成一個完整的請求,然后執行,進行正確的頁面訪問

    (建議使用視圖解析器,那樣我們就不需要在Servlet中一樣為了路徑的問題而發愁,每次執行單都要單寫返回路徑害怕寫錯,Action方法應該也是可以像Servlet中那樣返回一個你自己寫的完整的路徑的,我沒有試過,不過應該可以,原理如此)

    第5步: 測試請求

    在瀏覽器上輸入http://localhost:8080/項a目名/映射路徑A,查看是否顯示相關頁面

    請求流程

    第一步: 地址欄中輸入了GET方式的請求,發送給服務器

    第二步: 被注冊好的前段控制器的條件所攔截請求

    第三步: 轉給DispatcherServlet類進行處理

    第四部: DispatcherServlet將請求轉給springMvc配置文件

    第五步: springMvc配置文件掃描了action,發現了控制類,轉給控制類進行匹配

    第六步: 控制類接收了請求,根據對有注解的方法的條件進行判斷,判斷請求方式,請求內容,找到滿足要求的,執行該方法(到這應該就可以理解為什么Action中的處理請求的方法一定要注解了)

    響應流程

    第一步:Action方法執行完后返回邏輯視圖名

    第二步:視圖解析器收到返回的邏輯視圖名,進行拼接處理

    第三步:執行拼接好的路徑請求

    總結

    以上是生活随笔為你收集整理的SpringMVC_2.搭建SpringMVC的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。