欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Spring MVC同時(shí)使用多種試圖解析器的解決方案

系統(tǒng) 2509 0

Spring提供的試圖解析器大致分為兩類
一類是需要ViewResolver,如
? 解析JSP的InternalResourceViewResolver?
? 解析Velocity的VelocityViewResolver
? 解析freemarker的FreeMarkerViewResolver
另一類是直接使用View生成試圖對(duì)象,如
? 繼承AbstractExcelView的子類
? 繼承AbstractPdfView的子類

我們?nèi)绻霝槲覀兊南到y(tǒng)配置多個(gè)試圖解析器,可以參考使用試圖解析器鏈這個(gè)功能

分兩種情況,如果第一類和第二類混合使用,可以使用如下的方法

??

< bean? id ="viewResolverOne" ?class ="org.springframework.web.servlet.view.BeanNameViewResovler" >
??
< property? name ="order" >< value > 1 </ value ></ property >
</ bean >

<!-- -繼承AbstractExcelView或者其他抽象view->
<bean?name="listShows"?class="com.springinaction.view.ListShowsView">


<bean?id="viewResolverTwo"?class="org.springframework.web.servlet.view.InternalResourceViewResolver">
??<property?name="prefix">
????<value>/jsp/</value>
??</property>
??<property?name="suffix">
????<value>.jsp</value>
??</property>
??<property?name="viewClass">
????<value>org.springframework.web.servlet.view.JstlView</value>
??</property>
</bean>

? 這樣,當(dāng)一個(gè)Controller訪問(wèn)一個(gè)邏輯名時(shí),spring mvc會(huì)自動(dòng)先從order小的解析器尋找,如果找不到,再一次增大order進(jìn)行尋找,這樣,就可以使用試圖解析器鏈

?

但是,如果我們需要兩個(gè)第一類的解析器共同使用,用上述方法是不行的,因?yàn)槟侨齻€(gè)解析器都繼承自UtlBasedViewResovler,這種情況下,如果發(fā)現(xiàn)資源不存在的情況,這種機(jī)制不會(huì)去通知下一個(gè)解析器
所以,就會(huì)出現(xiàn),spring mvc總按照order最小的去解析,及時(shí)資源不存在(404錯(cuò)誤)為了解決這個(gè)問(wèn)
題,我們可以使用org.springframework.web.servlet.view.ResourceBundleViewResolver來(lái)解決

?

JSP頁(yè)面(用作輸入用),路徑/jsp

register.jsp

?

<% ... @?page?language = " java " ?import = " java.util.* " ?pageEncoding = " GB18030 " %>
<% ... @?taglib?prefix = " spring " ?uri = " http://www.springframework.org/tags " ? %>
<% ... @?taglib?uri = " http://java.sun.com/jsp/jstl/core " ?prefix = " c " ? %>
<! DOCTYPE?HTML?PUBLIC?"-//W3C//DTD?HTML?4.01?Transitional//EN" >
< html >
??
< head >
????
???
?
??
</ head >
??
??
??
< body >

??

???
< form? action ="<%=request.getContextPath()?%>/register.mvc" ?method ="post" >
????
??????name:? < input? type ="text" ?name ="name" ?value ="<c:out?value=" ${status.value}" /> "/>(必須輸入)
??????
</ br >
??
?????sex:?? < input? type ="text" ?name ="sex" /> (必須輸入,且為0或1) br >
???????????
< input? type ="submit" ?value ="submit" />
???
</ form >
??
</ body >
</ html >

?

輸入結(jié)果顯示,使用Velocity 路徑/velocity

successV.vm

?

< html >
??
< body >
???????this is in velocity template ??
</ body >
????
< table >
???
???????
< tr >
?????????
??????????
< td > ${student.name} </ td >
??????????
< td > ${student.sex} </ td >
???????
</ tr >
??
?????
</ talbe >
??
</ body >
</ html >

?

控制器:

?

package ?Action;

import ?model.Student;
import ?org.springframework.web.servlet.mvc.AbstractController;
import ?org.springframework.validation.BindException;
import ?org.springframework.web.servlet.ModelAndView;
import ?org.springframework.web.servlet.mvc.SimpleFormController;

public ? class ?RegisterStudentController? extends ?SimpleFormController? ... {



????
public ?RegisterStudentController() ... {

????????
this .setCommandClass(Student. class );
????}



????
protected ?ModelAndView?onSubmit(Object?object,?BindException?arg1)? throws ?Exception? ... {
????????
return ? new ?ModelAndView(getSuccessView(), " student " ,stu);
????}



}

?

在classpath建立資源文件views_zh_CN.properties(這是spring的默認(rèn)名,可以更改,但需要額外配置)

success.class=org.springframework.web.servlet.view.velocity.VelocityView
success.url=/velocity/successV.vm

表示當(dāng)邏輯名是success的時(shí)候,使用這里定義的試圖解析器

