SpringMVC表单标签简介_第1页
SpringMVC表单标签简介_第2页
SpringMVC表单标签简介_第3页
SpringMVC表单标签简介_第4页
SpringMVC表单标签简介_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、SpringMVC表单标签简介   在使用SpringMVC的时候我们可以使用spring封装的一系列表单标签,这些标签都可以访问到ModelMap中的内容。下面将对这些标签一一介绍。   在正式介绍SpringMVC的表单标签之前,我们需要先在JSP中声明使用的标签,具体做法是在JSP文件的顶部加入以下指令: Jsp代码  1. <%taglib uri="/tags/form" prefix="form&qu

2、ot; %>    1.1     form标签使用Spring的form标签主要有两个作用,第一是它会自动的绑定来自Model中的一个属性值到当前form对应的实体对象,默认是command属性,这样我们就可以在form表单体里面方便的使用该对象的属性了;第二是它支持我们在提交表单的时候使用除GET和POST之外的其他方法进行提交,包括DELETE和PUT等。1.1.1  支持绑定表单对象我们先来看如下使用form标签的一个示例: Jsp代码  1. <

3、;form:form action="formTag/form.do" method="post">  2.     <table>  3.         <tr>  4.             <t

4、d>Name:</td><td><form:input path="name"/></td>  5.         </tr>  6.         <tr>  7.         &#

5、160;   <td>Age:</td><td><form:input path="age"/></td>  8.         </tr>  9.         <tr>  10.     

6、        <td colspan="2"><input type="submit" value="提交"/></td>  11.         </tr>  12.     </table> 

7、 13. </form:form>           这个时候如果Model中存在一个属性名称为command的javaBean,而且该javaBean拥有属性name和age的时候,在渲染上面的代码时就会取command的对应属性值赋给对应标签的值。如在上面的代码中,假设Model中存在一个属性名称为command的javaBean,且它的name和age属性分别为“Zhangsan”和“36”时,那么它在渲染时就会生成如下一段代码:Html代码  

8、1. <form id="command" action="formTag/form.do" method="post">  2.     <table>  3.         <tr>  4.         

9、    <td>Name:</td><td><input id="name" name="name" type="text" value="ZhangSan"/></td>  5.         </tr>  6.   

10、60;     <tr>  7.             <td>Age:</td><td><input id="age" name="age" type="text" value="36"/></td> &

11、#160;8.         </tr>  9.         <tr>  10.             <td colspan="2"><input type="submit&qu

12、ot; value="提交"/></td>  11.         </tr>  12.     </table>  13. </form>          从上面生成的代码中,我们可以看出,当没有指定form标签的id时它会自动获取该for

13、m标签绑定的Model中对应属性名称作为id,而对于input标签在没有指定id的情况下它会自动获取path指定的属性作为id和name。       我们指定form默认自动绑定的是Model的command属性值,那么当我的form对象对应的属性名称不是command的时候,应该怎么办呢?对于这种情况,Spring给我们提供了一个commandName属性,我们可以通过该属性来指定我们将使用Model中的哪个属性作为form需要绑定的command对象。除了commandName属性外,指定modelAttribute属性也可以达

14、到相同的效果。这里假设上面代码中我们存放在Model中的是user对象而不是默认的command对象,那么我们的代码就可以如下定义了:Jsp代码  1. <form:form action="formTag/form.do" method="post" commandName="user">  2.     <table>  3.     &#

15、160;   <tr>  4.             <td>Name:</td><td><form:input path="name"/></td>  5.         </tr>  6.

16、         <tr>  7.             <td>Age:</td><td><form:input path="age"/></td>  8.         

17、</tr>  9.         <tr>  10.             <td colspan="2"><input type="submit" value="提交"/></td>  

18、;11.         </tr>  12.     </table>  13. </form:form>   1.1.2  支持全部的Http请求方法Jsp代码  1. <form:form action="formTag/form.do" method="delete"&

19、#160;modelAttribute="user">  2.     <table>  3.         <tr>  4.             <td>Name:</td><td><form:inp

20、ut path="name"/></td>  5.         </tr>  6.         <tr>  7.             <td>Age:</td

