亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

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

系統 2434 0

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

我們如果想為我們的系統配置多個試圖解析器,可以參考使用試圖解析器鏈這個功能

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

??

< 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>

? 這樣,當一個Controller訪問一個邏輯名時,spring mvc會自動先從order小的解析器尋找,如果找不到,再一次增大order進行尋找,這樣,就可以使用試圖解析器鏈

?

但是,如果我們需要兩個第一類的解析器共同使用,用上述方法是不行的,因為那三個解析器都繼承自UtlBasedViewResovler,這種情況下,如果發現資源不存在的情況,這種機制不會去通知下一個解析器
所以,就會出現,spring mvc總按照order最小的去解析,及時資源不存在(404錯誤)為了解決這個問
題,我們可以使用org.springframework.web.servlet.view.ResourceBundleViewResolver來解決

?

JSP頁面(用作輸入用),路徑/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 >

?

輸入結果顯示,使用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的默認名,可以更改,但需要額外配置)

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

表示當邏輯名是success的時候,使用這里定義的試圖解析器

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" > ?? <!-- -輸入頁面采用jsp解析器->
????<value>register</value>
??</property>
??<property?name="successView">??<!---顯示頁面使用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 >

?

運行頁面,可以看到,我們輸入的調用的是jsp頁面,顯示結果調用的是Velocity,如果采用第一種order的方式

spring mvc會找register.jsp和success.jsp或者register.vm或者success.vm,這樣總有一步是錯誤的

?



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


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 4hu四虎永久网址 | 九九免费观看全部免费视频 | 亚洲综合色自拍一区 | 鲁丝丝国产一区二区 | 拍拍拍精品视频在线观看 | 热久久国产欧美一区二区精品 | 国产日韩精品一区在线不卡 | 国产乱码一区二区三区 | 国产香蕉98碰碰久久人人 | 嫩模在线| 亚洲欧美人成人让影院 | 午夜一级毛片免费视频 | 最刺激黄a大片免费观看下截 | 97久久国产一区二区三区四区 | 日本不卡在线一区二区三区视频 | 狠狠色狠狠色综合系列 | 一区二区精品在线观看 | 欧美一级毛片特黄大 | 国产精品99久久久久久www | 亚洲欧美高清视频 | 亚洲精品一区henhen色 | 伊人久久中文 | 国产女主播在线 | 国产乳摇福利视频在线观看 | 精品中文字幕久久久久久 | 国产伦理久久精品久久久久 | 色综合色综合色综合色综合网 | 毛片在线高清免费观看 | 国产精品视频不卡 | 91精品一区二区三区久久久久 | 视频一区二区三区在线观看 | 久久国产精品岛国搬运工 | 717影院理论午夜伦八戒 | 日本人hdxxxxvideo | 粗大猛烈进出呻吟声的视频 | 国产成人精品在线 | 成人小视频在线观看 | 国产国拍亚洲精品永久不卡 | 亚洲无卡视频 | 国产一区二区亚洲精品天堂 | 91中文字幕yellow字幕网 |