java struts框架,strtus2 與springmvc

 2023-11-19 阅读 29 评论 0

摘要:為什么80%的碼農都做不了架構師?>>> ?? web.xml文件中 springmvc中的url-patter 一般寫/而不是 ? ?/* java struts框架。spring-mvc.xml文件中?? <mvc:default-servlet-handler/> 假如springmvc項目中的web.xml文件中的url-pattern 的值寫/*,那返回的j

為什么80%的碼農都做不了架構師?>>> ??hot3.png

web.xml文件中

springmvc中的url-patter 一般寫/而不是 ? ?/*

160258_Pf6Y_2769907.png

java struts框架。spring-mvc.xml文件中?? <mvc:default-servlet-handler/>

160348_DcqV_2769907.png

假如springmvc項目中的web.xml文件中的url-pattern 的值寫/*,那返回的jsp頁面是文本格式,而不是jsp頁面,個人理解是(相當于進行第二次過濾)

web.xml文件中

strut2中的url-pattern一般寫/*

ssh mvc、155859_c0S7_2769907.png

url-pattern問題?
spring用到forward(“/WEB-INF/jsp/*.jsp”)?
而forward當然是又要經過web.xml的映射的,?
然后,在URL匹配時,?
<url-pattern> / </url-pattern>?不會匹配到*.jsp,不會進入spring的DispatcherServlet類?
<url-pattern> /* </url-pattern>?會匹配*.jsp,導致進入spring的DispatcherServlet 類,然后去尋找controller,接著找不到對應的controller所以報錯。

總之,關于web.xml的url映射的小知識:?
<url-pattern>/</url-pattern>?會匹配到/login這樣的路徑型url,不會匹配到模式為*.jsp這樣的后綴型url?
<url-pattern>/*</url-pattern>?會匹配所有url:路徑型的和后綴型的url(包括/login,.jsp,.js和*.html等)

<url-pattern>/</url-pattern>甚至會造成The requested resource () is not available.

以上內容轉載自:http://www.cnblogs.com/Mr-Nobody/p/3642018.html?
=============================分割線:對轉載文章的補充===========================?
<url-pattern> /* </url-pattern>?會匹配*.jsp,導致進入spring的DispatcherServlet 類,然后去尋找controller,接著找不到對應的controller所以報錯。

jdbc java?這句話值得應該是請求返回到瀏覽器,頁面顯示的是jsp源碼,這樣才能與題相對應。

那么為什么匹配*.jsp,導致進入spring的DispatcherServlet 類頁面就顯示jsp源碼了?原因如下:?
一般情況,在spring-mvc.xml配置文件中,都會添加如下代碼來處理對靜態資源的訪問:

    <!-- 對訪問靜態資源請求的處理方式有兩種: 選擇任意一種配置都可以--><!-- 方式一:對靜態資源文件的訪問,避免controller攔截 --><mvc:default-servlet-handler /><!-- 方式二: 配置指定的靜態資源地址以及攔截的請求,static資源文件與WEB-INF同級--><mvc:resources mapping="/static/**" location="/static/" cache-period="31536000"/><!-- 此部分與題無關,作為了解內容多個HandlerMapping的執行順序問題:DefaultAnnotationHandlerMapping的order屬性值是:0<mvc:resources/ >自動注冊的 SimpleUrlHandlerMapping的order屬性值是: 2147483646<mvc:default-servlet-handler/>自動注冊 的SimpleUrlHandlerMapping 的order屬性值是: 2147483647spring會先執行order值比較小的。當訪問一個a.jpg圖片文件時,先通過 DefaultAnnotationHandlerMapping 來找處理器,一定是找不到的,我們沒有叫a.jpg的Action。再按order值升序找,由于最后一個 SimpleUrlHandlerMapping 是匹 "/**"的,所以一定會匹配上,再響應圖片。-->

?

上述配置導致了一個的結果就是把.jsp,.sql,*.txt都當做txt處理。結果就是直接在瀏覽器加載了jsp源碼。

當然,如果不配置上述對靜態資源處理的代碼,那么結果是找不到對應的controller所以報錯,404錯誤。實際上靜態資源的處理配置肯定是要加的。

Spring mvc,后臺日志也給出了上述顯示jsp源碼的經過:

//顯示Forward跳轉
Forwarding to resource [/WEB-INF/jsp/list.jsp] in InternalResourceView 'list'
//然后被DispatcherServlet攔截
DispatcherServlet with name 'springServlet' processing GET request for [/seckill/WEB-INF/jsp/list.jsp]
//然后為/WEB-INF/jsp/list.jsp請求尋找處理方法
Looking up handler method for path /WEB-INF/jsp/list.jsp
//結果當然是沒有找到了
Did not find handler method for [/WEB-INF/jsp/list.jsp]
Matching patterns for request [/WEB-INF/jsp/list.jsp] are [/**]
URI Template variables for request [/WEB-INF/jsp/list.jsp] are {}
Mapping [/WEB-INF/jsp/list.jsp] to HandlerExecutionChain with handler [org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler@5fce904c] and 1 interceptor
Last-Modified value for [/seckill/WEB-INF/jsp/list.jsp] is: -1
//一個空的ModelAndView返回給了DispatcherServlet,并認為請求已完成
Null ModelAndView returned to DispatcherServlet with name 'springServlet': assuming HandlerAdapter completed request handling
Successfully completed request

?

如果我就不想用<url-pattern>/</url-pattern>,想用某個固定的后綴,比如<url-pattern>*.do</url-pattern>,那么controller的@RequestMapping(value = "/xxx.do")這樣的,地址欄請求是這樣的:http://localhost:8080/xxx.do

轉載于:https://my.oschina.net/ldm95/blog/884479

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/184046.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息