web.xml

?

<? xml?version="1.0"?encoding="UTF-8" ?>
< web-app? version ="2.4" ?
????xmlns
="http://java.sun.com/xml/ns/j2ee" ?
????xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance" ?
????xsi:schemaLocation
="http://java.sun.com/xml/ns/j2ee?
????http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
>
??
< context-param >
????
< param-name > contextConfigLocation </ param-name >
????
< param-value > /WEB-INF/train-servlet.xml </ param-value >
??
</ context-param >
??
< servlet >
????
< servlet-name > train </ servlet-name >
????
< servlet-class > org.springframework.web.servlet.DispatcherServlet </ servlet-class >
????
< load-on-startup > 0 </ load-on-startup >
??
</ servlet >
??
< servlet-mapping >
?????
< servlet-name > train </ servlet-name >
?????
< url-pattern > *.mvc </ url-pattern >
??
</ servlet-mapping >

???
< listener >
?????
< listener-class > org.springframework.web.context.ContextLoaderListener </ listener-class >
???
</ listener >
????
??
< filter >
????
< filter-name > character </ filter-name >
????
< filter-class > Action.CharacterFilter </ filter-class >
??
</ filter >
??
< filter-mapping >
????
< filter-name > character </ filter-name >
????
< url-pattern > /* </ url-pattern >
??
</ filter-mapping >
??
< welcome-file-list >
????
< welcome-file > index.jsp </ welcome-file >
??
</ welcome-file-list >
</ web-app >

?

spring配置文件:

?

< bean? id ="RegisterStudentController" ?class ="Action.RegisterStudentController" >
??
< property? name ="commandClass" >
????
< value > model.Student </ value >
??
</ property >
??
< property? name ="formView" > ?? <!-- -輸入頁(yè)面采用jsp解析器->
????<value>register</value>
??</property>
??<property?name="successView">??<!---顯示頁(yè)面使用Velocity解析器->
????<value>success</value>
??</property>
</bean>


<bean?id="simpleUrlMapping"?

class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
?<property?name="mappings">
???<props>
????<prop?key="/register.mvc">RegisterStudentController</prop>
???</props>
?</property>
</bean>


<!---jsp解析器->
<bean?id="viewResolver"?

class="org.springframework.web.servlet.view.InternalResourceViewResolver">
??<property?name="prefix">
????<value>/jsp/</value>
??</property>
??<property?name="suffix">
????<value>.jsp</value>
??</property>
??<property?name="viewClass">
????<value>org.springframework.web.servlet.view.JstlView</value>
??</property>
</bean>

<!---配置Velocity->
<bean?id="velocityConfigurer"?class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
??<property?name="resourceLoaderPath">
????<value>/</value>??
??</property>
</bean>

<!--配置ResourceBundle,使用配置文件為classpath下的views.properties,views_zh_CN.properties等
-->
< bean? id ="viewResouceResolver" ?class ="org.springframework.web.servlet.view.ResourceBundleViewResolver" >
??
< property? name ="basename" ?value ="views" />
</ bean >

?

運(yùn)行頁(yè)面,可以看到,我們輸入的調(diào)用的是jsp頁(yè)面,顯示結(jié)果調(diào)用的是Velocity,如果采用第一種order的方式

spring mvc會(huì)找register.jsp和success.jsp或者register.vm或者success.vm,這樣總有一步是錯(cuò)誤的

?



Spring MVC同時(shí)使用多種試圖解析器的解決方案


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 夜色在线影院 | 国产精品亚洲精品不卡 | 婷婷色综合 | 成人亚洲视频 | 97麻豆精品国产自产在线观看 | 一级黄色片在线 | 99久久婷婷| 97se亚洲综合在线韩国专区福利 | 老司机午夜性大片 | 亚洲乱码在线卡一卡二卡新区 | 国产日产精品久久久久快鸭 | 欧美一级www片免费观看 | 国产精品国产a级 | 久草不卡视频 | 天天射天天操天天干 | 成人久草| 国产亚洲精品高清在线 | jizz 亚洲大全 | 三级黄毛片| 精品视频在线观看 | 亚洲欧美成人 | 日本黄色激情 | va在线| 精品一区二区久久久久久久网站 | 91丁香亚洲综合社区 | 色婷婷香蕉 | 添人人躁日日躁夜夜躁夜夜揉 | 中国美女一级黄色片 | 26uuu在线| 91精品国产闺蜜国产在线 | 亚洲欧美久久婷婷爱综合一区天堂 | 亚洲免费一区二区 | 日本在线小视频 | 成人精品视频一区二区三区尤物 | 特黄a级片 | 欧美日韩一区二区三区在线观看 | jizz18毛片 | 国产剧情一区二区三区 | 一本伊大人香蕉久久网手机 | 国产欧美久久一区二区三区 | 天天爽天天碰狠狠添 |