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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Struts 1 之html标签库

發(fā)布時(shí)間:2023/12/8 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Struts 1 之html标签库 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

<html:html>標(biāo)簽

?<html:html>標(biāo)簽用于在網(wǎng)頁(yè)開頭生成HTML的<html>元素,它只有一個(gè)用于顯示用戶語(yǔ)言的lang屬性: <html:html lang="true">

有時(shí)候由于tld文件的版本問(wèn)題(新的版本將locale改為lang),導(dǎo)致在訪問(wèn)該頁(yè)面時(shí)會(huì)報(bào)如下錯(cuò)誤:

Unable to findsetter method for attribute: lang

即沒有找到這個(gè)<html:html ?lang="true">標(biāo)簽的lang屬性

解決方案:

<html:html lang="true" >

改為

<html:html locale="true">

或刪除(依據(jù)情況)

<html:html locale="true"><head><title>Welcome</title></head><body>Hello World!</body> </html:html>

生成

<html lang="en"><head><title>Welcome</title></head><body>Hello World!</body> </html>

注意,<html:html locale=“true”>中的locale屬性在生成的HTML頁(yè)面中被轉(zhuǎn)換成了lang=“en”。生成的結(jié)果取決于Struts應(yīng)用程序所位于的服務(wù)器的locale。如果你將應(yīng)用程序部署到一個(gè)不同locale的服務(wù)器,你不需要改變代碼。Locale會(huì)自動(dòng)調(diào)整

<html:base>標(biāo)簽

?<html:base>標(biāo)簽在網(wǎng)頁(yè)的<head>部分生成HTML<base>元素。HTML<base>元素用于生成當(dāng)前網(wǎng)頁(yè)的絕對(duì)URL路徑。

如果在網(wǎng)頁(yè)中使用了<html:base>標(biāo)簽,當(dāng)該網(wǎng)頁(yè)引用同一個(gè)應(yīng)用的其他網(wǎng)頁(yè)時(shí),只需給出相對(duì)于當(dāng)前網(wǎng)頁(yè)的相對(duì)URL路徑即可。

<html:link>和<html:rewrite>標(biāo)簽

<html:link>標(biāo)簽用于生成HTML <a> 元素。<html:link> 在創(chuàng)建超鏈接時(shí),有兩個(gè)優(yōu)點(diǎn):

(1) 允許在URL 中以多種方式包含請(qǐng)求參數(shù)。

(2) 當(dāng)用戶瀏覽器關(guān)閉Cookie時(shí),會(huì)自動(dòng)重寫URL,把SessionID 作為請(qǐng)求參數(shù)包含在URL 中,用于跟蹤用戶的Session 狀態(tài)。

?

<html:link>標(biāo)簽有以下重要屬性:

(1) forward:指定全局轉(zhuǎn)發(fā)鏈接。

(2) href:指定完整的URL 鍵接。

(3) page:指定相對(duì)于當(dāng)前網(wǎng)頁(yè)的URL。

?

<html:rewrite>用于輸出超鏈接中的URI部分,但它并不生成HTML<a> 元素。URI指的是URL 中協(xié)議、主機(jī)和端口以后的內(nèi)容。URI 用于指定具體的請(qǐng)求資源。例如,對(duì)于URL:HTTP://localhost:8080/HtmlBasic.do,它的URI為/HtmlBasic.do

html:rewriter避免了硬編碼,即便是把web.xml中的action映射路徑*.do改為其他的,用了這個(gè)標(biāo)簽可以自動(dòng)生產(chǎn)正確路徑這個(gè)是其他JSTL標(biāo)簽所做不到的,常用在form表單的action屬性里,如

<form action="<html:rewriter action="/register"/>“ method="post">

?

示例:

1、創(chuàng)建全局轉(zhuǎn)發(fā)鏈接

??? 首先,在Struts-config.xml中<global-forwards> 元素中定義一個(gè)<forward>元素:

<global-forwards><forward name = "index"path="/index.jsp"/></global-forwards>

??? 接著,在JSP 文件中創(chuàng)建<html:link>標(biāo)簽:

? ??

<html:link forward="index">Link to Global ActionForward </html:link>

