1. 程式人生 > >SpringMVC(八)檢視,國際化,自定義檢視及解析圖

SpringMVC(八)檢視,國際化,自定義檢視及解析圖

SpringMVC(八)檢視 檢視的作用是渲染模型資料,將模型裡的資料以某種形式呈現給使用者 檢視物件由檢視解析器負責例項化,由於檢視是無狀態的,所以他們不會有執行緒安全的問題。 view是一個高度抽象的介面 包括2個方法:getContentType() render(Map,httpsevletRequest,httpsevletResponse) 常用的檢視實現類 internalResourceView內部資源封裝成一個view物件 JstlView是internalResourceView的子類 頁面中

id:<input type="text"name="id"/>
name :<input type="text"name="name"/>

為了實現國際化,針對不同的語言寫對應的資原始檔,.properties 資原始檔名稱_語言編碼_國家編碼.properties如下: abc_zh_CN.properties abc_en_US.properties key=value 在src下建立2個檔案 在abc_en_US.properties中寫入

id=ID
name=NAME

在abc_zh_CN.properties中寫入

id=編碼
name=姓名

完成國際化的步驟 1.有國際化語言的資原始檔 2.告知springmvc所使用的資原始檔 在springmvc.xml中配置

<bean  **id="messageSource "**
class="ResourcebundleMessageSource">
<property name="basename" value="abc"</property>
</bean>

注:id="messageSource " 3.JSTL: Core: fmt:格式化輸出message 在頁面中使用fmt

<fmt:message key="id"></fmt:message>
<fmt:message key="name"></fmt:message>

在Java類中如下

@RequstMapping("/testGobal")
public String testGoba(){
return "a";  }

如何給一個檢視直接一個對映 mvc:view-controller 將Java中的程式碼刪除,在springmvc.xml中加入

<mvc:view-controller path="/abc" view-name="a"/>

在URL中直接使用對映地址 注:如果配置了這個對映,其他對映都無效 為了解決這個問題,只需要在配置檔案中加入

   <mvc:annotation-driver ></mvc:annotation-driver>

自定義檢視及解析器 1.檢視型別:實現一個藉口view 2.檢視載入spring容器中 3.寫出對應的檢視解析器:beannameresolver

具體步驟如下: 建立一個Myview

@Component
//預設bean的ID為小寫字母的類名
public class Myview implements view {
//告知spring容器,contenttype
public  String getContentType()
{
return "text/html";
}
public void render(Map<String> model ,HttpsevletRequest request,HttpsevletResponse response)
{response.getWriter().println("<h2>this is myview<h2>");}
}

在springmvx.xml中寫入檢視解析器

 <bean class=org.springframework.web.servlet.view.BeanNameViewResolver">
<property name="order"value="100"></property>
</bean>

order的值決定優先順序,order值越大,優先順序越低。預設nternalResouceViewResolver的order值無限大,所以為其他解析圖定值只要夠小,優先順序就越高

開始用自定義檢視,在springmvc.xml中加入程式碼

  <mvc:view-controller path="/myView" view-name="myView"/>

注:view-name預設為類名首字母小寫