java_web笔记大全下载.doc_第1页
java_web笔记大全下载.doc_第2页
java_web笔记大全下载.doc_第3页
java_web笔记大全下载.doc_第4页
java_web笔记大全下载.doc_第5页
已阅读5页,还剩73页未读 继续免费阅读

下载本文档

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

文档简介

收集整理java web笔记大全Lesson 1一、eclipse工具的使用1. java代码的位置1) 选择工作空间 workspace  选择一个文件夹存放程序(代码) 不要用中文和空格2) 新建一个java 工程(Project)3) 建包 建类2. 快捷键alt + / : 代码自动补齐,需要配置的打开preferences(首选项), 搜keys,打开快捷键配置面板搜 alt+/ ,取消绑定搜 content assist ,取消原先的绑定,配置成alt+/ctrl+1: 错误自动修复, 注意,放行的红叉是可修复的,圆形的是不可修复的导包的三种方式:1)将类名敲完整,按下alt+/ 进行补齐,会自动导包2) ctrl+1,修正错误3) ctrl+shift+o 整理包,导入需要的包,去掉多余的导包语句ctrl+shift+f : 代码格式化ctrl+2,L  自动声明变量shift+enter  光标直接进入下一行ctrl+alt+方向键(向上向下)  复制行alt+ 方向键(向上向下) 移动当前行收集整理3. 断点调试1) 可以对程序进行调试在行的开头双击左键打断点,用debug方式来运行程序,程序就会停留在断点位置F5 跳入(step into) 跳入方法内部  F6 跳过, 让当前行运行  F7跳出 返回上一层程序resume 直接运行到下一个断点 2) 查看源代码建议使用断点调试的方式,注意当前运行环境需要包含源码4. junit单元测试1) 写一个java类, 声明测试方式修饰符为 public void ,在方法前面加注解,(Test) 此方法就可以进行测试了(交给junit运行)2) 需要在测试方法前做初始化工作 写一个静态方法  public static void init() 在方法前加注解 BeforeClass3) 需要在测试后释放资源 写一个静态方法在方法前加注解 AfterClass二、jdk5新特性1. 静态导入1) 导入类的静态属性import static java.lang.System.out;out.println("haha");2) 导入类的静态方法import static java.lang.Math.*;/ 导入Math类的所有静态成员int num = abs(-10);2. 增强for循环1) 作用: 对存储对象的容器进行迭代   2)  jdk5以前怎么迭代3) 增强for循环迭代数组String arr = "a", "b", "c"/数组的静态定义方式,只试用于数组首次定义的时候/ 传统方式for(int i=0; iIntegerbyte -> Byteshort -> Shortlong -> Longchar -> Characterdouble -> Doublefloat -> Floatboolean -> Boolean1) Integer x = 1; x = x + 1;  经历了什么过程? 装箱 拆箱 装箱2) 为了优化,虚拟机为包装类提供了缓冲池, Integer池的大小 -128127 一个字节的大小3) String池 Java为了优化字符串操作 提供了一个缓冲池 面试题:String s = “abc” 和 String s = new String(“abc”) 的区别String s = new String(“abc”) 创建了几个对象 String s = “a” + “b” + “c” + “d” 创建了几个对象String s1 = “a” String s2 = “b”  String s3 = s1 + s2;  s3=”ab”?/*1. String s = "abc", 虚拟机首先会检查String池里有没有"abc"对象(通过equals方法)/ 如果有,直接返回引用,如果没有,会在池里创建一个“abc”对象,并返回引用String s1 = "abc"String s2 = "abc"System.out.println(s1=s2);/ result: true*/* 2. String str = new String("abc"); 不管缓冲池是否有"abc", 都会在堆内存创建一个"abc"对象,返回引用/ 此时,负责检查并维护缓冲池,其实堆内存的对象是缓冲池中"abc"对象的一个拷贝String s1 = new String("abc");String s2 = new String("abc");System.out.println(s1=s2); / result: false*/* 3. String s = "a" + "b" + "c" + "d"  java编译器有个合并已知量的优化功能/ 在编译阶段就把"a" + "b" + "c" + "d" 合并为 ”abcd“String s = "a" + "b" + "c" + "d" /String s = "abcd" System.out.println(s="abcd");/ result: true*/* 4.  String s1 = "a" String s2 = "b" String s3 = s1 + s2;/ String是常量,不能相加的,java如何实现的? StringBuilder sb = new StringBuidler(s1); sb.append(s2); s3 = sb.toString(); 也就是说实际上s3是方法返回的String对象 凡是方法返回的字符串对象都是在堆内存的*/ String s1 = "a" String s2 = "b" String s3 = s1 + s2;/ 堆内存的对象 System.out.println(s3="ab");/ result: false4) 单列集合 CollectionList list = new ArrayList();list.add("aaa");list.add("bbb");list.add("ccc");/ 传统方式1/* 1.获得迭代器Iterator iter = list.iterator();/ 2.循环判断迭代器是否有下一个while(iter.hasNext() String str = (String) iter.next();/ 将迭代器的指针移向下一个,并将迭代当前指向的元素返回System.out.println(str);*/ 传统方式2for(Iterator iter=list.iterator(); iter.hasNext(); ) String s = (String) iter.next();System.out.println(s);System.out.println("-");/ 增强for循环, 没有使用泛型的集合能不能使用增强for循环迭代?能for(Object obj : list) String s =  (String) obj;System.out.println(s);5) 双列集合 MapMap map = new HashMap();map.put("a", "aaa");map.put("b", "bbb");map.put("c", "ccc");/ 传统方式迭代1/ 1. 获得所有的keySet keys = map.keySet();/ 2.迭代keys获得所有的keyIterator iter = keys.iterator();while(iter.hasNext() String key = (String) iter.next();/ a b c/ 3.根据key获得对应的valueString value = (String) map.get(key);System.out.println(key + "=" + value);System.out.println("-");/ 传统方式2,必须掌握这种方式/ 1.获得所有的键值对Entry对象Set entrys = map.entrySet();/ 2.迭代出所有的entryiter = entrys.iterator();while(iter.hasNext() Map.Entry entry = (Entry) iter.next();/ 分别获得key和valueString key = (String) entry.getKey();String value = (String) entry.getValue();System.out.println(key + "=" + value);System.out.println("-");System.out.println("增强for循环迭代,");/ 增强for循环迭代,/ 原则上map集合是无法使用增强for循环来迭代的,/ 因为增强for循环只能针对实现了Iterable接口的集合进行迭代/ Iterable是jdk5中新定义的接口,就一个方法iterator方法/ 只有实现了Iterable接口的类,才能保证一定有iterator方法/ java有这样的限定是因为增强for循环内部还是用迭代器实现的/ 而实际上,我们可以通过某种方式来使用增强for循环for(Object obj : map.entrySet() / obj 依次表示EntryMap.Entry entry = (Entry) obj;System.out.println(entry.getKey() + "=" + entry.getValue();6)集合迭代注意问题/ 在使用迭代器迭代集合的过程中,不能对集合进行增删操作Testpublic void test4() List list = new ArrayList();list.add("wangwu");list.add("zhangsan");list.add("lisi");Iterator iter = list.iterator();while(iter.hasNext() String name = (String) iter.next();if("wangwu".equals(name) / 从集合中删掉/list.remove(name);/ 迭代过程中删除元素需要调用迭代器的方法iter.remove();/ 删除我迭代的集合被我迭代的最后一个元素/ 1 2 4System.out.println(list.size();Testpublic void test5() List list = new ArrayList();list.add("aa");list.add("bb");/ 使用ListIterator迭代器ListIterator listIterator = list.listIterator();while(listIterator.hasNext() listIterator.next();/ 迭代过程中增加元素listIterator.add("cc");System.out.println(list.size();7) 增强for循环注意问题/在使用增强for循环时,不能对元素进行赋值int arr = 1,2,3;for(int num : arr) num = 0;System.out.println(arr1);4. 可变参数1) jdk5中方法的形参可以定义为可变参数,传入实参个数可变/ 设计一个方法求n个数的和public static int getSum(int. arr) / 可变参数在方法中仍被看做一个数组int sum = 0;for(int num : arr)sum += num;return sum;2)Arrays.asList为例演示传入不同参数的情况/ list长度为3List list = Arrays.asList("a","b","c");/ list长度为1, 因为考虑1.4语法String arr = "a","b","c"List list = Arrays.asList(arr);/ 同时符合1.4和1.5的语法,此时会优先考虑1.4的语法/ 原因是有了新功能要保证以前的代码不出错,向后兼容/ 现在就需要将arr作为一个元素存入集合Object obj = arr;List list2 = Arrays.asList(obj);/ 此时只符合1.5的语法,不符合1.4的语法,没有歧义List list3 = Arrays.asList(new Objectarr);/ 优先考虑1.4,所以数组会拆开/System.out.println(list3.size();/ 基本数据类型数组只符合1.5的语法int nums = 1,2,3;list = Arrays.asList(nums);System.out.println(list.size();5. 枚举问题:对象的某个属性的值不能是任意的,必须为固定的一组取值其中的某一个解决办法:1) 在setGrade方法中做判断,不符合格式要求就抛出异常2) 直接限定用户的选择,通过自定义类模拟枚举的方式来限定用户的输入写一个Grade类,私有构造函数,对外提供5个静态的常量表示类的实例3) jdk5中新定义了枚举类型,专门用于解决此类问题4) 枚举就是一个特殊的java类,可以定义属性、方法、构造函数、实现接口、继承类/枚举类就是一个java类,也可以声明属性,方法,构造函数public enum Grade4 A("90-100"),B("80-89"),C("70-79"),D("60-69"),E("0-59");private String value;private Grade4(String value) this.value = value;public String getValue() return value;/枚举类就是一个java类, 也可以继承抽象和实现接口public enum Grade5 / 抽象类不能创建实例对象A("90-100")/ new了一个Grade5的子类实例public String toLocaleString() return "优",B("80-89")/ new了一个Grade5的子类实例public String toLocaleString() return "良",C("70-79")/ new了一个Grade5的子类实例public String toLocaleString() return "中",D("60-69")/ new了一个Grade5的子类实例public String toLocaleString() return "差",E("0-59")/ new了一个Grade5的子类实例public String toLocaleString() return "不及格"private String value;private Grade5(String value) this.value = value;public String getValue() return value;/ 对外提供一个方法,返回枚举的本地信息/ 一个方法不知道如何实现,可以定义为抽象的public abstract String toLocaleString();l 练习:请编写一个关于星期几的枚举WeekDay,要求: 枚举值:Mon,Tue,Wed,Thu,Fri,Sat,Sun  星期一。星期日 该枚举要有一个方法,调用该方法返回中文格式的星期。6. 反射1)java代码的阶段:一段java代码在程序运行期间会经历三个阶段: source->class->runtime2) Class 对象:  在java中用一个Class对象来表示一个java类的class阶段Class对象封装了一个java类中定义的成员变量、成员方法、构造方法、类名、包名等获得class对象的三种方式和区别:/ 1. 根据给定的类名来获得  用于类加载String classname = "cn.itcast.reflect.Person"/ 来自配置文件Class clazz = Class.forName(classname);/ 此对象代表Person.class/ 2. 如果拿到了对象,不知道是什么类型   用于获得对象的类型Object obj = new Person();Class clazz1 = obj.getClass();/ 获得对象具体的类型/ 3. 如果是明确地获得某个类的Class对象  主要用于传参Class clazz2 = Person.class;/ 在java中所有的类型都会对应一个Class对象 int IntegerClass intClazz = int.class;Class intarrClazz = int.class;Class voidClazz = void.class;3)反射反射就是获得一个java类的各个组成部分/ 反射类的成员方法Class clazz = Person.class;Method method = clazz.getMethod(methodName, new ClassparamClazz1, paramClazz2);method.invoke();/ 反射类的构造函数Constructor con = clazz.getConstructor(new ClassparamClazz1, paramClazz2,.)con.newInstance(params.)/ 反射类的属性Field field = clazz.getField(fieldName);field.setAccessible(true);field.setObject(value);4) 反射用在哪里到底框架是什么?  框架就是将开发中大量重复的代码集中起来写个通用的程序框架就是用反射来实现的,框架需要现在的类调用将来写的类框架是将来的程序员调用的,框架不能实现完整的功能,框架只是一些一些通用的代码;框架要依赖将来写的类来运行.现在写的类要调用将来写的类,我们先针对接口进行调用,将来的类需要实现接口,那么方法就固定了但是将来写的类的类名我们无法获知,这时就需要调用者通过配置文件告诉框架具体的类名7. 泛型1) 泛型是一种可变化的类型, 类型不确定,需要调用者来指定2) 用途:一个类的多个成员方法用到的参数类型或返回值类型都是未知的类型,但又需要是同一个类型,就可将方法的参数类型定义为泛型,此泛型必须在类上先予以声明才能在方法中使用一个方法的多个参数和返回值需要是同一个类型,也可以用泛型来解决,在方法返回值前面声明泛型泛型的细节:1) 泛型到底代表什么类型取决于调用者传入的类型,如果没传,默认是Object类型2) 使用带泛型的类创建对象时, 等式两边指定的泛型必须一致原因: 编译器检查对象调用方法时只看变量,然而程序运行期间调用方法时就要考虑对象具体类型了3) 等式两边可以在任意一边使用泛型 在另一边不使用 (考虑向后兼容)3. 泛型的基本概念以List为例:<>念着typeof 例, List就是 List typeof StringList中的E称为类型参数变量     方法定义参数形式参数  List中的Integer称为实际类型参数整个List称为泛型类型   GenericType整个List称为参数化的泛型类型4. 泛型的使用1)使用带泛型的类时,在创建对象时可以为泛型指定实际类型参数,指定的具体类型相当于给泛型传参2)子类在继承父类的时候,可以为父类定义的泛型指定实际类型参数class Bclass A extends B通过子类A获得的父类类型就是一个参数化的类型3)调用方法时传入参数的具体类型将作为方法中泛型的实际类型Lesson 2           Servlet(超级重要)1. javaweb 学什么用 java 语言开发动态的web资源,接下来就是介绍如何开发动态的web资源对于java程序员而言,所谓动态web资源就是可以运行在服务器上的java程序2. 实现服务器管理java程序开发人员写好一个java类,到底有哪些方法tomcat服务器是不可能知道的tomcat服务器欲执行我们编写的java类, 就需要知道我们的java类有哪些方法,然后在适当的时间调用这些方法, 所以我们在写的java程序要想运行在服务器上,就必须要实现一个特殊的接口 Servlet.javainterface Servlet . Servlet接口中就定义了可以被tomcat服务器调用的java方法通常来讲,我们将实现了Servlet接口的java类称之为 Servlet编写好的Servlet需要在web.xml文件中做配置, 才能供外界访问3. 实现第一个Servlet程序3.1  写一个java类实现Servlet接口package cn.itcast.servlet;import java.io.*;import javax.servlet.*;public class HelloWorldServlet extends GenericServlet/ 实现 service 方法public void service(ServletRequest request,ServletResponse response)throws ServletException,java.io.IOException  / 向浏览器输出一句话PrintWriter out = response.getWriter();out.write("hello world!");public void init()throws ServletException / 初始化 servlet 时被调用System.out.println("init()");public void destroy() / 摧毁 servlet 时被调用System.out.println("destroy()");3.2.  导入 servlet jar包set classpath=%classpath%;D:apache-tomcat-6.0.20libservlet-api.jar3.3. 编译带包的类javac -d . HelloWorldServlet.java3.4. 将包拷贝至 day05/WEB-INF/classes 目录下  -> 发布 web 工程3.5. 在 web.xml 文件中做映射HelloWorldServletcn.itcast.servlet.HelloWorldServletHelloWorldServlet/HelloWorldServlet注意: servlet 对象一旦创建就会驻留在内存中,为所有的请求服务,   servlet 对象什么时候销毁?直到服务器关闭时或web应用被移除才销毁3.6. Servlet 执行流程图4. 用 eclipse 工具开发 Servlet 4.1. 建一个 web project 4.2. 在src下建包,创建一个java类实现Servlet接口 4.3  在 WebrootWEB-INFweb.xml 做 servlet 映射4.4  配置 tomcat 服务器window-> preferences -> tomcat6.x4.5  将web工程发布至tomcat 服务器发布的web应用名称可以配置: web工程右键 选properties->myeclipse->web默认情况使用工程名作为发布后的web应用名4.6 启动tomcat服务器运行程序5. HttpServlet对象一般来讲我们开发一个Servlet会去继承 HttpServlet在 eclipse 下开发Servlet 可以直接新建一个Servlet, 覆写 HttpServlet 的 doGet和doPost方法继承 HttpServlet 的原因是: HttpServlet实现了service方法,将ServletRequst和ServletResponse强转为子类 HttpServletRequest和HttpServletResponse,让我们用起来更加方便,同时,在service方法中,它判断了请求方式,根据请求方式来调用 doGet 和 doPost二、 Servlet 细节1. * 号统配符一个Servlet可以映射为多个路径在映射 Servlet 路径时可以使用/* 或 *.扩展名 的形式注意: 两者不能同时使用/* 具有较高的优先级2. load-on-startup 元素元素下可以配置< load-on-startup>子元素,配置方式如下:1如果一个Servlet配置了该项,web容器会在web应用被加载时就初始化该Servlet,数字越小则越先初始化3. tomcatconfweb.xml服务器下所有web 应用中的web.xml 都会自动继承该文件中所有的配置http:/localhost:8080/day05/a.html     a.html是资源名上面的url访问的url在web.xml文件中并没有配置此时会去访问缺省的Servlet,在tomcatconfweb.xml文件中就配置了一个缺省的DefaultServlet DefaultServlet帮我们去web应用下读取 a.html 文件,并打给浏览器,如果没有发送 404 页面也就说,我们通过ie访问服务器访问的都是 Servlet4. Servlet线程安全问题解决Servlet线程安全问题: 加上同步的锁(lock) 实现SingleThreadModel接口的Servlet服务器会做判断,当有请求过来,如果Servlet对象忙着呢,服务器会再创建一个Servlet对象为用户提供服务,如果Servlet闲置,就直接提供服务这样的方式实际上是回避了线程安全问题, 单线程访问Servlet, 这样的方式不可取Lesson 3一、 WEB 服务器1. 基本概念WEB在英语中即表示网页的意思,它用于表示Internet主机上供外界访问的资源以及超链接所组成的链表放在internet网上供外界访问的文件或程序被称为web资源web资源被分为:静态web资源: html、css、jpg动态web资源:Servlet、Jsp2. 什么是 WEB 服务器?就是一台电脑,安装了一个服务器软件3. 为什么需要安装 WEB 服务器思考问题: 从一台计算机的 IE 浏览器如何去访问另一台计算机中的文件 3.1  两台计算机是如何实现通讯的?IP地址(计算机的唯一标识) IPV4 4个字节的整数,每个字节以 点号 隔开 00  每个字节的取值 0255在计算机中程序会绑定在某一个端口  065535  尽量用 1024 以上的连接一台计算机就需要输入 ip 地址和端口号作为接收方, 应该绑定ip,监听指定的端口3.2   在本地写程序添加一个服务,供别人来访问, 假设监听 8888 端口3.3   编码实现了一个本地服务器程序作用: 管理本地的资源,只要将html页面放到指定的目录下,外界就可以访问了3.4   安装服务器的目的: 开发好的web资源可以发布到服务器上,这样外界就可以通过浏览器访问了源程序: MyServer.java/ ServerSocket 对象可以监听端口ServerSocket serversocket = new ServerSocket(6666);while(true) Socket socket = serversocket.accept();/ 等待客户端的连接请求,一旦有请求过来,就结束阻塞,返回客户端对象/ 一旦有客户来访问, 就另开一个新线程去提供服务, main线程继续等待下一个客户的连接new Thread(new MyService(socket).start();MyService.java/ 提供服务InputStream in = socket.getInputStream();Thread.sleep(200);int len = in.available(); / 估计此流不受阻塞能读取的字节数byte buffer = new bytelen;in.read(buffer);String request = new String(buffer);/ 截取第一行String firstLine = request.substring(0, request.indexOf("n");String uriName = firstLine.split(" ")1;OutputStream out = socket.getOutputStream();/ 根据需要访问的资源创建 File 对象File file = new File("src" + uriName);if(!file.exists() out.write("对不起!您访问的资源不存在!别瞎搞!".getBytes();out.close();return ;/ 从文件读, 往浏览器写 FileInputStream fis = new FileInputStream(file);buffer = new byte1024;while (len = fis.read(buffer) > 0) out.write(buffer, 0, len);socket.close();二、Tomcat 服务器的安装和配置1. 使用 tomcat6.0.20.rar 文件解压即完成安装2. tomcat 就是一个java程序,一定会用到 jre所以需要配置环境变量 java_home 配置成jdk的安装目录 c:jdk1.6tomcat的启动是通过 startup.bat 文件, 实际上 startup.bat 中是去调用catalina.bat 文件, 而且是通过 %catalina_home%bincatalina.bat 去找所以为了保证服务器启动正常, 需要配置 catalina_home 环境变量为 tomcat的安装目录3. tomcat 的目录结构 bin : 存放一些执行文件 conf : 存放服务器的配置文件 lib : 存放tomcat 所依赖的 jar 文件 logs: 存放日志文件 temp:  存放临时文件 webapps: web applications 存放所有的web应用程序(web资源) work: tomcat 的工作目录, jsp翻译成的Servlet就在这个目录下4. web应用  多个web资源存放在一个目录下即为一个web应用(web应用程序、web工程)  web 应用的目录结构静态web资源直接放在目录下java 类放在classes目录下web.xml 文件负责管理web应用下所有的web资源所有jar包放在lib目录下三、 WEB 应用的映射1. 虚拟目录一个web应用(服务器上一个目录) 需要供外界访问的路径,需要映射虚拟目录在 tomcat6 中,放在webapps下的web应用,服务器会自动做映射(将文件夹名称作为虚拟路径)对于 webapps 目录外的web应用需要手动映射虚拟路径1.1. 在 server.xml 文件可以配置1.2. 在 %tomcat目录%confcatalinalocalhost 下写一个 xml文件文件名就是 虚拟目录多级目录配置  aaa#bbb.xml 对应 /aaa/bbb如果文件名 是 ROOT.xml 那就是配置了缺省的web应用, 访问时不需要输入 虚拟目录2. web.xmlWeb.xml的作用:管理 web 应用下所有的web资源通俗地讲,一个web应用下所有的web资源如何被外界访问都需要在此文件下做映射包括咱们后面学的Servlet jsp 都需要在这个文件中做映射实验: 配置web应用的 首页在 web 应用下新建目录 WEB-INF ,在此目录下 新建 web.xml 文件itcast.html3. 域名解析一个完整 url http::80itcastindex.jsp协议名   主机名         端口号  资源名 (uri)IE 访问服务器的原理, 在IE中输入的地址中包含域名,域名就需要被翻译成服务器的IP,才能访问到服务器  IE 浏览器 sina 服务器看windows 是否注册了该主机名DNS服务器 (网络服务商)解析域名,获得一个 IP4. web应用映射的练习:新建一个 web 应用 配置成缺省的web应用配置首页配置tomcat监听端口为80在 windows 中注册主机名5. 虚拟主机服务器允许在一个IP上配置多个主机,即虚拟主机:80/index.html中的 起了两个作用:找DNS服务器,作为域名被解析为IP通过Host头告诉服务器访问的主机名配置方式: 在 server.xml 文件中配置Host元素,需要指定name(主机名)、appBase(默认web应用存放目录)appBase目录下所有的web应用,tomcat会自动映射虚拟路径做实验: 给新配置的虚拟主机配置缺省的web应用分析web资源访问过程/abc/a.html访问一个 a.html 静态web资源, IE 做了什么事1) 将 作为域名发送给DNS , 解析成 IP 地址, 访问一台服务器2) 发送 Host 头(),告诉服务器我要访问的虚拟主机 ,服务器拿着Host头找匹配的Host元素3) 将abc作为虚拟目录,告诉服务器我要访问的web应用 ,服务器拿着 abc 找匹配的web应用4) 将 a.html 作为资源名, 告诉服务器我要访问的 web 资源, 服务器拿着 a.html 去web.xml文件中找映射虚拟目录对应是一个web应用的目录,所以虚拟目录也被我们称作web应用路径(web应用的上下文contextpath)三、http协议1.  tcp/ip 协议: 网络通信协议(连接)ip 协议 : ip地址对应一台计算机  (互联网层)tcp 高级协议: 三次握手, 发送请求、返回响应、传输数据(传输层)2. http 协议是建立在 tcp协议的基础之上(应用层)3. Http协议的版本 (w3c)Http1.0 : 建立连接,发送一次请求就断开Http1.1 &n

温馨提示

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

评论

0/150

提交评论