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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

springMVC学习笔记二

發布時間:2023/12/20 c/c++ 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 springMVC学习笔记二 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原理


發起請求時被前置控制器攔截到,這個其實就是一個DispatcherServlet,然后根據請求的參數生成代理請求,找到請求對應的實際控制器,控制器處理請求,創建數據模型,訪問數據庫,將模型響應給中心控制器,控制器使用模型與視圖渲染試圖結果,將結果返回中央控制器,然后返回給請求者。

運行步驟

簡要分析:

  • DispatcherServlet表示前置控制器,是整個SpringMVC的控制中心,用戶發出請求,DispatcherServlet接收請求并攔截請求。
    • 我們假設請求的URL為http://loclahost:8080/springmvc/hello
    • http://localhost:8080是服務器的域名
    • springmvc部署在服務器上的web站點
    • hello表示為控制器
    • 所以URL表示為請求服務器下的springmvc站點的hello控制器
  • HandleMapping為處理器器映射。DispatcherServlet調用HandleMapping,HandleMapping根據URL查找到Handle
  • HandleAdapter表示為處理器適配器,按照特定的規則去執行Handle
  • Handle讓具體的controller執行
  • 如果設置了攔截器的話,不滿足添加會被攔截下來
  • controller將具體的執行信息返回給handleadapater,如modleandview
  • 返回的時候也會被攔截器所攔截,同樣需要滿足條件
  • handleadapter將試圖邏輯名傳遞給dispatcherservlet
  • dispatcherservlet調用ViewResolve來解析handleadapter傳遞的邏輯視圖名
  • ViewResolve將解析的視圖名傳給dispatcherservlet
  • dispatcherservlet根據ViewResolve解析的視圖結果,調用具體的視圖
  • 最終視圖返回給用戶
  • 使用步驟:

    xml版本:

  • 配置dispatcherservlet中央處理器
    需要在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"> <!-- 配置中央處理器配置路徑用/,表示所有的請求都要經過這里/*:表示匹配所有請求,包括jsp頁面/:表示只匹配所有的請求,不會去匹配jsp頁面--><servlet><servlet-name>dispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- dispatcherservlet要綁定Spring配置文件,必須是集成所以配置文件的那個--><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc-servlet.xml</param-value></init-param> <!-- 啟動級別:1服務器啟動即啟動--><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>dispatcherServlet</servlet-name><url-pattern>/</url-pattern></servlet-mapping></web-app>
  • SpringMVC三要素的配置
    分別是處理器映射器(HandleMapping)、處理器適配器(handleadapter)、視圖解析器(ViewResolve)

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 處理器映射--><bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/> <!-- 處理器適配器--><bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/><!-- 視圖解析器dispatcherservlet給他的modelandview1.獲取modeladnview中的數據2.解析了modleandview的視圖名字3.拼接視圖名字,找到相應的視圖4.將數據渲染到視圖上--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/jsp/"/><property name="suffix" value=".jsp"/></bean></beans>
  • 編寫controller

    package com.yu.controller;import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.Controller;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;/*** @Description: TODO* @Author : yu* Date : 3/25/2020 1:58 PM*/ public class HelloController implements Controller {@Overridepublic ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {ModelAndView mv = new ModelAndView();//業務代碼String result = "hellospringmvc";mv.addObject("msg",result);//視圖跳轉mv.setViewName("test");//: /WEB-INF/jsp/test.jspreturn mv;} }
  • 注意:如果代碼沒有問題,還是找不到目標,那么可以去查看一些依賴的問題


    WEB-INF是否有lib目錄,里面的配置是否有

    缺點:一個controller只能有一個類,并且要配置一個bean

    注意:

    在將controller注冊到spring中的時候,前面需要加/,否則就會404

    <bean id="/t1" class="com.yu.controller.ControllerTest1"/>

    可以省略處理器映射以及處理器適配器。結果不會改變,只需要視圖解析器就行,因為mvc中默認有這兩個東西。

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver"><property name="prefix" value="/WEB-INF/jsp/"/><property name="suffix" value=".jsp"/></bean>

    注意前綴哪里是jsp/,因為是將viewname拼接到這個里面,如果缺少/或者多/,那么就會出現url路徑不正確,不能匹配的問題。

    注解版:

  • 在web中配置中央處理器dispatcherServlet

    <?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>dispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc-servlet.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>dispatcherServlet</servlet-name><url-pattern>/</url-pattern></servlet-mapping> </web-app>
  • 在spring配置中開啟注解

    <?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:cotext="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttps://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/mvchttps://www.springframework.org/schema/mvc/spring-mvc.xsd"><!-- 這個是掃描包,不用再自己配置bean--><cotext:component-scan base-package="com.yu.controller"/> <!-- 讓Spring MVC不在處理靜態資源 .css .js .html .mp3等等--><mvc:default-servlet-handler/> <!-- 開啟mvc注解相當于與注入一個處理器映射一個處理器適配器--><mvc:annotation-driven/><!-- 視圖解析器--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/jsp"/><property name="suffix" value=".jsp"/></bean></beans>
  • 編寫controller

    package com.yu.controller;import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping;/*** @Description: TODO* @Author : yu* Date : 3/25/2020 3:01 PM*/ @Controller public class HelloController {@RequestMapping("/h1")public String hello(Model model){//封裝數據model.addAttribute("msg","hellow springmvcannatation");return "hello"; //會被視圖解析器處理,這個/到底是為什么?要說和前面xml里面的id一樣} }

    注意:

  • 每次都要配置lib文件夾,因為好像是idea的問題,經常沒有將依賴導進去。
  • controller返回的字符串需要看看和視圖解析器的前后綴拼接起來后是不是一個完整的url,缺少/就添,多了就去掉。
  • 總結

    以上是生活随笔為你收集整理的springMVC学习笔记二的全部內容,希望文章能夠幫你解決所遇到的問題。

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