??? <html:link> 標(biāo)簽的forward 屬性和<global-forwards>元素中的<forward> 子元素匹配。以上代碼生成如下HTML 內(nèi)容:

? ??

<a href="/index.jsp">Linkto Global ActionFoward</a>

??? 值得注意的是,<html:link>的forward 屬性只引用Struts-config.xml 配置文件中<global-forwards>內(nèi)的<forward> 子元素,如果引用<action>內(nèi)的<forward> 子元素,在運(yùn)行時(shí)將會(huì)拋出異常:

??? Cannot create rewrite URL:Java.Net.MalfomedURlException: Cannot retrieve ActionForward

2、創(chuàng)建具有完整URL 的鏈接

??? 如果Web 應(yīng)用需要鏈接到其他站點(diǎn),應(yīng)該給出其他站點(diǎn)完整URL,例如:

? ??

<html:link href="http://jakarta.apache.org/struts/index.html">Generate an "href" directly </html:link>

??? 生成HTML 代碼如下:

? ??

<a href="http://jakarta.apache.org/struts/index.html">Generate an"href" directly</a>

??? 值得注意的是,如果指定了<html:link>標(biāo)簽的href 屬性,即使用戶瀏覽器的Cookie 關(guān)閉,<html:link> 標(biāo)簽也不會(huì)把用戶SessionID 作為請(qǐng)求參數(shù)加和到URL 中。

?

3、從當(dāng)前網(wǎng)頁(yè)中創(chuàng)建相對(duì)URL

??? 如果從一個(gè)網(wǎng)頁(yè)鏈接到同一個(gè)應(yīng)用中的另一網(wǎng)頁(yè),可以采用以下方式:

? ??

<html:link page="/HtmlBasic.do">A relative link from this page </html:link>

??? <html:link> 標(biāo)簽的 page 屬性用于指定相對(duì)于當(dāng)前應(yīng)用的URI。以上代碼生成如下HTML 內(nèi)容:

? ?

<a href="/lib/HtmlBasic.do">......</a>?

4、在URL 或 URI 中包含請(qǐng)求參數(shù)

??? 如果要在URL或URI 中包含請(qǐng)求參數(shù),只要把請(qǐng)求參數(shù)加在URL 或 URI的末尾就可以了。例如:

? ??

<html:link page="/HtmlBasic.do?prop1=abc&prop2=123">Hard-code the url parameters</html:link><!-- or --><html:rewrite page="/HtmlBasic.do?prop1=abc&prop2=123"/>

??? 以上代碼生成如下HTML 內(nèi)容:(如果不帶“/”,則不會(huì)附帶上contextPath)

? ??

<a href=/lib/HtmlBasic.do?prop1=abc&prop2=123">......</a>

??? rewrite: /HtmlBasic.do?prop1=abc&amp;prop2=123

?

??? 提示:在HTML 中&amp 代表特殊字符"&"

?

5、在URL 或 URI 中包含單個(gè)請(qǐng)求變量

?????????????????

如果要在URL 中包含一個(gè)請(qǐng)求參數(shù),而這人參數(shù)的值存在于當(dāng)前網(wǎng)頁(yè)可訪問(wèn)的一個(gè)變量中,可以按以下方法來(lái)實(shí)現(xiàn)。

為了演示這一功能,首先創(chuàng)建一個(gè)當(dāng)前網(wǎng)頁(yè)可訪問(wèn)的變量。例如,本例中創(chuàng)建了兩個(gè)變量,一個(gè)是字符類型,一個(gè)是CustomerBean ,它們存存于一個(gè) page 范圍內(nèi):

? ??

<%/** Create a string object to store as abean in* the page content and embed in thislink*/String stringBean = "Value to Passont URL";pageContext.setAttribute("stringBean", stringBean);%><jsp:useBean id ="customerBean" scope="page"class="htmltaglibs.beans.CurstomerBean"/><jsp:setProperty name="customerBean" property="name"value="weiqin"/>

??????? 接著,把這兩個(gè)變量作為請(qǐng)求參數(shù),加入到URL或URI 中:

? ?

