简单理解Struts2中拦截器与过滤器的区别及执行顺序.doc_第1页
简单理解Struts2中拦截器与过滤器的区别及执行顺序.doc_第2页
简单理解Struts2中拦截器与过滤器的区别及执行顺序.doc_第3页
简单理解Struts2中拦截器与过滤器的区别及执行顺序.doc_第4页
简单理解Struts2中拦截器与过滤器的区别及执行顺序.doc_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

简单理解Struts2中拦截器与过滤器的区别及执行顺序当接收到一个httprequest , a) 当外部的httpservletrequest到来时 b) 初始到了servlet容器 传递给一个标准的过滤器链 c) FilterDispatecher会去查找相应的ActionMapper,如果找到了相应的ActionMapper它将会将控制权限交给ActionProxy d) ActionProxy将会通过ConfigurationManager来查找配置struts.xml i. 下一步将会 通过ActionInvocation来负责命令模式的实现(包括调用一些拦截Interceptor框架在调用action之前) ii. Interceptor做一些拦截或者初始的工作 e) 一旦action返回,会查找相应的Result f) Result类型可以是 jsp或者freeMark 等 g) 这些组件和ActionMapper一起返回给请求的url(注意拦截器的执行顺序) h) 响应的返回是通过我们在web.xml中配置的过滤器 i) 如果ActionContextCleanUp是当前使用的,则FilterDispatecher将不会清理sreadlocal ActionContext;如果ActionContextCleanUp不使用,则将会去清理sreadlocals。 1、拦截器是基于java反射机制的,而过滤器是基于函数回调的。2、过滤器依赖于servlet容器,而拦截器不依赖于servlet容器。3、拦截器只能对Action请求起作用,而过滤器则可以对几乎所有请求起作用。4、拦截器可以访问Action上下文、值栈里的对象,而过滤器不能。5、在Action的生命周期中,拦截器可以多次调用,而过滤器只能在容器初始化时被调用一次。 org.apache.struts2.dispatcher.FilterDispatcher的四个功能 org.apache.struts2.dispatcher.FilterDispatcher是Struts2的主要的Filter,负责四个方面的功能: (1)执行Actions (2)清除ActionContext (3)维护静态内容 (4)清除request生命周期内的XWork的interceptors 另注:该过滤器应该过滤所有的请求URL。一般被设置为/*.(过滤所有的请求!) 具体: (1)执行Actions 过滤器通过ActionMapper对象,来判断是否应该被映射到Action.如果mapper对象指示他应该被映射,过滤链将会被终止,然后Action被调用。这一点非常重要,如果同时使用SiteMesh filter,则SiteMesh filter应该放到该过滤器前,否则Action的输出将不会被装饰。 (2)清除ActionContext 过滤器为了确保内存溢出,会自动的清除ActionContext。这可能会存在一些问题,在和其它的框架集成时,例如SiteMesh。ActionContextCleanUp提供了怎么处理这些问题的一些信息。 (3)维护静态内容 过滤器也会维护在Struts2中使用的一些公共的静态的内容,例如JavaScript文件,CSS文件等。搜索/struts/*范围内的请求,然后将/struts/后面的值映射到一些struts的公共包中,也可以在你的类路径中搜索。默认情况下会去查找以下包:org.apache.struts2.static.template。这样你只用请求/struts/xhtml/styles.css,XHTML UI主题默认的样式表将会被返回。同样,AJAX UI组件需要的JavaScript文件,也可以在org.apache.struts2.static包中被找到。如果你想加入其它被搜索的包,在web.xml中设置filter时,通过给actionPackages初始参数一个逗号隔开的包列表值来设定。 需注意的是:他会暴露一些比较敏感的信息例如,properites文件中的数据库连接信息。 注:过滤器支持以下初始参数: config - 被调入的逗号隔开的XML文件列表。 actionPackages - 被actions扫描的逗号隔开的packages列表。 configProviders - 逗号分隔的实现了ConfigurationProvider接口(建造Configuration时被使用)的实现类。 * 任意的struts常量。 通过重载createDispatcher()方法,可以自定义dispather。 属性列表: (1)actionMapper:通过注入,提供一个ActionMapper实例。 (2)dispatcher:暴露给子类一个Dispatcher实例。 (3)encoding:存储StrutsConstants.STRUTS_I18N_ENCODING的设置。 (4)filterConfig:通过初始参数,提供一个FilterConfig实例。 (5)lastModifiedCal:在缓存静态content,提供一个格化的日期用于设定头信息。 (6)log:提供一个logging实例。 (7)patchPrefixs:存储静态资源的路径前缀信息。 (8)serveStatic:存储StrutsConstants.STRUTS_SERVE_STATIC_CONTENT的设置。 (9)serveStaticBrowserCache:存储StrutsConstants.STRUTS_SERVE_STATIC_BROWSER_CACHE的设置。 方法列表: (1)copy(InputStream input, OutputStream output):从input复制数据到output。 (2)createDispatcher(FilterConfig filterConfig):创建默认的dispatcher对象,如果需要的话,子类可以重载此方法,自定义一个dispatcher对象。 (3)destory():调用dispatcher.cleanup(),依次释放本地线程,销毁dispatcher对象。 (4)doFilter(ServletRequest request, ServeltResponse response, FilterChain chain):处理一个action或处理一个请求的静态内容。 (5)findInputStream(String name, String packagePrefix):搜索类路径下的静态资源。 (6)findStaticResoruce(String name, HttpServletRequest request, HttpServletResponse response):搜索静态的资源,直接复制到相应response的头信息中。 (7)getContentType(String name):获取指定资源的contentType。 (8)getFilterConfig():获取FilterConfig实例。 (9)getServletContext():给WebLogic的一些版本提供一个工作区。 (9)init(FilterConfig filterCongfig):创建默认的dispatcher对象和设置静态资源的默认包信息来初始化filter。 (10)parse(String packages):返回一个数组通过解析一个指定逗号分隔的packages列表。 (11)prepareDispatcherAndWrapRequest(HttpServletRequest request, HttpServletResponse response):对给定的request对象进行封装返回一个封装HttpServletRequest对象。例如显示的处理multipart数据。 (12)setMapper(ActionMapper actionMapper) (13)setEncoding(String val) (14)setServeStaticContent(String val) (15)setServeStaticBrowserCache(String val) 附:Struts2(XWork)提供的拦截器的功能说明:拦截器名字说明Alias Interceptoralias在不同请求之间将请求参数在不同名字件转换,请求内容不变Chaining Interceptorchain让前一个Action的属性可以被后一个Action访问,现在和chain类型的result()结合使用。Checkbox Interceptorcheckbox添加了checkbox自动处理代码,将没有选中的checkbox的内容设定为false,而html默认情况下不提交没有选中的checkbox。Cookies Interceptorcookies使用配置的name,value来是指cookiesConversion Error InterceptorconversionError将错误从ActionContext中添加到Action的属性字段中。Create Session InterceptorcreateSession自动的创建HttpSession,用来为需要使用到HttpSession的拦截器服务。Debugging Interceptordebugging提供不同的调试用的页面来展现内部的数据状况。Execute and Wait InterceptorexecAndWait在后台执行Action,同时将用户带到一个中间的等待页面。Exception Interceptorexception将异常定位到一个画面File Upload InterceptorfileUpload提供文件上传功能I18n Interceptori18n记录用户选择的localeLogger Interceptorlogger输出Action的名字Message Store Interceptorstore存储或者访问实现ValidationAware接口的Action类出现的消息,错误,字段错误等。Model Driven Interceptormodel-driven如果一个类实现了ModelDriven,将getModel得到的结果放在Value Stack中。Scoped Model Drivenscoped-model-driven如果一个Action实现了ScopedModelDriven,则这个拦截器会从相应的Scope中取出model调用Action的setModel方法将其放入Action内部。Parameters Interceptorparams将请求中的参数设置到Action中去。Prepare Interceptorprepare如果Acton实现了Preparable,则该拦截器调用Action类的prepare方法。Scope Interceptorscope将Action状态存入session和application的简单方法。Servlet Config InterceptorservletConfig提供访问HttpServletRequest和HttpServletResponse的方法,以Map的方式访问。Static Parameters InterceptorstaticParams从struts.xml文件中将中的中的内容设置到对应的Action中。Roles Interceptorroles确定用户是否具有JAAS指定的Role,否则不予执行。 查看图片附件 10:41 评论/ 浏览 (0 / 762) 分类:企业架构2010-07-29缩略显示Eclipse 支持jQuery 自动提示 博客分类: jQueryEclipsejQueryMyeclipseJavaScriptBlog感谢:/blog/4583721,Eclipse安装 spket 插件。(两种方式): 在线安装:Help-Install New Software.-Add.-Name: Spket, Location: /update/ 下载完毕重启 Eclipse 。 手动安装:到/download.html 下载 Plugin 版本,当前版本为1.6.17。下载解压后直接放置于Eclipse的dropins目录下,重启Eclipse。 MyEclipse的插件安装是把spket1.6.18破解版.zip解压后直接复制到MyEclipse安装目录的GenuitecMyEclipse-8.6dropins文件夹下即可。启动Myeclipse,打开windowPreferences会发现多处了spket选项 2,下载jQuery文件,(要下载开发版本)。3,设置spket。Window - Preferences - Spket - JavaScript Profiles - New ; 输入“jQuery”点击OK; 选择“jQuery” 并点击“Add Library”然后在下拉条中选取“jQuery”; 选择 “jQuery”并点击“Add File”,然后选中你下载的jQuery.js 文件;设成Default;4,设置js打开方式。Window - Preferences -General- Editors- File Associations- 选择*.js 将 Spket JavaScript Editor设为Default。5,新建一个js文件,jQuery 自动提示! 分类:Web前端2010-07-29缩略显示struts2的perties详解 博客分类: struts2.xStrutsvelocity框架freemarker应用服务器Struts 2框架有两个核心配置文件:struts.xml和perties 其中struts.xml文件主要负责管理应用中的Action映射,以及该Action包含的Result定义等。除此之外,Struts2框架还包含一个perties文件,该文件定义了Struts 2框架的大量属性,开发者可以通过改变这些属性来满足应用的需求。perties文件是一个标准的Properties文件,该文件包含了系列的key-value对象,每个key就是一个Struts 2属性,该key对应的value就是一个Struts2属性值。perties文件通常放在Web应用的WEB-INF/classes路径下。实际上,只要将该文件放在Web应用的CLASSPATH路径下,Struts 2框架就可以加载该文件。其实,perties文件的内容均可在struts.xml中以加载。 下面将该文件的配置参数详细列举出来,方便大家查看;struts.configuration该属性指定加载Struts 2配置文件的配置文件管理器。该属性的默认值是org.apache.Struts2.config.DefaultConfiguration,这是Struts2默认的配置文件管理器。如果需要实现自己的配置管理器,开发者则可以实现一个实现Configuration接口的类,该类可以自己加载Struts 2配置文件。 struts.locale指定Web应用的默认Locale。struts.i18n.encoding指定Web应用的默认编码集。该属性对于处理中文请求参数非常有用,对于获取中文请求参数值,应该将该属性值设置为GBK或者GB2312。提示 当设置该参数为GBK时,相当于调用HttpServletRequest的setCharacterEncoding方法。 struts.objectFactory指定Struts 2默认的ObjectFactory Bean,该属性默认值是spring。struts.objectFactory.spring.autoWrite指定Spring框架的自动装配模式,该属性的默认值是name,即默认根据Bean的name属性自动装配。struts.objectFactory.spring.useClassCache该属性指定整合Spring框架时,是否缓存Bean实例,该属性只允许使用true和false两个属性值,它的默认值是true。通常不建议修改该属性值。 struts.objectTypeDeterminer该属性指定Struts 2的类型检测机制,通常支持tiger和notiger两个属性值。 struts.multipart.parser: 该属性指定处理multipart/form-data的MIME类型(文件上传)请求的框架,该属性支持cos、pell和jakarta等属性值,即分别对应使用cos的文件上传框架、pell上传及common-fileupload文件上传框架。该属性的默认值为jakarta。注意 如果需要使用cos或者pell的文件上传方式,则应该将对应的JAR文件复制到Web应用中。例如,使用cos上传方式,则需要自己下载cos框架的JAR文件,并将该文件放在WEB-INF/lib路径下。 struts.multipart.saveDir该属性指定上传文件的临时保存路径,该属性的默认值是javax.servlet.context.tempdir。 struts.multipart.maxSize该属性指定Struts 2文件上传中整个请求内容允许的最大字节数。 perties 该属性指定Struts2应用加载用户自定义的属性文件,该自定义属性文件指定的属性不会覆盖perties文件中指定的属性。如果需要加载多个自定义属性文件,多个自定义属性文件的文件名以英文逗号(,)隔开。 struts.mapper.class指定将HTTP请求映射到指定Action的映射器,Struts2提供了默认的映射器: org.apache.struts2.dispatcher.mapper.DefaultActionMapper。默认映射器根据请求的前缀与Action的name属性完成映射。 struts.action.extension该属性指定需要Struts 2处理的请求后缀,该属性的默认值是action,即所有匹配*.action的请求都由Struts2处理。如果用户需要指定多个请求后缀,则多个后缀之间以英文逗号(,)隔开。 struts.serve.static该属性设置是否通过JAR文件提供静态内容服务,该属性只支持true和false属性值,该属性的默认属性值是true。 struts.serve.static.browserCache该属性设置浏览器是否缓存静态内容。当应用处于开发阶段时,我们希望每次请求都获得服务器的最新响应,则可设置该属性为false。 struts.enable.DynamicMethodInvocation该属性设置Struts 2是否支持动态方法调用,该属性的默认值是true。如果需要关闭动态方法调用,则可设置该属性为false。 struts.enable.SlashesInActionNames该属性设置Struts 2是否允许在Action名中使用斜线,该属性的默认值是false。如果开发者希望允许在Action名中使用斜线,则可设置该属性为true。 struts.tag.altSyntax该属性指定是否允许在Struts 2标签中使用表达式语法,因为通常都需要在标签中使用表达式语法,故此属性应该设置为true,该属性的默认值是true。 struts.devMode该属性设置Struts2应用是否使用开发模式。如果设置该属性为true,则可以在应用出错时显示更多、更友好的出错提示。该属性只接受true和flase两个值,该属性的默认值是false。通常,应用在开发阶段,将该属性设置为true,当进入产品发布阶段后,则该属性设置为false。 struts.i18n.reload该属性设置是否每次HTTP请求到达时,系统都重新加载资源文件。该属性默认值是false。在开发阶段将该属性设置为true会更有利于开发,但在产品发布阶段应将该属性设置为false。提示 开发阶段将该属性设置了true,将可以在每次请求时都重新加载国际化资源文件,从而可以让开发者看到实时开发效果;产品发布阶段应该将该属性设置为false,是为了提供响应性能,每次请求都需要重新加载资源文件会大大降低应用的性能。 struts.ui.theme该属性指定视图标签默认的视图主题,该属性的默认值是xhtml。 struts.ui.templateDir该属性指定视图主题所需要模板文件的位置,该属性的默认值是template,即默认加载template路径下的模板文件。 struts.ui.templateSuffix该属性指定模板文件的后缀,该属性的默认属性值是ftl。该属性还允许使用ftl、vm或jsp,分别对应FreeMarker、Velocity和JSP模板。 struts.configuration.xml.reload该属性设置当struts.xml文件改变后,系统是否自动重新加载该文件。该属性的默认值是false。 struts.velocity.configfile该属性指定Velocity框架所需的perties文件的位置。该属性的默认值为perties。 struts.velocity.contexts该属性指定Velocity框架的Context位置,如果该框架有多个Context,则多个Context之间以英文逗号(,)隔开。 struts.velocity.toolboxlocation该属性指定Velocity框架的toolbox的位置。 struts.url.http.port该属性指定Web应用所在的监听端口。该属性通常没有太大的用户,只是当Struts 2需要生成URL时(例如Url标签),该属性才提供Web应用的默认端口。 struts.url.https.port该属性类似于struts.url.http.port属性的作用,区别是该属性指定的是Web应用的加密服务端口。 struts.url.includeParams该属性指定Struts 2生成URL时是否包含请求参数。该属性接受none、get和all三个属性值,分别对应于不包含、仅包含GET类型请求参数和包含全部请求参数。 struts.custom.i18n.resources该属性指定Struts 2应用所需要的国际化资源文件,如果有多份国际化资源文件,则多个资源文件的文件名以英文逗号(,)隔开。 struts.dispatcher.parametersWorkaround对于某些JavaEE服务器,不支持HttpServletRequest调用getParameterMap()方法,此时可以设置该属性值为true来解决该问题。该属性的默认值是false。对于WebLogic、Orion和OC4J服务器,通常应该设置该属性为true。 struts.freemarker.manager.classname该属性指定Struts 2使用的FreeMarker管理器。该属性的默认值是org.apache.struts2.views.freemarker.FreemarkerManager,这是Struts2内建的FreeMarker管理器。 struts.freemarker.wrapper.altMap该属性只支持true和false两个属性值,默认值是true。通常无需修改该属性值。 struts.xslt.nocache该属性指定XSLT Result是否使用样式表缓存。当应用处于开发阶段时,该属性通常被设置为true;当应用处于产品使用阶段时,该属性通常被设置为false。 struts.configuration.files该属性指定Struts2框架默认加载的配置文件,如果需要指定默认加载多个配置文件,则多个配置文件的文件名之间以英文逗号(,)隔开。该属性的默认值为struts-default.xml,struts-plugin.xml,struts.xml,看到该属性值,读者应该明白为什么Struts 2框架默认加载struts.xml文件了。 10:01 评论/ 浏览 (0 / 228) 分类:企业架构2010-07-28缩略显示Struts2中的OGNL 博客分类: struts2.xStrutsWeb访问Struts 2的命名对象:parameters、request、session、application和attrOGNL表达式执行结果Java代码执行结果#parameters.greeting ActionContext.getContext().getParameters().get(greeting)欢迎访问程序员之家#request.empName张三(Map)ActionContext.getContext().get(request).get(empName)张三#session.empName李四ActionContext.getContext().getSession().get(empName)李四#application.empName王五ActionContext.getContext().getApplication().get(empName)王五#attr.empName张三(Map)ActionContext.getContext().get(attr).get(empName)张三访问列表OGNL表达式执行结果Java代码执行结果张三(OgnlAction)ActionContext.getContext().getValueStack().peek().getEmps().get(0).getName()张三emps1.addressAddress city=上海, country=中国, street=南京西路20号(OgnlAction)ActionContext.getContext().getValueStack().peek().getEmps().get(1).getAddress()Address city=上海, country=中国, street=南京西路20号emps2.address.city成都(OgnlAction)ActionContext.getContext().getValueStack().peek().getEmps().get(2).getAddress().getCity()成都emps.size3(OgnlAction)ActionContext.getContext().getValueStack().peek().getEmps().size()3emps.isEmptyfalse(OgnlAction)ActionContext.getContext().getValueStack().peek().getEmps().isEmpty()false访问数组OGNL表达式执行结果Java代码执行结果(OgnlAction)ActionContext.getContext().getValueStack().peek().getEmps().get(0).getEmails()0(OgnlAction)ActionContext.getContext().getValueStack().peek().getEmps().get(1).getEmails()1访问MapOGNL表达式执行结果Java代码执行结果emps0.accounts建行12345678(OgnlAction)ActionContext.getContext().getValueStack().peek().getEmps().get(0).getAccounts().get(建行)12345678emps1.accounts.农行597432(OgnlAction)ActionContext.getContext().getValueStack().peek().getEmps().get(1).getAccounts().get(农行)597432emps2.accounts.size2(OgnlAction)ActionContext.getContext().getValueStack().peek().getEmps().get(1).getAccounts().size()2emps2.accounts.isEmptyfalse(OgnlAction)ActionContext.getContext().getValueStack().peek().getEmps().get(1).getAccounts().isEmpty()false选择和投影选择示例: emps.?#this.salary 2000 李四的薪水是2200.0 王五的薪水是2600.0投影示例: 张三 李四 王五Lambda表达式Lambda表达式示例:#isManager = :# = 张三 ? 是管理者 : 是雇员 张三是管理者 李四是雇员 王五是雇员 ch07.rar(3.2 MB) 下载次数: 0 16:04 评论/ 浏览 (2 / 267) 分类:企业架构2010-07-28缩略显示解决Struts2中文乱码的几种方法 博客分类: struts2.xStrutsJSPMySQLWebXML感谢:/blog/460654在使用struts2的 struts-tags的是碰到了乱码问题。 心里愤愤,觉得这个乱码问题都解决过几次了,怎么还会被撞上了?! 先把以往需要设置的点罗列一下: 1. JSP 文件头 2. perties中的编码设定 struts.locale = UTF-8 struts.i18n.encoding=utf-83. Resource的native2ascii 转码 通常这些搞定就能解决编码问题了。 再过一点在web.xml里面配置一个编码的filter: struts-cleanup org.apache.struts2.dispatcher.ActionContextCleanUp struts-cleanup /* 不过这次我碰到了一个这些都不能解决的问题。仍然是乱码。 仔细回想了一下自己的各个环节有什么不同, 我在eclipse里输入中文的,所以把中文素材文件设置成了utf-8格式。 这个在editplus中看起来是乱码的,刚好乱码的结果和web显示的一样。 于是问题找到了,使用editplus重新改写了一下中文。 然后native2ascii一下放上去果然就好了。本文来自: IT知道网( ) 详细出处参考:/html/java/struts/20080313/1081.html 另一种方法jsp向action提交数据时出现乱码的解决办法:在web.xml中,添加filter/* encodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 encodingFilter /* struts2 org.apache.struts2.dispatcher.FilterDispatcher actionPackages com.tongcard.demo.web.actions struts2 /* /*注意两个filter顺序不能颠倒! 最后,还有一种方法jsp文件中使用struts2 表单,设置向mysql数据库中插入数据时,中文总是乱码,开始以为是数据库的问题,因为mysql经常出现这样的问题,头都大了,后来重新配置数据库,编码都设为gbk,重新建库,结果还是乱码!气的想把电脑给砸了!试着从数据库的控制台输入中文,居然能正确显示,总算有点希望了,说明数据库没问题了,那应该是程序有问题!在action中接收表单值的setter方法处设置断点,用debug一查variable,结果这里是乱码!百思不得其解,jsp头都 设置成gbk了,为什么提交的中文是乱码呢?查struts2的doc,找到form的属性,没有发现有设置编码的地方啊!去网上搜索,“struts 2 form 中文乱码”,原来是perties文件中设置了struts.i18n.encoding=UTF-8,于是在 struts.xml中设置,再次调试,用debug一查,果然是中文了,呵呵!总结:问题:jsp中设置编码为gbk,用struts2的form表单提交中文出现乱码原因:struts2默认提交的字符编码是utf-8,与gbk不一致!解决办法:在struts.xml或是perties文件中讲struts.i18n.encoding设置为gbk,一切就ok了! 12:27 评论/ 浏览 (0 / 173) 分类:企业架构2010-07-27缩略显示MySQL boolean tinyint(1) 博客分类: mysqlMySQLStruts MySQL没有boolean类型。这也是比较奇怪的现象。例: create table xs( id int primary key, bl boolean)这样是可以创建成功,但查看一下建表后的语句,就会发现,mysql把它替换成tinyint(1)。也就是说mysql把boolean=tinyInt了,但POJO类要定义成什么类型呢?因为惯性思维,在java类中也把它定义成type。然后在Struts中使用标签。这就产生一个严重的问题了。是boolean,而POJO去定义成byte。这样数据永远也无法提交,被struts的intercept拦截掉了。解决办法是在POJO类中定义成boolean,在mysql中定义成tinyint(1)。 =boolean类型MYSQL保存BOOLEAN值时用1代表TRUE,0代表FALSE,boolean在MySQL里的类型为tinyint(1),MySQL里有四个常量:true,false,TRUE,FALSE,它们分别代表1,0,1,0,mysql select true,false,TRUE,FALSE;+-+-+-+-+| TRUE | FALSE | TRUE | FALSE |+-+-+-+-+| 1 | 0 | 1 | 0 |+-+-+-+-+可以如下插入boolean值:insert into xxxx(xx) values(true),当然也可以values(1);举例如下:mysql alter table test add isOk boolean;Query OKmysql desc test;+-+-+-+-+-+-+| Field | Type | Null | Key | Default | Extra |+-+-+-+-+-+-+| id | int(11) | NO | PRI | NULL | auto_increment | isOk | tinyint(1) | YES | | NULL | |+-+-+-+-+-+-+mysql insert into test(isOk) values(tru

温馨提示

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

评论

0/150

提交评论