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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

Day2-springmvc初解

發(fā)布時(shí)間:2025/4/16 c/c++ 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Day2-springmvc初解 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1. web.xml

配置springmvc的入口DispatcherServlet,把所有的請(qǐng)求都提交到該Servlet。

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"><!-- 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-pattern>/</url-pattern></servlet-mapping> </web-app>

說明:
1:在web.xml里面導(dǎo)入前端控制器,通過< url-pattern >設(shè)置匹配規(guī)則,如上面設(shè)置的/,會(huì)匹配所有的url。
2:若url匹配成功,交給HandlerMapping處理映射器處理(具體的形式是業(yè)務(wù)代碼中的Controller,通過RequestMapping進(jìn)一步傳遞匹配)
3:HandlerAdapter處理器適配器,處理一些功能請(qǐng)求,返回一個(gè)ModelAndView對(duì)象(包括模型數(shù)據(jù)、邏輯視圖名)
4:ViewResolver視圖解析器,先根據(jù)ModelAndView中設(shè)置的View解析具體視圖
5:然后再將Model模型中的數(shù)據(jù)渲染到View上。
6:若第2步的url未成功匹配,則相當(dāng)于通過缺省匹配(有關(guān)匹配規(guī)則,下面會(huì)解釋),直接由ViewResolver視圖解析器負(fù)責(zé)映射資源文件。映射成功予以返回顯示,否則則返回404錯(cuò)誤。
原文:https://blog.csdn.net/windflybird/article/details/81054584
:<servlet>必須含有<servlet-name>和<servlet-class>,或者<servlet-name>和<jsp-file>

  • <servlet-name>用來定義servlet的名稱,該名稱在整個(gè)應(yīng)用中必須是惟一的與<servlet-mapping>標(biāo)簽中的<servlet-name>名字相同。
  • <servlet-class>用來指定servlet的完全限定的名稱。
  • <load-start-up>在servlet標(biāo)簽中寫入該標(biāo)簽后,可以在服務(wù)器啟動(dòng)時(shí)自動(dòng)創(chuàng)建該servlet,這個(gè)標(biāo)簽中還可以寫入數(shù)字,來提供創(chuàng)建servlet的順序。
  • <servlet-mapping>含有<servlet-name>和<url-pattern>
    <url-pattern>表示瀏覽器訪問的頁面
    <servlet-name>名字與<servlet>中的<servlet-name>相同。
  • 2.加載Servlet的過程
    容器的Context對(duì)象對(duì)請(qǐng)求路徑(URL)做出處理,去掉請(qǐng)求URL的上下文路徑后,按路徑映射規(guī)則和Servlet映射路徑(<url- pattern>)做匹配,如果匹配成功,則調(diào)用這個(gè)Servlet處理請(qǐng)求。

    3.Serclet是如何匹配路徑的

  • 精確路徑匹配**?例子:比如servletA 的url-pattern為 /test,servletB的url-pattern為 / ,這個(gè)時(shí)候,如果我訪問的url為http://localhost/test ,這個(gè)時(shí)候容器就會(huì)先進(jìn)行精確路徑匹配,發(fā)現(xiàn)/test正好被servletA精確匹配,那么就去調(diào)用servletA,也不會(huì)去理會(huì)其他的servlet了。
  • 最長路徑匹配**?*例子:servletA的url-pattern為/test/,而servletB的url-pattern為/test/a/,此時(shí)訪問http://localhost/test/a時(shí),容器會(huì)選擇路徑最長的servlet來匹配,也就是這里的servletB。
  • 擴(kuò)展匹配**?*如果url最后一段包含擴(kuò)展,容器將會(huì)根據(jù)擴(kuò)展選擇合適的servlet。例子:servletA的url-pattern:*.action
  • 如果前面三條規(guī)則都沒有找到一個(gè)servlet,容器會(huì)根據(jù)url選擇對(duì)應(yīng)的請(qǐng)求資源。如果應(yīng)用定義了一個(gè)default servlet,則容器會(huì)將請(qǐng)求丟給default servlet(什么是default servlet?后面會(huì)講)。
  • 4.工程名-servlet.xml

  • 默認(rèn)查找MVC配置文件的地址是:/WEB-INF/${servletName}-servlet.xml
  • 可以通過配置修改MVC配置文件的位置,需要在配置DispatcherServlet時(shí)指定MVC配置文件的位置。
    我們?cè)谄脚_(tái)項(xiàng)目兩個(gè)工程中分別使用了不同的配置方式,介紹如下:
    我們?cè)赽usiness-client工程中按照默認(rèn)方式查找MVC的配置文件,配置文件目錄為: /WEB-INF/business-servlet.xml。工程目錄結(jié)構(gòu)如下所示:

    我們?cè)趐ublic-base-server工程中,通過第2種方式進(jìn)行配置,把spring-servlet.xml放到src/main/resources/config/spring-servlet.xml,則需要在配置DispatcherServlet時(shí)指定標(biāo)簽。具體代碼如下:
  • <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"><!-- DispatcherServlet --><servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:controller/springmvc-servlet.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>/</url-pattern></servlet-mapping> </web-app>

    工程目錄結(jié)構(gòu)如下所示:

    注意:用戶可以配置多個(gè)DispatcherServlet來分別處理不同的url請(qǐng)求,每個(gè)DispatcherServlet上下文都對(duì)應(yīng)一個(gè)自己的子Spring容器,他們都擁有相同的父Spring容器(業(yè)務(wù)層,持久(dao)bean所在的容器)。
    classpath:在工程文件中有一個(gè).classpath文件,打開后找到如下:
    這里的path就是classpath的路徑。打開這個(gè)文件路徑可以看到不僅僅是java類會(huì)被編譯成class存放在classes目錄下,而且properties文件、xml文件也會(huì)放到這個(gè)目錄下,但沒有找到web.xml。

    4.jsp頁面的訪問
    先附上要訪問的jsp頁面:

    這里要訪問的是WEB-INF底下page文件夾中的index.jsp頁面。
    工程名-servlet.xml的代碼只能訪問到WEB-INF中的jsp文件,而不能具體到其子目錄中的文件
    原:

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans><!--id實(shí)例化的名字,class實(shí)例化的類 --><bean id="simpleUrlHandlerMapping"class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"><property name="mappings"><props><prop key="/index">indexController</prop></props></property></bean><bean id="indexController" class="controller.IndexController"></bean> </beans>

    更改后:

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans><!--id實(shí)例化的名字,class實(shí)例化的類 --><!-- 作用是把視圖約定在 /WEB-INF/page/*.jsp 這個(gè)位置 --><bean id="viewResolver"class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/page/" /><property name="suffix" value=".jsp" /></bean><bean id="simpleUrlHandlerMapping"class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"><property name="mappings"><props><prop key="/index">indexController</prop></props></property></bean><bean id="indexController" class="controller.IndexController"></bean> </beans>

    prefix:意思是前綴
    suffix:意思是后綴
    原先的訪問路徑為:http://localhost:8080/springmvc/index
    現(xiàn)在的訪問路徑為:http://localhost:8080/springmvc/index
    沒有變化,改變的地方在IndexController類中,
    原:為ModelAndView mav=new ModelAndView("index.jsp");
    現(xiàn)在:為ModelAndView mav=new ModelAndView("index");
    參考資料:
    ****https://blog.csdn.net/believejava/article/details/43229361

    總結(jié)

    以上是生活随笔為你收集整理的Day2-springmvc初解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。