<html:link page="/HtmlBasic.do"paramId="urlParamName"paramName="stringBean">URL encode a parameter based on astring bean value</html:link><html:link page="/HtmlBasic.do"paramId="urlParamName"paramName="customerBean"paramProperty="name">URL encode a parameter based on acustomer bean value</html:link>rewrite: <html:rewrite page="/HtmlBasic.do" paramId="urlParamName" paramName="stringBean"/>rewrite: <html:rewrite page="/HtmlBasic.do" paramId="urlParamName" paramName="customerBean" paramProperty="name"/>
?

??? <html:link> 標(biāo)簽的 paramId 屬性指定請(qǐng)求參數(shù)名,paramName屬性指定變量的名字。如果變量為JavaBean ,用paramProperty 屬性指定JavaBean 的屬性。

??? 對(duì)于本例的stringBean,請(qǐng)求參數(shù)值為stringBean的字符串值。對(duì)于customerBean,指定了paramProperty 屬性,請(qǐng)求參數(shù)值為customerBean 的 name 屬性值。

??? 以上代碼生成如下HTML 內(nèi)容:

? ??

<a href="/HtmlBasic.do?urlParamName=Value to Pass on Url">Url encode a paramter based on a stringbean value</a><a href="/HtmlBasic.do?urlParamName=weiqin">url encode a parameter based on acustomer bean value</a>rewrite: /HtmlBasic.do?urlParamName=Value toPass on Urlrewrite: /HtmlBasic.do?urlParamName=weiqin

6、在URL 或 URI 中包含多個(gè)請(qǐng)求變量

??? 如果在URL 或 URI 中包含多個(gè)請(qǐng)求參數(shù),而這些參數(shù)的值來(lái)自多個(gè)變量,需要先定義一個(gè)Map類型的java 類,如java.util.HashMap,用它來(lái)存放請(qǐng)求變量。例如:

? ??