21、><td><form:input path="age"/></td>  8.         </tr>  9.         <tr>  10.            &

22、#160;<td colspan="2"><input type="submit" value="提交"/></td>  11.         </tr>  12.     </table>  13. </form:form>  

23、60;在上面代码中我们设定了该form的提交方法是delete,这样在后台我们就可以给对应的请求方法的RequestMapping加上method为RequestMethod.DELETE的限制。我们来看一下上面的代码在进行渲染的时候会生成怎样的Html代码,其生成的代码如下所示:Html代码  1. <form id="user" action="formTag/form.do" method="post">  2.    

24、; <input type="hidden" name="_method" value="delete"/>  3.     <table>  4.         <tr>  5.         &#

25、160;   <td>Name:</td><td><input id="name" name="name" type="text" value="ZhangSan"/></td>  6.         </tr>  7.    

26、;     <tr>  8.             <td>Age:</td><td><input id="age" name="age" type="text" value="36"/></td> 

27、60;9.         </tr>  10.         <tr>  11.             <td colspan="2"><input type="submit&quo

28、t; value="提交"/></td>  12.         </tr>  13.     </table>  14. </form>   从它生成的代码我们可以看出,Spring在实现除GET和POST之外的请求方法时,还是使用的POST方法进行请求,然后给表单加上了一个隐藏域,用以表示真正的请求

29、方法,这个隐藏域的名称默认是“_method”。上面这样定义之后是不是就意味着我们可以以delete方式访问到“formTag/form.do”了呢?答案是不行的。这样定义我们只是多加了一个用以表示请求方法的隐藏域而已,实际的请求方式还是POST。Spring为我们提供了一个FilterHiddenHttpMethodFilter,通过这个Filter我们可以把以POST方式传递过来的表示实际请求方式的参数转换为对应的真正的Http请求方法。所以这个时候我们还需要在web.xml中加上如下代码:Xml代码  1. <filter>  2. &

30、#160;  <filter-name>hiddenHttpMethodFilter</filter-name>  3.    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>  4. </filter>  5. <filter-mapping>  6.   &

31、#160;<filter-name>hiddenHttpMethodFilter</filter-name>  7.    <url-pattern>/*</url-pattern>  8. </filter-mapping>          注意:HiddenHttpMethodFilter只能对以POST方式进行传递的表示请求方式的隐藏域转换为真正的Http请求方式。当我

32、们直接在form:form标签的method中使用除GET和POST方法以外的其他方法时,Spring会自动生成以POST方式进行传递的表单以及对应的隐藏域。所以当我们需要手动的设置表示请求方法的隐藏域时,我们就需要指定表单的请求方式为POST,为GET将不会生效。Jsp代码  1. <form:form action="formTag/form.do" method="post" modelAttribute="user">  2.  

33、60;  <input type="hidden" name="_method" value="head"/>  3.     <table>  4.         <tr>  5.        &#

34、160;    <td>Name:</td><td><form:input path="name"/></td>  6.         </tr>  7.         <tr>  8.    

35、;         <td>Age:</td><td><form:input path="age"/></td>  9.         </tr>  10.         <tr> 

36、 11.             <td colspan="2"><input type="submit" value="提交"/></td>  12.         </tr>  13.  

37、0;  </table>  14. </form:form>   上面代码就是一个手动定义请求方式的隐藏域的示例。这里表示请求方式的隐藏域的名称默认是“_method”,如果不想使用这个默认值的话,我们也可以通过form:form标签的methodParam属性来指定。如下面这个示例:Jsp代码  1. <form:form action="formTag/form.do" method="post" me

38、thodParam="requestMethod" modelAttribute="user">  2.     <input type="hidden" name="requestMethod" value="head"/>  3.     <table>  4.   

39、;      <tr>  5.             <td>Name:</td><td><form:input path="name"/></td>  6.         </tr>

40、;  7.         <tr>  8.             <td>Age:</td><td><form:input path="age"/></td>  9.      

41、60;  </tr>  10.         <tr>  11.             <td colspan="2"><input type="submit" value="提交"/></t

42、d>  12.         </tr>  13.     </table>  14. </form:form>   同时我们也要告诉HiddenHttpMethodFilter我们是使用哪个表单参数作为methodParam,所以我们需要在配置HiddenHttpMethodFilter的时候指明methodParam对应的值。Xml代码&#

