版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SoEasy系列之JSTLJSTL库概什么是JSTLJSTL全称为JSPStandardTagLibrary,即JSP标准库。JSTL最初是一套Java的库解决方案,自从JavaEE5之后被定义为标准的库。JSTL规范由Sun公司定制,Apache的Jakarta小组负责实现,目前的版本是JSTL1.2。EL最初定义在JSTL1.0规,在JSP2.0之后,EL已经正式成为JSP规范的一部分。在JSTL1.1规EL的内容,不过在JSTLEL。JSTLJSP页面的设计,JSTL的使用为页面设计人员和程序开发人员的分工协作JSTL虽然叫做标准库但实际上是由五个不同功能的库组成的分别为core库fmt库、SQL库、XML库及Functions库,其中Functions库就是前面提到了EL达式的函数库,下面主要学习core库和fmt库JSTL(JSPStandardTagLibrary,JSP标准库)是一个不断完善的开放源代码的JSP库,是apache的jakarta小组来的。JSTL只能运行在支持JSP1.2和Servlet2.3规范的容器上,如4.x。在JSP2.0JSTL1.020026月,由四个定制标记库(core、format、xmlsql)和一对通用标记库验证器(ScriptTLVPermittedTaglibsTLV)组成。core标记库提供了定制操作,通过限制了作用域的变量管理数据,以及执行页面内容的迭代和条件操作。它还提供了用来生成和操作URL地化资源束进行JSP页面的xml库包含一些标记这些标记用来操作通过XML表示的数据,而sql库定义了用来查询关系数据库的操作。如果要使用JSTLjstl.jarstandard.jar文件放到classpath中,如果你还需要使用XMLprocessing及Databaseaccess(SQL),还要将相关JAR文件放到classpath中,这些JAR文件全部存在于回来的zip文件中。JSP标准库(JSPStandardTagLibrary)是JavaEE网络应用程序开发平台的组成部分。它在JSP规范的基础上,扩充了一个JSP的库来完成一些通用任务,比如XML数据处理、条件执行、数据库、循环和。JSTL是在JCP下,作为JSR52被开发出来的。200658日发布了JSTL1.22011127日的JSTL1.2.1JSTL提供了一个有效的途径,以在JSP页面中嵌入逻辑,而不是直接嵌入Java代码。使用标准标JSTL的core<c:out>用于计算一个表达式并将结果输出到当前的JspWriter对象。<c:out>的功能类似于JSP的表达式<%=expression%>。<c:out>的语法格式如下<<c:outvalue="表达式"escapeXml="是否转义"default="默认值value<>’对应的字符或预定义实体,默认值为true。<>’字字符实体代<>‘“&;default属性:如果value为null,那么将使用这个默认值。<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-<%@taglibprefix="c" /jsp/jstl/core"<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01<title>out.jsp<metahttp-equiv="pragma"content="no-<metahttp-equiv="cache-control"content="no-<metahttp-equiv="expires"pageContext.setAttribute("name",<c:out<c:outvalue="<script>alert(' olongestory.');</script>"<c:out oworld}"<c:set>用于设置范围变量的值或者JavaBean对象的属性<c:set>的语法格式如下<<c:setvar="变量名称"value="表达式"scope="JSP域范围var属性:将valuevaluescope属性:var属性指定的变量所使用的范围(JSP域范围targetJavaBean对象(setter方法)java.util.Mapproperty属性:要设置的target下面是<c:set>的具体用法<%@<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-<%@taglibprefix="c" /jsp/jstl/core"<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01<metahttp-equiv="pragma"content="no-<metahttp-equiv="cache-control"content="no-<metahttp-equiv="expires"<c:setvar="name"value="longestory"<c:out<jsp:useBeanid="user"class="app.java.bean.User"<c:settarget="${user}"property="age"<c:outvalue="${user.age<c:remove>用于移除指定范围的变量<c:remove>的语法格式如下<<c:removevar="变量名称"scope="JSP域范围varscope属性:var属性指定的变量的范围(JSP域page。<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-<%@taglibprefix="c" /jsp/jstl/core"<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01<metahttp-equiv="pragma"content="no-<metahttp-equiv="cache-control"content="no-<metahttp-equiv="expires"pageContext.setAttribute("a","pageContext");request.setAttribute("a","session");session.setAttribute("a","session");application.setAttribute("a","application");删除所有域中的name为a的数据<c:remove<c:outvalue="${a}"<c:if>用于实现Java语言中的if语句的功能<c:if>的语法格式如下<<c:iftest="条件"var="变量名称"scope="JSP域范围test属性:测试的条件,用于判断体是否应该被执行varBooleanscope属性:var属性指定变量的JSP域范围,默认值为page。<%@<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-<%@taglibprefix="c" /jsp/jstl/core"<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01<metahttp-equiv="pragma"content="no-<metahttp-equiv="cache-control"content="no-<metahttp-equiv="expires"<c:setvar="name"<c:iftest="${notemptyname}"var="test"<c:outvalue="${name<c:iftest="${test<c:out <c:choose>、<c:when>和<c:otherwise>一起实现互斥条件的执行,类似于Java语言的if/elseif/else语句。<c:choose>、<c:when>和<c:otherwise>的语法格式如下<c:whentest="条件下面是<c:choose>、<c:when>和<c:otherwise>的具体用法<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-<%@taglibprefix="c" /jsp/jstl/core"<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01<metahttp-equiv="pragma"content="no-<metahttp-equiv="cache-control"content="no-<metahttp-equiv="expires"<c:setvar="c"value="${param.score<c:whentest="${c100||c0">输入有误,请输入正确的成绩:0~100之<c:whentest="${c>=90<c:whentest="${c>=80<c:whentest="${c>=70<c:whentest="${c>=60<c:url>使用正确的URL重写规则构造一个URL<c:url>的语法格式如下<<c:urlvalue="url路径"var="变量名称"scope="JSP域范围value属性:要处理的URLvar属性:将处理的URLStringscope属性:var属性指定变量的JSP域范围,默认值为page。<%@<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-<%@taglibprefix="c" /jsp/jstl/core"<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01<metahttp-equiv="pragma"content="no-<metahttp-equiv="cache-control"content="no-<metahttp-equiv="expires"<ahref="<c:url <c:urlvalue="/servlet/AServlet"var="url"<c:paramname="username"value="longestory"<c:paramname="password"value="123"<ahref="${requestScope.url <c:forEach>用于对包含了多个对象的集合进行迭代,重复执行它的体,或者重复迭代固<<c:forEachvar="变量名称begin="起始位置end="截至位置step="步长"items="集合对象"varStatus="迭代状态"></c:forEach>varbeginendstep1itemsvarStatus属性:要迭代的状态,可以获取迭代过程中的一些状态。循环变量,指定开始和结束位置(计数<%@<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-<%@taglibprefix="c" /jsp/jstl/core"<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01<metahttp-equiv="pragma"content="no-<metahttp-equiv="cache-control"content="no-<<metahttp-equiv="expires"<c:forEachvar="i"begin="1"${i<c:setvar="sum"<c:forEachvar="i"begin="1"<c:setvar="sum"value="${sum+isum=${sum}循环遍历集合,其中包含数组、List或Map<%@<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-<%@taglibprefix="c" /jsp/jstl/core"<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01<metahttp-equiv="pragma"content="no-<metahttp-equiv="cache-control"content="no-<metahttp-equiv="expires"String[]arr={"one","two","three"};pageContext.setAttribute("arr",arr);List<String>list=newArrayList<String>();pageContext.setAttribute("abc",list);=new.put("name",.put("age", ", <c:forEachitems="${arr}"${str<c:forEachitems="${abc}"${str${str<c:forEachitems="${p}"${entry.key}=${entry.value在迭代中通过varStatus<%@<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-<%@taglibprefix="c" /jsp/jstl/core"<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01<metahttp-equiv="pragma"content="no-<metahttp-equiv="cache-control"content="no-<metahttp-equiv="expires"<c:forEachitems="${arr}"var="str"first:${vs.first},last:${vs.last},count:${vs.count},index:${vs.index},current:${vs.current}<br/>自定JSP中设计自定义的目的就是为了实现HTML代码重用。自定义可以实现非常复杂的功在JavaEE规,是不建议在JSP页面直接编写Java代码的,而是通过自定义来调用对应的码功能。如果要实现既定业务逻辑功能,就可以通过自定义方式解决。自定义步MethodProcesstheendtagforthisProcessMethodProcesstheendtagforthisProcessthestarttagforthisGettheparent(closestenclosingtaghandler)forthistagCalledonaTaghandlertorelease Setthecurrentpage Settheparent(closestenclosingtaghandler)ofthistag自定义的创建具体步骤如下创建一个Java类实现Tag接口,该类完成自定义的具体逻辑功能publicpublicclassOneTagimplementsTagpublicvoidsetPageContext(PageContextpc){}publicvoidsetParent(Tagt){}publicTaggetParent()System.out.println("这是getParent()方法return}publicintdoStartTag()throwsJspException{return0;}publicintdoEndTag()throwsJspException{return0;}publicvoidrelease()System.out.println("这是release()方法}}在Web工 中,创建tld自定义的描述文件<?<?xmlversion="1.0"encoding="UTF-<taglib" /xml/ns/j2ee/web-<!--定义自定 库的版本--<tlib-version>1.0</tlib-<!--定义自定 库的名称--<short-name>ls</short-库的URI--<!--定义自定 对应的类的完整路径--<tag-class>app.java.tags.OneTag</tag-<!-定义自定 ****-- ) <body-content>empty</body-在JSP页面中引入自定义库<%@<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-<%@taglibprefix="ls"uri="/WEB-INF/mytags/onetag.tld"<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01<metahttp-equiv="pragma"content="no-<metahttp-equiv="cache-control"content="no-<metahttp-equiv="expires"发布Web工程打开浏览器在地址栏输入自定义继承虽然目前可以通过实现Tag接口,完成自定义的功能,但是很麻烦。下面来研究一下Tag接TagTag接口具有一个父级接口,叫做JspTag接口。Tag接口是JSP1.2规范定义的接口,JspTag接口是JSP2.0规范定义的接口,通过实现Tag接口的自定义被称之为传统。目前使用是JSP2.0规范。Tag接口具有两个子接口ItionTag接口和BodyTag接口,这两个接口分别有TagSupport现类和BodyTagSupport实现类具体自定义时实际上是通过继承这两个实现类完成的,Tag接口或其两个子接口完成。为简单,但实际上只是实现过程变得更为简单而已。该接口具有一个实现类SimpleTagSupport类,实现自定义时是通过继承该类完成的。掌握了Tag接口的继承链关系后,在今后的实际开发中,是自定义简单。要想实现自定义简单,要么实现SimpleTag接口,要么继承SimpleTagSupport类。具体实现步骤如下:创建一个Java类继承SimpleTagSupport类,重写doTag()publicpublicclassTwoTagextendsSimpleTagSupport{*当执行到自定 publicvoiddoTag()throwsJspException,IOException//1获取pageContextPageContextpageContext=JspWriterout= o}}在Web工 中,创建tld自定义的描述文件<?<?xmlversion="1.0"encoding="UTF-<taglib" /xml/ns/j2ee/web-<tlib-version>1.0</tlib-<short-name>ls</short- <tag-class>app.java.tags.TwoTag</tag-<body-content>empty</body-在JSP页面中引入自定义库<%@<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-<%@taglibprefix="ls"uri="/WEB-INF/mytags/mytags.tld"<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01<metahttp-equiv="pragma"content="no-<metahttp-equiv="cache-control"content="no-<metahttp-equiv="expires"发布Web工程打开浏览器在地址栏输入简单的生命周到目前为止,通过Tag接口和SimpleTagSupport类分别实现了传统自定义和简单自定义两种,下面跟深入地了解一下自定义的生命周期。首先,先来讨论传统的生命周期(以上面的传统自定义为例向自定义传统类,增加构造函数。然后调用两个自定义内容,查看控制台信息该自定义类的构造函数只被调用一次,说明该自定义类是单实例的每次执行会调用setPageContext()方法该方法用于向自定义类传递内置对象(通过该对象可以获取其他八个内置对象递一个父内容,例如<c:choose>内使用的<c:when>。签,自定义具体实现的逻辑功能封装在这两个方法中。在正常关闭Tomcat服务器时,调用release()方法。该方法用于释放创建自定义所用SimpleTag接口的APIMethodCalledbythecontainertoinvokethisReturnstheparentofthistag,forcollaboration ProvidesthebodyofthistagasaJspFragmentobject,abletobeinvokedzeroormoretimesbytag CalledbythecontainertoprovidethistaghandlerwiththeJspContextforthis Setstheparentofthistag,forcollaboration根据SimpleTag接口提供的方法,来讨论简单的生命周期(以上面的简单自定义为例publicpublicclassTwoTagextendsSimpleTagSupportpublicTwoTag()System.out.println("这是TwoTag方法}publicvoidpublicvoidsetParent(JspTagparent){}publicvoidsetJspContext(JspContextpc){}publicvoidsetJspBody(JspFragmentjspBody)}publicvoiddoTag()throwsJspException,IOException}}然后调用两个自定义内容,查看控制台信息每次执行自定义时,构造函数都被调用一次,说明自定义简单类是多实例的自定义被执行时,调用setJspContext()方法。该方法用于向自定义类传pageContext内置对象(通过该对象可以获取其他八个内置对象setParent()方法:用于向当前自定义传递父内容,例如<c:choose>内使用<c:when>。如果没有传递父,则为null值setJspBody()方法:用于向当前自定义传递JSP内容。因为配置自定义时使用自定义简单并没有像传统一样的release()释放资源的方法带体的简上述实现的自定义简单只是最基本的用法,简单在自定义时,还可以定义体内容。创建一个Java类继承SimpleTagSupport类,重写doTag()publicpublicclassThreeTagextendsSimpleTagSupport{publicvoiddoTag()throwsJspException,IOException//1获取pageContextPageContextpageContext=(PageContext)JspWriterout=//3StringWriterwriter=new//4获 JspFragmentbody=5通过invoke()方法 //6打 体内}}在Web工 中,创建tld自定义的描述文件<?<?xmlversion="1.0"encoding="UTF-<taglib" /xml/ns/j2ee/web-<tlib-version>1.0</tlib-<short-name>ls</short- <tag-class>app.java.tags.ThreeTag</tag-<!--定义自定义简 时,不能使用JSP选项.--<body-content>tagdependent</body-在JSP页面中引入自定义库<%@<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-<%@taglibprefix="ls"uri="/WEB-INF/mytags/mytags.tld"<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01<metahttp-equiv="pragma"content="no-<metahttp-equiv="cache-control"content="no-<metahttp-equiv="expires"thisis发布Web工程打开浏览器在地址栏输入创建一个Java类继承SimpleTagSupport类,重写doTag()publicpublicclassFourTagextendsSimpleTagSupportprivateBooleanpublicBooleangetTest()return}publicvoidsetTest(Booleantest)this.test=}publicvoiddoTag()throwsJspException,IOException}}}在Web工 中,创建tld自定义的描述文件<?<?xmlversion="1.0"encoding="UTF-<taglib" /xml/ns/j2ee/web-<tlib-version>1.0</tlib-<short-name>ls</short- <tag-class>app.java.tags.FourTag</tag-<body-content>scriptless</body-<!--为自定义简 配置一个属性-- 等--在JSP页面中引入自定义库<%@<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-<%@taglibprefix="ls"uri="/WEB-INF/mytags/mytags.tld"<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01<metahttp-equiv="pragma"content="no-<metahttp-equiv="cache-control"content="no-<metahttp-equiv="expires"<ls:fourtagtest="${param.flag}">thisislongestory.发布Web工程打开浏览器输入除了自定义简单带有体和属性之外,简单还可以实现很多功能。例如在执行完自定义简单后,JSP页面后面的内容不再执行等功能。下面就来实现一下这个功能,具体实现步骤如创建一个Java类继承SimpleTagSupport类,重写doTag()publicpublicclassFiveTagextendsSimpleTagSupport{publicvoiddoTag()throwsJspException,IOExceptionthrownewSkipPageException();}}在Web工 中,创建tld自定义的描述文件<?<?xmlversion="1.0"encoding="UTF-<taglib" /xml/ns/j2ee/web-<tlib-version>1.0</tlib-<short-name>ls</short- <tag-class>app.java.tags.FiveTag</tag-<body-content>empty</body-在JSP页面中引入自定义库<%@<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-<%@taglibprefix="ls"uri="/WEB-INF/mytags/mytags.tld"<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01<metahttp-equiv="pragma"content="no-<metahttp-equiv="cache-control"content="no-<metahttp-equiv="expires"<p>人从来没有人不恐 发布Web工程打开浏览器的地址栏输入打包自定义自定义,无论是传统还是简单,都是为了将来开发JSP页面更加简单。而目前自定义的只能在当前Web工程中使用,其他Web工程并不能使用。为了可以让其他Web工程也可以使用自定义库内容,需要将自定义打包成JAR包。具体操作步骤如下:创建一个Java在当前Java工程的根中,右键创建一个为“META-INF将tld自定义描述文件,拷贝到“META-INF”中将对应自定义类拷贝到当前Java工程的“src”中当将自定义类拷贝到“src” 中后,会报错。原因是Java工程中没有JavaEE所需的JAR包。需要为当前Java工程导入JavaEE所需的JAR将当前Java工程导出为JAR而Java提供了资源绑定ResourcesBundle、地区Locale、时区TimeZone等支持资源。资源国际化有两个常用的术语I18N与I10N。I18N即资源,全称为Internationalization,因为首字母I与末字母N之间共18个字母,又I10N为资源本地化Localization,因为首字母I与末字母N之间共10个字又称I10N。在Web工程的“src” 下创建资源文件 .propertiesname=defaultname=default如果创建对应本地化资源文件的话,命名方式为“资源文件名称_语言代码_国家代.properties创建一个Java文件,用于资源文件,进试publicpublicclassResourceBundleTest{// publicvoid////件ResourceBundlebundle=//Stringvalue=}}右键运行该Java类,查看控制台打印信息(当前计算机使用的语言是中文,国家如果想要获取指定国家和语言的资源文件,可以如下来完成创建一个Java文件,用于资源文件,进试publicpublicclassResourceBundleTest{publicvoid//件ResourceBundlebundle//Stringvalue=}}右键运行该Java日期方static style, formatterformatterstaticgetDateTimeInstance(intdateStyle,方static style, formatterformatterstaticgetDateTimeInstance(intdateStyle,inttimeStyle, 获得日期/formatterformatterstatic style, formatterformatter创建一个Java类,用于获取日期和时间等内容的方式publicclassDateFormatTest{publicvoidDatedate=newgetDateInstance(intstyle,Locale*formatterformatter具有给定语言环境的给定格式化风格
*local参数:指定使用的语言环境DateFormatdateFormat1DateFormat.getDateInstance(DateFormat.FULL,Locale. getTimeInstance(intstyle,Locale*formatterformatter具有给定语言环境的给定格式化风格
*local参数:指定使用的语言环境DateFormatdateFormat2DateFormat.getTimeInstance(DateFormat.LONG,Locale. getDateTimeInstance(intdateStyle,inttimeStyle,Locale*获得日期/formatterformatter具有给定语言环境的给定格式化风格
*local参数:指定使用的语言环境DateFormatdateFormat3DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.SHORT, System.out.println("日期和时间同 }}右键运行该Java数字方 方 umFractionDigits(intumIntegerDigits(intsetMinimumFractionDigits(intsetMinimumIntegerDigits(int创建一个Java类,用于获取日期和时间等内容的方式publicpublicclassNumberFormatTest{publicvoiddoublei= NumberFormatnumberFormat1= NumberFormatnumberFormat2System.System.out.println("指定语言环境的通用数字格为NumberFormatnumberFormat3= NumberFormatnumberFormat4System.out.println("指定语言环境的百分比格为}}右键运行该Java动态文本之前实现了文本信息的,可以使用占位符实现固定文本实现动态变化。具体实现方式参考publicpublicclassMessageFormatTest{publicvoidStringmsg1用户名不能为空Stringmsg2 不能为空Stringpattern"{0}不能为空Strings1=MessageFormat.format(pattern,"用户名");Strings2=MessageFormat.format(pattern," }}}publicpublicclassMessageFormatTest{publicvoidStringpattern="{0}的长度必须在{1}到{2}位数之间";System.out.println(MessageFormat.format(pattern,"用户名"3,}}动态文本信息 还具有很多高级用法,例如如下案例publicpublicclassMessageFormatTest{publicvoiddemo()Strings="At{0,time,short}on{0,date,medium},ahurricancedestroyed{1,number,integer}housesandcaused{2,number,currency}of12:30pmonjulCalendarcalendarCalendar.getInstance();//所有日期月份从0开始calendar.set(1998,6,3,12,30,0);Datedate=calendar.getTime();intn=intm 指定localeMessageFormatmessageFormat=newMessageFormat(s,Locale.US);System.out.println(messageFormat.format(newObject[]{date,n,m}}上述内容都只是利用测试类完成逻辑,下面利用内容完成登录页面的在Web工程的“src” 下创建资源文件info=info=defaultformusername=defaultusernamepassword=defaultpasswordsubmit=defaultsubmitinfo=info=formusername=usernamepassword=passwordsubmit=submit创建一个JSP页面用于显示登录信息,并实现<%@<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01<metahttp-equiv="pragma"content="no-<metahttp-equiv="cache-control"content="no-<metahttp-equiv="expires"环境例如.Stringlocaleinfo=ResourceBundlebundle=//判 if(localeinfo==//如果为空,使用默认 bundleResourceB
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 劳务费支付合同书范本2
- 建筑能源管理行业经营分析报告
- 牙科用印模托盘市场分析及投资价值研究报告
- 帽架产业链招商引资的调研报告
- 出租家具行业相关项目经营管理报告
- 位置定位服务电信服务行业市场调研分析报告
- 贵州省乌当区某校2024-2025学年高三上学期10月月考英语试题(解析版)
- 蚕种脱水机项目运营指导方案
- 光遗传学领域的研究行业营销策略方案
- 气动喷灯产品供应链分析
- 3.1细胞膜的结构和功能说课课件-高一上学期生物人教版(2019)必修1
- 供应链金融物流行业发展趋势及前景展望分析报告
- 亚马逊合伙运营协议书模板
- 应收账款保理融资协议
- 期中试卷(1-3单元)(试题)-2024-2025学年六年级上册数学人教版
- 公安联考行测题库及答案
- 银行招聘-建设银行备考手册
- 医用高等数学智慧树知到答案2024年南方医科大学
- 2025届新高考政治复习备考策略及教学建议 课件
- 大棚膜购销合同协议书
- 2024电梯土建施工合同范本
评论
0/150
提交评论