<%/** Strore values int a Map(HashMap inthis case)* and construct the URL based on theMap* /java.util.HashMap myMap = newjava.util.HashMap();myMap.put("myString", newString("myStringValue"));myMap.put("myArray" , newString[]{"str1","str2","str3"} );pageContext.setAttribute("map", myMap);%>

??? 在以上代碼的HaspMap 中存放了兩個(gè)對(duì)象,其中第二個(gè)對(duì)象是個(gè)字符串?dāng)?shù)組。HashMap 被存放在PageContext 中。接下來(lái)就可以把這個(gè)HashMap 作為請(qǐng)求參數(shù),加入到URL 或 URI 中:

? ??

<%-- For this version of the<html:link> tag: --%><%-- map = a map with name/value pairs topass on the url --%><html:link page="/HtmlBasic.do" name="map">URL encode a parameter based on valuein a Map</html:link><%-- Create the same rewrite string forthe above link. --%>rewrite:<html:rewrite page="/HtmlBasic.do" name="map"/>

?

??? <html:link> 標(biāo)簽的name 屬性指定包含請(qǐng)求變量的HashMap對(duì)象。HashMap 對(duì)象中的每一對(duì)"key/value" 代表一對(duì)或多對(duì)"請(qǐng)求參數(shù)名/請(qǐng)求參數(shù)值"。以上代碼生成如下的Html 內(nèi)容:

? ??

<a href="/HtmlBasic.do?myString=myStringValue&myArray=str1&myArray=str2&myArray=str3">URL encode a parameter based on valuein a Map</a>rewrite:/HtmlBasic.do?myString=myStringValue&myArray=str1&myArray=str2&myArray=str3

<html:img>標(biāo)簽

生成基本的HTML<img>元素

<html:img page="/struts-power.gif"/>

生成 html代碼如下:

<img src="/htmltaglibs/struts-power.gif">

?<html:form>標(biāo)簽

<html:form action="FormBasic.do">

??????? 生成html代碼:

<form name="FormBasicAction" mothod="post"action="/htmltaglibs/FormBasic.do/">

Struts將參照Struts配置文件來(lái)查找相應(yīng)的Action組件,在struts-config.xml文件中,與"FormBasic.do"對(duì)應(yīng)的代碼為:

<action path="/FormBasic"type="htmltaglibs.actions.FormBasicAction"name="FormBacsicForm"scope="session"input="/FormBasic.jsp"validate="false"><foreard name="success"path="/FormBasic.jsp"> </action>

<html:text>、<html:textarea>、<html:password>標(biāo)簽

在表單上創(chuàng)建HTML文本框字段。如下:

<html:text property="userName">

因?yàn)橹付艘粋€(gè)userName的屬性名,它應(yīng)該匹配ActionForm中的一個(gè)屬性,所一在FormBasicForm 中也必須有uerName這個(gè)屬性和相應(yīng)的getter(),setter()方法。當(dāng)表單提交時(shí),struts框架會(huì)把userName字段的內(nèi)容賦給form的userName屬性。

<html:textarea>、<html:password>標(biāo)簽與之類似

<html:cancel>標(biāo)簽

<html:cancel>標(biāo)簽在表單中生成取消按鈕,當(dāng)用戶按下取消按鈕使,將產(chǎn)生一個(gè)取消事件,這個(gè)事件由Action類來(lái)捕獲,至于如何處理這個(gè)事件,可以在Action類的execute()方法中編程來(lái)完成。

<html:submit>、<html:button>、<html:reset>標(biāo)簽

<html:submit>Submit</html:submit>

其余類似

<html: hidden>標(biāo)簽

?在表單上生成隱藏字段,存放用戶不希望看到和不允許修改的信息:如下兩種方式:

<html:hidden property="userName">

生成Html:

<input type="hidden" name="userName"value="propValue">

<html:checkbox>標(biāo)簽

<html:checkbox>標(biāo)簽在表單上生成標(biāo)準(zhǔn)的HTML檢查框,例如ActionFormBean 中的某個(gè)屬性只有兩種可選值(如true和false),就可以在表單中用<html:checkbox>標(biāo)簽來(lái)表示。<html:checkbox>的使用方法為:

<html:checkbox property="ch1"/>

生成HTML代碼:

<input type="checkbox"name="cb1" value="true">

<html:checkbox>有一個(gè)value屬性,用來(lái)設(shè)置用戶選中檢查框時(shí)的值,value的默認(rèn)值為true,可以用以下方式改變value屬性:

<html:checkbox property="ch1" value="true"/>
以上代碼說(shuō)明當(dāng)用戶選擇了這個(gè)檢查框,就把相應(yīng)Bean中的ch1屬性設(shè)置為true.

其實(shí)這樣也會(huì)容易讓人搞混,例如當(dāng)value="false"時(shí),如果用戶沒有選擇這個(gè)檢查框,就把Bean中對(duì)應(yīng)的屬性設(shè)置為true.

為了檢查框能正常工作,必須在Bean的reset()方法中對(duì)其進(jìn)行復(fù)位,當(dāng)<html:checkbox>的 value屬性為true時(shí),必須在reset()方法中把對(duì)應(yīng)的屬性設(shè)置為false.當(dāng)<html:checkbox>的 value屬性為false時(shí),必須在reset()方法中把對(duì)應(yīng)的屬性設(shè)置為true.

<html:multibox>標(biāo)簽

<html:multibox>標(biāo)簽和<html:checkbox>一樣,可以提供html<inputtype="ch1">元素,區(qū)別在于<html:multibox>可以生成復(fù)選框,它和Form 的關(guān)聯(lián)方式不一樣。

如果應(yīng)用中有多個(gè)CheckBox,并且希望在Form中用單個(gè)數(shù)組來(lái)表示它們,就可以采用<html:multibox>.<html:multibox>的使用方法如下:

1、在Form中定義一個(gè)數(shù)組,來(lái)存放所有的 CheckBox的值:

private String strArray[]=new String[0]; public String[] getStrArray(){return (this.strArray);} public void setStrArray(String strArray[]){this.strArray=strArray;}

2、其次在表單中加入<html:multibox>元素,通過(guò)設(shè)置property="strArray"來(lái)把它和Form中的數(shù)組關(guān)聯(lián)。

3、對(duì)于每個(gè)<html:multibox>元素,設(shè)置它的初始值,有以下兩種方式:

?

<html:multibox property="strArray" value="Value1"/>

?

<html:multibox property="strArray">Value2</html:multibox>

當(dāng)用戶提交表單時(shí),所有被選中的復(fù)選框的值都會(huì)被存放在Form中的相應(yīng)數(shù)組中。如果某個(gè)復(fù)選框沒有被選中,那么數(shù)組就不會(huì)包含它的值,例如,如果用戶選擇了上例的兩個(gè)復(fù)選框,那么數(shù)組的內(nèi)容為{"Value1","Value2"}.

<html:radio>標(biāo)簽

<html:radio>標(biāo)簽提供HTML<inputtype="radio">元素,表示單選按鈕,多個(gè)<html:radio>標(biāo)簽可以成組使用,如下:

? ? ?

<html:radio property="r1"value="v1"/> <html:radio property="r1"value="v2"/>

以上標(biāo)簽的property屬性相同,而僅僅是value不同,它們都和Form中的V1屬性對(duì)應(yīng),生成的HTML如下:

? ? ?

<input type="radio"name="r1" value="v1"> <input type="radio"name="r1" value="v2">

?<html:select>標(biāo)簽

?<html:select>標(biāo)簽生成HTML<select>元素。它可以在表單上創(chuàng)建下拉列表或多選列表。在<html:select>標(biāo)簽中可以包含多個(gè)<html:option>,<html:options>和<html:optionCollection>標(biāo)簽。<html:select>標(biāo)簽的基本形式為:

??

<html:select property="name" multiple="true" size="6">[one or more<html:option/>,<html:options/>,<html:optionsCollection/>tags]</html:select>


<html:select>標(biāo)簽有以下重要屬性:

size屬性:指每次在網(wǎng)頁(yè)上顯示的可選項(xiàng)的數(shù)目。

multiple屬性:指定是否支持多項(xiàng)選擇,如果設(shè)置為true,就表示多選列表,支持多項(xiàng)選擇;否則表示下拉列表,只支持單項(xiàng)選擇,默認(rèn)為false.

property屬性:與ActionFormBean中的對(duì)應(yīng)屬性對(duì)應(yīng),這個(gè)屬性用來(lái)存放用戶在列表上選中選項(xiàng)的值,在單選的情況下,Bean中的對(duì)應(yīng)屬性應(yīng)該定義為簡(jiǎn)單類型(不能為數(shù)組)。在多項(xiàng)選擇的情況下,Bean中的對(duì)應(yīng)屬性應(yīng)該定義為數(shù)組類型,以便存放用戶選擇的多個(gè)選項(xiàng)。

value屬性:select的默認(rèn)選中屬性。動(dòng)態(tài)的多用EI表達(dá)式生成

?

例如:在 cust.jsp中的客戶列表為下拉列表,顏色列表為多選列表:

? ? ?

<html:select property="custId" /> <html:select property="colors" multiple="true" size="6"/>

對(duì)應(yīng)的Bean為:

? ? ?

private int custId;private String colors[];public String[] getColors() {return colors;}public void setColors(String[] colors) {this.colors = colors;}public int getCustId() {return custId;}public void setCustId(int custId) {this.custId = custId;}

<html:option>標(biāo)簽

<html:option>標(biāo)簽生成HTML<option>元素,這個(gè)標(biāo)簽被嵌套在<html:select>標(biāo)簽中,代表列表的一個(gè)可選項(xiàng),它的label有兩個(gè)來(lái)源:

??? 在<html:option>和</html:option>之間的文本內(nèi)容。

??? 由<html:option>標(biāo)簽的key,locale和bundle屬性指定的ResourceBundle中的內(nèi)容。

1、在<html:option>和</html:option>之間的文本內(nèi)容

? ? ? ??

<html:option value="a.orange">Orange</html:option> <html:option value="a.purple">Purple</html:option>

2、由<html:option>標(biāo)簽的key,locale和bundle屬性指定的ResourceBundle中的內(nèi)容

ApplicationResources.properties資源文件中存在如下鍵值對(duì):a1=happySelect

?

標(biāo)簽中通過(guò)key關(guān)聯(lián)到資源文件,指定要顯示內(nèi)容。

<html:option value="1" key="a1" /> 這樣在頁(yè)面上顯示出happySelect

?

通過(guò)key,bundle同時(shí)指定要顯示的內(nèi)容

?

bundle與Struts配置文件中<message-resources>元素配置的ResourceBundle的資源文件key匹配

?

<message-resources parameter="com.struts.happy" key="happyhtml"/>

<html:option value="1" bundle="happyhtml" key="a1" />

這樣在頁(yè)面上顯示出happySelect

把列表的可選項(xiàng)的顯示文本存放在ResourceBundle中,而不是直接在JSP文件中指定,有利于實(shí)現(xiàn)國(guó)際化。

<html:options>、<html:optionCollection>標(biāo)簽

<html:options>標(biāo)簽提供一組HTML<option>元素。在<html:select>中可以包含多個(gè)<html:options>元素,如下:

使用coolection屬性指定存在某個(gè)范圍中的集合來(lái)生成列表項(xiàng),注意coolection屬性指定的集合,該對(duì)象的每一個(gè)元素為一個(gè)Bean

例如有如下實(shí)體類


public class Users {private StringuserName; private StringuserValue; public Users(){}publicUsers(String userName,String userValue) {this.userName=userName;this.userValue=userValue; } public StringgetUserName() {return userName; } public void setUserName(StringuserName) {this.userName = userName; } public StringgetUserValue() {return userValue; } public voidsetUserValue(String userValue) {this.userValue = userValue; }}?

將實(shí)體類實(shí)例放入ArrayList列表然后放入reqeust范圍內(nèi)

?

Users u1=new Users("1","高中");Users u2=new Users("2","本科");Users u3=new Users("3","碩士");Users u4=new Users("4","博士");ArrayList array=new ArrayList();array.add(u1);array.add(u2);array.add(u3);array.add(u4);request.setAttribute("xueli",array);
?

使用

<html:options>標(biāo)簽生成可選項(xiàng)

<html:select property="xueli" multiple="true" size="3"> <html:optionscollection="xueli"property="userName"labelProperty="userValue"/> </html:select>
等價(jià)于

<html:optionsCollectionname="xueli"value="userName"label="userValue"/> </html:select>

collection指定存放在request范圍內(nèi)的集合?

property指定<html:option>實(shí)際值

labelProperty指定<html:option>顯示到頁(yè)面上的文本。

當(dāng)使用property屬性和labelProperty屬性時(shí),會(huì)根據(jù)屬性指定的名稱調(diào)用相應(yīng)Bean中的getXXX方法來(lái)獲得屬性值。

生成HTML效果如下

?

<option value="1">高中</option> <option value="2">本科</option> <option value="3">碩士</option> <option value="4">博士</option>


利用name屬性指定存放在某個(gè)范圍中的對(duì)象,并有property屬性指定該對(duì)象的某個(gè)屬性來(lái)生成列表項(xiàng)。

例如

?

Object[] obj=new Object[]{"高中","本科","碩士","博士"};request.setAttribute("xueli",array);?

<html:options name="xueli"/>生成HTML效果如下:

?

<option value="高中">高中</option> <option value="本科">本科</option> <option value="碩士">碩士</option> <option value="博士">博士</option>?

如果

<html:options name="xueli" property="userName" labelProperty="userValue"/>?

將報(bào)如下異常

javax.servlet.jsp.JspException:No getter method available for property userName for bean under name xueli

<html:file>標(biāo)簽

<html:file property="file"/>

當(dāng)然了在做的同時(shí)還要注意以下幾點(diǎn),否則就會(huì)出問(wèn)題:

?1.<html:file>標(biāo)簽必須嵌套在<html:form>標(biāo)簽中。

?2.<html:from>標(biāo)簽的method屬性必須設(shè)置為"POST".

?3.<html:from>標(biāo)簽的編碼類型enctype屬性必須為"multipart/form-data".

?4.<html:file>標(biāo)簽必須設(shè)置為property屬性,這個(gè)屬性和Bean中FormFile類型的屬性對(duì)應(yīng)。

?

總結(jié)

以上是生活随笔為你收集整理的Struts 1 之html标签库的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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