43、160; 1. <filter>  2.    <filter-name>hiddenHttpMethodFilter</filter-name>  3.    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>  4.    <init-param>&

44、#160; 5.        <param-name>methodParam</param-name>  6.        <param-value>requestMethod</param-value>  7.    </init-param>  8. </filter> 

45、; 9. <filter-mapping>  10.    <filter-name>hiddenHttpMethodFilter</filter-name>  11.    <url-pattern>/*</url-pattern>  12. </filter-mapping>          另外需要

46、注意的是在有Multipart请求处理的时候HiddenHttpMethodFilter需要在Multipart处理之后执行,因为在处理Multipart时需要从POST请求体中获取参数。所以我们通常会在HiddenHttpMethodFilter之前设立一个MultipartFilter。MultipartFilter默认会去寻找一个名称为filterMultipartResolver的MultipartResolver bean对象来对当前的请求进行封装。所以当你定义的MultipartResolver的名称不为filterMultipartResolver的时候就需要在定义Multipa

47、rtFilter的时候通过参数multipartResolverBeanName来指定。Xml代码  1. <filter>  2.    <filter-name>multipartFilter</filter-name>  3.    <filter-class>org.springframework.web.multipart.support.MultipartFilter</filter-class>

48、0; 4.    <init-param>  5.        <param-name>multipartResolverBeanName</param-name>  6.        <param-value>multipartResolver</param-value>  7.  

49、  </init-param>  8. </filter>  9. <filter-mapping>  10.    <filter-name>multipartFilter</filter-name>  11.    <url-pattern>/*</url-pattern>  12. </filter-mapping>

50、  13.   14. <filter>  15.    <filter-name>hiddenHttpMethodFilter</filter-name>  16.    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>  17.   

51、60;<init-param>  18.        <param-name>methodParam</param-name>  19.        <param-value>requestMethod</param-value>  20.    </init-param> 

52、0;21. </filter>  22. <filter-mapping>  23.    <filter-name>hiddenHttpMethodFilter</filter-name>  24.    <url-pattern>/*</url-pattern>  25. </filter-mapping>   1.2  

53、;   input标签SpringMVC的input标签会被渲染为一个type为text的普通Html input标签。使用SpringMVC的input标签的唯一作用就是它能绑定表单数据。SpringMVC表单标签最大的好处就是它支持数据绑定,当我们的表单标签不需要绑定的数据的时候,我们应该使用普通的Html标签。关于input标签绑定表单数据的方法已经在介绍form标签的时候顺带介绍过了,这里就不再过多的赘述了。Jsp代码  1. <form:form action="formTag/form.do" m

54、ethod="head" modelAttribute="user" methodParam="requestMethod">  2.     <table>  3.         <tr>  4.          

55、   <td>Name:</td><td><form:input path="name"/></td>  5.         </tr>  6.         <tr>  7.     

56、60;       <td>Age:</td><td><form:input path="age"/></td>  8.         </tr>  9.         <tr>  10. &

57、#160;           <td colspan="2"><input type="submit" value="提交"/></td>  11.         </tr>  12.    

58、60;</table>  13. </form:form>   1.3     hidden标签hidden标签会被渲染为一个type为hidden的普通Html input标签。用法跟input标签一样,也能绑定表单数据,只是它生成的是一个隐藏域。1.4     checkbox标签checkbox标签会被渲染为一个type为checkbox的普通HTML input标签。checkbox标签也是支持绑定数据的。我们知道checkbox就是

59、一个复选框,有选中和不选中两种状态,那么我们在使用checkbox标签的时候是如何来设定它的状态的呢?checkbox标签的选中与否状态是根据它绑定的值来判断的。1.4.1  绑定boolean数据当checkbox绑定的是一个boolean数据的时候,那么checkbox的状态跟该boolean数据的状态是一样的,即true对应选中,false对应不选中。Jsp代码  1. <form:form action="formTag/form.do" method="post" command

60、Name="user">  2.     <table>  3.         <tr>  4.             <td>Male:</td><td><form:checkbox path

61、="male"/></td>  5.         </tr>  6.         <tr>  7.             <td colspan="2"

62、><input type="submit" value="提交"/></td>  8.         </tr>  9.     </table>  10. </form:form>         

63、看上面这段代码,这个时候假设我们在渲染该视图之前往ModelMap中添加了一个user属性,并且该user对象有一个类型为boolean的属性male,那么这个时候如果male属性为true则Male那一栏的复选框将会被选中。1.4.2  绑定列表数据这里的列表数据包括数组、List和Set。下面将以List为例讲一下checkbox是如何根据绑定的列表数据来设定选中状态的。现在假设有一个类User,其有一个类型为List的属性roles,如下所示:Java代码  1. public class User   2.

64、    3.     private List<String> roles;  4.    5.     public List<String> getRoles()   6.        return roles;  7.  

65、60;    8.    9.     public void setRoles(List<String> roles)   10.        this.roles = roles;  11.       12.   

66、60;       那么当我们需要展现该User是否拥有某一个Role的时候,我们可以使用checkbox标签来绑定roles数据进行展现。当checkbox标签的value在我们绑定的列表数据中存在的时候该checkbox将为选中状态。来看下面一段代码:Jsp代码  1. <form:form action="formTag/form.do" method="post" commandName="user">&#

67、160; 2.     <table>  3.         <tr>  4.             <td>Roles:</td>  5.         

68、    <td>  6.                <form:checkbox path="roles" value="role1"/>Role1<br/>  7.         

69、60;      <form:checkbox path="roles" value="role2"/>Role2<br/>  8.                <form:checkbox path="roles" value=&quo

70、t;role3"/>Role3  9.             </td>  10.         </tr>  11.     </table>  12. </form:form>  

71、0;       就上面代码而言就是当User拥有role1的时候对应的<form:checkbox path="roles" value="role1"/>就会为选中状态,也就是说roles列表中包含role1的时候该checkbox就会为选中状态。1.4.3 绑定一个Object数据checkbox还支持绑定数据类型为Object的数据,这种情况下Spring会拿所绑定对象数据的toString结果跟当前checkbox的value进行比较,如果能够进行匹配则

72、该checkbox将为选中状态。看这样一个例子,有一个User类代码如下:Java代码  1. public class User   2.    3.     private Blog blog;  4.      5.     public Blog getBlog()   

73、6.        return blog;  7.       8.    9.     public void setBlog(Blog blog)   10.        this.blog = blog;

74、60; 11.       12.    Blog类的代码如下:Java代码  1. public class Blog   2.    3.     public String toString()   4.        return&

75、#160;"HelloWorld"  5.       6.    7.           我们可以看到Blog类的toString方法已经被写死为“HelloWorld”了。这个时候假设我们往ModelMap中放了一个user对象,而且给该user对象设定了一个blog属性,那么当我们使用该ModelMap对象渲染如下视图代码时,checkbox标签的选中状态是怎样的呢?根

76、据前面描述的当checkbox标签绑定的是一个Object对象的时候我们会拿该Object对象的toString和checkbox的value值进行比较,如果匹配则当前checkbox为选中状态,我们知道这里的checkbox将为选中状态。Jsp代码  1. <form:form action="formTag/form.do" method="post" commandName="user">  2.     &

77、lt;table>  3.         <tr>  4.             <td>HelloWorld:</td>  5.             <td>

78、;  6.                <form:checkbox path="blog" value="HelloWorld"/>   7.             </td> &

79、#160;8.         </tr>  9.         <tr>  10.             <td colspan="2"><input type="submit&qu

80、ot; value="提交"/></td>  11.         </tr>  12.     </table>  13. </form:form>   1.5     Checkboxes标签相对于一个checkbox标签只能生成一个对应的复选框而言,一个ch

81、eckboxes标签将根据其绑定的数据生成N个复选框。checkboxes绑定的数据可以是数组、集合和Map。在使用checkboxes时我们有两个属性是必须指定的,一个是path,另一个是items。Items表示当前要用来展现的项有哪些,而path所绑定的表单对象的属性表示当前表单对象拥有的项,即在items所展现的所有项中表单对象拥有的项会被设定为选中状态。先来看以下一段代码:Jsp代码  1. <form:form action="formTag/form.do" method="post" 

82、;commandName="user">  2.     <table>  3.         <tr>  4.            <td>Roles:</td>  5.    &

83、#160;        <td>  6.                <form:checkboxes path="roles" items="$roleList"/>   7.     &#

84、160;       </td>  8.         </tr>  9.         <tr>  10.             <td&#

85、160;colspan="2"><input type="submit" value="提交"/></td>  11.         </tr>  12.     </table>  13. </form:form>    

86、0;     上面的JSP视图对应着如下的处理器方法:Java代码  1. RequestMapping(value="form", method=RequestMethod.GET)  2. public String formTag(Map<String, Object> map)   3.    User user = new U

87、ser();  4.    List<String> roles = new ArrayList<String>();  5.    roles.add("role1");  6.    roles.add("role3");  7.    user.setRoles(roles); 

88、 8.    List<String> roleList = new ArrayList<String>();  9.    roleList.add("role1");  10.    roleList.add("role2");  11.    roleList.add("role3&quo

89、t;);  12.    map.put("user", user);  13.    map.put("roleList", roleList);  14.    return "formTag/form"  15.           从以上代码

90、中我们可以看到我们放在ModelMap中的roleList对象有三个元素,分别是role1、role2和role3,而我们的表单对象User的roles属性只拥有两个元素,分别是role1和role3,,所以当我们访问该处理器方法返回如上所示的视图页面时,我们要展现的复选框项是roleList,也就是role1、role2和role3,而我们表单对象只拥有role1和role3,所以在页面进行渲染的时候会展示3个复选框项,但只有role1和role3会被设定为选中状态。         上面介绍的这种情况是使用Li

91、st作为展现复选框项的数据源,这种情况我们已经看到了它所呈现出来的标签Label和它的值是一样的。使用Array和Set作为数据源也是这种情况。那么如果要让checkboxes呈现出来的Label和实际上送的value不同的话应该怎么做呢?这个时候我们就可以使用Map作为数据源了。使用Map作为checkboxes的items属性的数据源时Key将作为真正的复选框的value,而Map的value将作为Label进行展示。当使用Map作为checkboxes的items属性的数据源时我们绑定的表单对象属性的类型可以是Array、集合和Map,这种情况就是判断items Map中是否含有对应的k

92、ey来决定当前的复选框是否处于选中状态。我们来看以下一个处理器方法以及其对应的视图代码。处理器方法:Java代码  1. RequestMapping(value="form", method=RequestMethod.GET)  2. public String formTag(Map<String, Object> map)   3.    User user = new

93、0;User();  4.    List<String> roles = new ArrayList<String>();  5.    roles.add("role1");  6.    roles.add("role3");  7.    user.setRoles(roles);

94、60; 8.    Map<String, String> roleMap = new HashMap<String, String>();  9.    roleMap.put("role1", "角色1");  10.    roleMap.put("role2", "角色2&qu

95、ot;);  11.    roleMap.put("role3", "角色3");  12.    map.put("user", user);  13.    map.put("roleMap", roleMap);  14.    return "formTag/

96、form"  15.    对应的视图代码:Jsp代码  1. <form:form action="formTag/form.do" method="post" commandName="user">  2.     <table>  3.        

97、; <tr>  4.             <td>Roles:</td>  5.             <td>  6.          

98、60;     <form:checkboxes path="roles" items="$roleMap"/>    7.             </td>  8.         </tr>

99、;  9.         <tr>  10.             <td colspan="2"><input type="submit" value="提交"/></td>  11.  

100、;       </tr>  12.     </table>  13. </form:form>          这个时候我们知道会呈现出3个复选框,而checkboxes绑定的表单对象user的roles属性是一个集合对象,其包含的两个元素都能在checkboxes的items数据源中找到对应的Key,所以以这两个元

101、素为value的checkbox将处于选中状态。效果如下:         当我们使用Array或者集合作为数据源,且里面的元素都是一个一个POJO时,我们还可以使用checkboxes标签的itemLabel和itemValue属性来表示使用数组或者集合中元素对象的哪一个属性作为需要呈现的单选框的label和value。1.6     radiobutton标签radiobutton标签会被渲染为一个type为radio的普通HTML input标签。radiobutton

102、标签也是可以绑定数据的。以下是一个radiobutton的简单应用示例:Jsp代码  1. <form:form action="formTag/form.do" method="post" commandName="user">  2.     <table>  3.         <tr>

103、;  4.             <td>性别:</td>  5.             <td>  6.             

104、0;  <form:radiobutton path="sex" value="1"/>男  7.                <form:radiobutton path="sex" value="0"/>女  8.   

105、          </td>  9.         </tr>  10.         <tr>  11.            

106、; <td colspan="2"><input type="submit" value="提交"/></td>  12.         </tr>  13.     </table>  14. </form:form>  &

107、#160;       在上面代码中我们的radiobutton标签都是绑定了表单对象user的sex属性,当sex为1的时候就代表性别为男,上面性别为男的那一行就会被选中,当sex为0的时候就代表性别为女,上面性别为女的那一行就会被选中。1.7     radiobuttons标签radiobuttons标签跟radiobutton标签的区别如同checkbox标签对checkboxes标签的区别。使用radiobuttons标签的时候将生成多个单选按钮。使用radiobuttons有两个属性

108、也是我们必须指定的,一个是path属性,表示绑定的表单对象对应的属性,另一个是items属性,表示用于生成单选按钮的数据源。跟checkboxes一样,radiobuttons的items属性和path属性都可以是Array、集合或者是Map。现在我们假设user在篮球、足球、乒乓球、羽毛球和排球这5种运动中选择一种作为自己最喜欢的球类运动。处理器方法和返回的对应的视图代码如下:Java代码  1. RequestMapping(value="form", method=RequestMethod.GET)  2. publ

109、ic String formTag(Map<String, Object> map)   3.    User user = new User();  4.    user.setFavoriteBall(4);/设置我最喜爱的球类运动是4羽毛球  5.    Map<Integer, String> ballMa

110、p = new HashMap<Integer, String>();  6.    ballMap.put(1, "篮球");  7.    ballMap.put(2, "足球");  8.    ballMap.put(3, "乒乓球");  9.   

111、0;ballMap.put(4, "羽毛球");  10.    ballMap.put(5, "排球");  11.    map.put("user", user);  12.    map.put("ballMap", ballMap);  13.    return

112、60;"formTag/form"  14.     Jsp代码  1. <form:form action="formTag/form.do" method="post" commandName="user">  2.     <table>  3.     &#

113、160;   <tr>  4.             <td>最喜欢的球类:</td>  5.             <td>  6.        

114、;        <form:radiobuttons path="favoriteBall" items="$ballMap" delimiter="&nbsp;"/>  7.             </td>  8.  &

115、#160;      </tr>  9.         <tr>  10.             <td colspan="2"><input type="submit" value=

116、"提交"/></td>  11.         </tr>  12.     </table>  13. </form:form>          在上述代码中我们可以看到我们使用了radiobuttons的delimiter属性,该属性表示进行展示的

117、radiobutton之间的分隔符。这里用的是一个空格。结果页面如下所示:  1.8     password标签password标签将会被渲染为一个type为password的普通HTML input标签。1.9     select标签select标签将会被渲染为一个普通的HTML select标签。这里还拿前面的user最喜欢的球类运动来做示例,有如下这样一个处理器方法和对应的视图页面:Java代码  1. RequestMapping(value="form

118、", method=RequestMethod.GET)  2. public String formTag(Map<String, Object> map)   3.    User user = new User();  4.    user.setFavoriteBall(4);/设置我最喜爱的球类运动是4羽毛球  5. 

119、0;  Map<Integer, String> ballMap = new HashMap<Integer, String>();  6.    ballMap.put(1, "篮球");  7.    ballMap.put(2, "足球");  8.    ballMap.put

120、(3, "乒乓球");  9.    ballMap.put(4, "羽毛球");  10.    ballMap.put(5, "排球");  11.    map.put("user", user);  12.    map.put("ballMap",&

121、#160;ballMap);  13.    return "formTag/form"  14.     Jsp代码  1. <form:form action="formTag/form.do" method="post" commandName="user">  2.     <table>

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论