《Web开发技术》课件第9章_第1页
《Web开发技术》课件第9章_第2页
《Web开发技术》课件第9章_第3页
《Web开发技术》课件第9章_第4页
《Web开发技术》课件第9章_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

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

文档简介

第9章JSP技术9.1JSP的本质及其工作原理9.2JSP运行环境和开发环境的创建9.3JSP文件组织方式9.4调试JSP程序方法9.5JSP内部对象9.6JSP应用实例

习题

9.1JSP的本质及其工作原理

服务器端的脚本语言有很多种,如PHP、Perl、JSP(JavaServerPages)等。服务器端脚本语言都是被服务器中脚本解释程序解释执行的。脚本程序中要使用由网络发送或接收的数据,可通过脚本解释程序提供的API函数来访问。服务器端脚本所做的工作主要是完成所定义的“业务逻辑”即数据流的具体实现和界面定义。

Servlet通过把XHTML内嵌到Java代码中来实现业务逻辑数据流处理,最终以文档形式输出到客户端。而JSP则通过把某些形式的代码内嵌到XHTML文档中来实现一个文档的动态部分。JSP和Servlet的基本功能是相同的,只是JSP更适用于返回文档的大部分内容已经预先确定的情况,而Servlet则常用于返回文档的大部分内容需要动态产生的情况。

准确地说,JSP是Java语言的宏脚本,即JSP是被JSP翻译程序翻译为Java语言的,最终执行的是Java代码。所以JSP的运行环境不仅需要带有JSP翻译程序的服务器(如开源的Tomcat服务器,也叫JSP解释引擎),还需要有能编译和解释Java语言程序的JDK程序。这就是在安装JSP运行环境的时候,为什么先需要安装JDK,然后再安装服务器,如Tomcat的原因。Tomcat中还有将JSP脚本翻译为Java语言程序的Servlet库代码,这也是执行的时候需要的。接下来的细节问题是:JSP脚本是在什么时候被翻译,什么时候被执行的?答案是JSP脚本在第一次被客户端请求访问的时候完成翻译和编译,在以后的访问中如果此JSP源脚本文件的修改日期没有被更新的话,就跳过这两步,不再进行翻译和编译。这样设计的好处是节省了时间和计算机资源,提高了效率,以后每次请求的时候可以直接进入解释执行环节。

为什么要创建和使用JSP脚本呢?为什么不直接书写Java的Servlet程序呢?这就是“宏”的好处。“宏”能把复杂的、重复性的、冗长的代码用一个简短的标识符代替。Servlet书写服务器端程序时,需要不断地使用out.println()语句向客户端发送数据,书写起来不方便,而在JSP脚本中文本是不需要使用out.println()这样的语句来进行处理的。9.2JSP运行环境和开发环境的创建

1.JSP运行环境

运行环境是指给定一个JSP源文件程序,能翻译、编译和解释执行所需要的库和编译、解释程序。编译、解释程序和一些类的库代码在JDK中。JSP脚本翻译程序一般属于服务器中的一个脚本翻译模块。此外,还需要负责和客户端通信的Web服务器。一般将脚本翻译模块和WebHTTP通信模块集成在一个Web服务器中,如Tomcat中。所以在创建运行环境时,主要做两件事情,即安装和配置。在不同的操作系统环境下,安装和配置步骤略有区别。因为使用Java语言开发的不依赖于特定操作系统支持的程序可以运行在不同的操作系统平台上,所以在学习的过程中,要分别在Windows平台和Linux平台上搭建运行环境、开发环境,将开发的程序在两种平台上运行,进一步体会和理解Java语言的跨平台特性。以下介绍在Windows环境下进行安装和配置,创建JSP运行环境的方法。在选择安装包时,要选择对应平台下的安装包。如在Linux环境下选择rpm包和tar包(源代码包),在Windows环境下选择rar包或者exe包。在Windows操作系统上安装JDK,这里选择的版本是jdk1.6.0。注意JDK的版本和Tomcat要求的JDK版本的匹配程度。

第一步:获取JDK安装包。可以从Sun官方网站提供的下载地址下载,也可以从其他途径获得,如图9.1所示。

第二步:安装JDK。按照安装向导提示,一步一步地安装完毕即可。

配置环境变量PATH和CLASSPATH。PATH指示查找编译程序和解释程序的目录位置。CLASSPATH指示解释CLASS代码的目录位置。图9.1JDK安装包选择命令“我的电脑→属性→高级→环境变量→新建系统变量(注意不是XXX用户变量)”,可以新建PATH变量。如果PATH变量已经存在,则不用新建,就在原来的基础上加一个分号“;”(注意是英文状态下的分号),然后把编译程序和解释程序的目录附在后面即可。注意不要把原来的PATH变量的值删除或清空,因为这个搜索路径是一个目录字符串列表,如果删除了原来的目录字符串,那原来的程序的搜索路径就会受到影响。还有一个要注意的地方就是,所添加的目录路径字符串要用英文状态下的引号括起来,如所安装的JDK的目录位置是"C:\ProgramFiles\Java\jdk1.6.0\bin",一定要定位和指示到bin这层目录,如图9.2所示。图9.2PATH环境变量设置图9.3CLASSPATH环境变量设置

对系统用户添加系统变量CLASSPATH,如果CLASSPATH已经存在,则只需修改即可。在变量值中添加系统库的目录位置和要运行的Class代码目录位置,如图9.3所示。

CLASSPATH的变量值为“C:\Program

Files\Java\jdk1.6.0\lib\dt.jar”;“C:\ProgramFiles\Java

\jdk1.6.0\lib\tools.jar"。

2.JSP开发环境

开发环境主要指进行编辑和调试的环境。先进的编辑工具可以提高程序员的编程效率,减少出错,当出现语法、书写错误时能给出提示及改正建议;当使用一些库中的类时,能自动列出要使用的类的数据和函数。编辑JSP源代码可以选择记事本编辑工具、EditPlus工具程序、Eclipse等。关于Eclipse的配置和工程的创建请参考第1章1.6节。开发JSP文件时需要在工程对应的存储目录的子目录中选择新建JSPFile类型。

9.3JSP文件组织方式

一个JSP文件又称为一个JSP页面、一个JSP源文件,最终会被翻译为一个Servlet类。一个JSP文件从两方面来考虑:一方面就是界面的构建,即最终在客户端浏览器中解释的HTML格式的文件内容展示的结果;另一方面就是在服务器端执行的任务,如数据库查询、计算等。这些任务代码通常封装在标记<%%>内,处理执行的结果向客户端输出时使用输出语句out.println()。println()方法可将各种基本数据转换为字符串,写入输出流,然后由服务器负责把数据发到客户端,最后在客户端浏览器显示执行结果。所以,一个JSP文件既作界面的定制,也作业务逻辑的实现处理。一个JSP文件由元素组成。“元素”可以构建和组成JSP文件的内容。构成JSP文件的“元素”可以分为两种:一种是构成界面的HTML标签元素和内容;另一种是构成程序的标签元素,这种元素按用途和功能来分,又分为指令(Directive)、动作(Action)和脚本标签。

指令告诉翻译程序怎么把JSP脚本翻译为Servlet代码。它的表示形式是<%@XXX%>。最常用的指令是page指令和include指令。page指令在JSP文件被翻译为Servlet文件时起作用,用来定义说明整个JSP页面的全局属性。page属性(即包含的各个数据项)可以根据程序员的需要全部设置,也可以设置任意的一个属性值。include指令用来在源代码级别简单复制另一个文件。动作是JSP已经预先定义的能完成一定功能的脚本代码的调用。

动作标识通用的使用格式如下:

<jsp:动作标识名称属性1=“值1”属性2=“值2”…/>

<jsp:动作标识名称属性1=“值1”属性2=“值2”…>

<jsp:子动作属性1=“值1”属性2=“值2”…/>

</jsp:动作标识名称>

JSP定义的标准动作有<jsp:include>、<jsp:forward>、<jsp:param>、<jsp:useBean>、<jsp:setProperty>、<jsp:getProperty>、<jsp:fallback>、<jsp:plugin>等,其中<jsp:useBean>、<jsp:setProperty>、<jsp:getProperty>是使用JavaBean时使用的。在使用中要注意动作与指令元素的表示方式的区别。

最频繁使用的是脚本标签,它告诉翻译程序在此标签中的Java源代码要原封不动地引用,它的表示形式是<%XXX%>。脚本中可以大量书写Java代码,它是JSP程序功能的主要实现部分。

JSP程序中功能的扩展是通过使用类来进行的,通过类创建对象分配空间和初始化后,通过调用其方法即可完成程序功能。其中一种类方法是JavaBean。JavaBean是构成Java程序的“元件”(因为Java是“咖啡”,JavaBean(咖啡豆)是制作咖啡的原材料)。创建JavaBean实例就是创建JavaBean对象。创建一个JavaBean对象和使用该对象的方法在表达上有两种形式:一种是使用动作标签<jsp:usebean>,另一种是直接在脚本中通过new关键字创建。9.4调试JSP程序方法

一个JSP文件包含界面和功能,多个JSP文件即构成了一个能完成一定应用的服务器端程序。由于一个JSP文件被翻译为一个Servlet类,故执行JSP程序的时候,实际执行的是该Servlet代码。因此调试JSP程序的时候需要在执行结果、JSP被文件翻译后对应的Servlet以及JSP源文件三者之间定位和切换错误位置并最终在JSP源文件中修正错误。当客户端出现程序运行错误页面时,对照行号和提示信息,查看JSP文件被翻译后对应的Servlet文件,然后再对照回去,查看原JSP文件的错误位置。

JSP文件中常见的错误是:对象引用为空,但却调用了对象的方法,即并没有为对象分配内存和调用构造方法完成其初始化,就去调用对象的方法欲完成对象数据结构提供的功能。其结果是虚拟机抛出NullPointerException异常。9.5JSP内部对象

JSP翻译程序环境为编程人员默认提供了request、response、out、session、application、pageContext、config、page、exception对象,这些对象的空间分配和初始化由翻译程序加上分配和初始化语句实现,故编程人员可直接调用相应方法完成其功能。这些对象的名称必须小写,否则翻译程序不认。

request对象提供了访问客户端请求消息的方法,通过调用这些方法可以访问到请求消息的相关信息,如请求消息的各字段信息,请求消息中包含的向服务器端提交的参数信息等,是获取客户端提交信息的必用对象。request对象封装了客户端向服务器发送的请求消息的数据,通过调用其相应方法完成对应数据项信息的获取,所以request对象的方法名称都是以get开头的。

response对象提供了服务器端返回客户端响应消息的方法,通过调用这些方法可以访问到响应消息的相关信息,也可以设置响应消息各字段的内容。

out对象是服务器向客户端发回的响应消息的字符流类PrintWriter的对象,它可以把各种基本数据类型转换成字符串,以字符串的方式写入流中。要向客户端返回响应消息数据,只需要以字符串的形式往此流中写数据即可。这些响应消息的数据由服务器来发送。编程人员根据需要可以在一个JSP文件的脚本代码段中使用这些对象的相关方法完成诸如客户端请求消息数据的获取、向客户端输出数据、获取应用中存储的相关数据(包括跨页面的)、获取异常信息等功能。这些功能是一个具体的应用程序中肯定会使用到的功能,可以看成是程序的输入和输出。可以根据功能的需要,使用其中的任意一个对象,也可以使用多个对象。这部分内容请读者参考相关书籍和API文档。

9.6JSP应用实例

实例一——登录模块

【例9.1】将例7.6的案例改为用JSP程序实现。

分析:本例使用<jsp:forward>动作实现页面跳转,用<jsp:param>动作实现传递参数,用request对象获取请求消息数据内容。

loginnew.html文件内容如下:

<!DOCTYPEhtmlPUBLIC“-//W3C//DTDHTML4.01Transitional//EN”“/TR/html4/loose.dtd”>

<html>

<head>

<metahttp-equiv=“Content-Type”content=“text/html;

charset=gb2312”>

<title>登录模块</title>

</head>

<bodybgcolor=“FFFFFF”>

<h1align=“center”><b>欢迎登录系统</b></h1>

<formaction=“forward.jsp”method=“post”>

<!--指定由forward.jsp来处理该表单,提交数据方式为post-->

<p></p>

<!--以2行2列的表格来布局-->

<tablewidth=“52%”border=“2”align=“center”>

<trbgcolor=“#FFFFCC”>

<tdalign=“center”width=“43%”><divalign=“center”>用户名:</div></td>

<tdwidth=“57%”><divalign=“left”>

<inputtype=“text”name=“username”>

</div></td>

</tr>

<trbgcolor=“#CCFF99”>

<tdalign="center"width="43%"><divalign="center">密码:</div></td>

<tdwidth=“57”><divalign=“left”>

<inputtype=“password”name=“password”>

</div></td>

</tr>

</table>

<!--以段的形式来组织两个按钮-->

<palign=“center”>

<inputtype=“reset”name=“Reset”value=“重置”>

<inputtype=“submit”name=“Submit2”value=“提交”>

</p>

</form>

</body>

</html>

forward.jsp文件内容如下:

<%@pagelanguage="java"contentType="text/html;

charset=gb2312"

pageEncoding="gb2312"%>

<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01

Transitional//EN""/TR/html4/loose.dtd">

<html>

<head>

<metahttp-equiv="Content-Type"content="text/html;

charset=gb2312">

<title>loginforward</title>

</head>

<body>

<%

Stringusername=null;

Stringpassword=null;

request.setCharacterEncoding("gb2312");

username=request.getParameter("username");

password=request.getParameter("password");

if(!username.equals(“”)&&!password.equals(""))

{

%>

<jsp:forwardpage="login_ok.jsp">

<jsp:paramname="username"value='<%=username%>'/>

<jsp:paramname="username"value='<%=password%>'/>

</jsp:forward>

<%

}

else

{

%>

<jsp:forwardpage="error.jsp">

<jsp:paramname="username"value='<%=username%>'/>

<jsp:paramname="username"value='<%=password%>'/>

</jsp:forward>

<%

}

%>

</body>

</html>

ogin_ok.jsp文件内容如下:

<%@pagelanguage="java"contentType="text/html;charset=gb2312"

pageEncoding="gb2312"%>

<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""/TR/html4/loose.dtd">

<html>

<head>

<metahttp-equiv="Content-Type"content="text/html;

charset=gb2312">

<title>loginsuccess</title>

</head>

<body>

<%

Stringusername=null;

Stringpassword=null;

request.setCharacterEncoding("gb2312");

response.setContentType("text/html;charset=gb2312");

username=request.getParameter("username");

password=request.getParameter("password");

out.println(“登录成功,用户名

[<font

color=‘red’>”+username+“</font>],”);

out.println("密码[<fontcolor=‘red’>"+password

+"</font>]");

%>

</body>

</html>

error.jsp文件内容如下:

<%@pagelanguage="java"contentType="text/html;

charset=gb2312"

pageEncoding="

gb2312"

%>

<!DOCTYPEhtmlPUBLIC"

-//W3C//DTDHTML4.01

Transitional//EN""

/TR/html4/loose.dtd"

>

<html>

<head>

<metahttp-equiv="Content-Type"content="text/html;

charset=gb2312">

<title>Error</title>

</head>

<body>

<%

Stringusername=null;

Stringpassword=null;

request.setCharacterEncoding("gb2312");

response.setContentType("text/html;charset=gb2312");

username=request.getParameter("username");

password=request.getParameter("password");

out.println("您输入的用户名[<fontcolor=‘red’>

"+username+"</font>]");

out.println("和密码[<fontcolor='red'>"+password+"</font>]有一项为空,请重新输入:");

%><ahref="loginnew.html">返回

</body>

</html>

如果forward.jsp文件中的以下语句:

<jsp:forwardpage="error.jsp">

<jsp:paramname="username"value=‘<%=username%>’/>

<jsp:paramname="username"value=‘<%=password%>’/>

</jsp:forward>

写错为

<jsp:forwardpage="error.jsp"/>

<jsp:paramname="username"value=‘<%=username%>’/>

<jsp:paramname="username"value=‘<%=password%>’/>

则属于语法错误,编译将提示"Thejsp:paramactionmustnotbeusedoutsidethejsp:include,jsp:forward,orjsp:paramselements"。请读者注意语法格式。

运行结果如图9.4、图9.5(登录成功)、图9.6(登录失败)

所示。图9.4登录界面图9.5登录成功界面图9.6登录失败界面实例二——获取请求消息

【例9.2】通过request对象获取请求消息的第一行数据及请求头部各字段数据。

源文件capture.jsp内容如下:

<%@pagelanguage="java"contentType="text/html;charset=gb2312"

pageEncoding="gb2312"import="java.util.Enumeration"%>

<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01

Transitional//EN"

"/TR/html4/loose.dtd">

<html>

<head>

<metahttp-equiv="Content-Type"content="text/html;

charset=gb2312">

<title>capture</title>

</head>

<body>

Requestmethod:<%=request.getMethod()%>

<br>URI:<%=request.getRequestURI()%>

<br>Protocol:<%=request.getProtocol()%>

<br>Remoteaddress:<%=request.getRemoteAddr()%>

<br>Remoteport:<%=request.getServerPort()%>

<br>Servername:<%=request.getServerName()%>

<br>Remotehost:<%=request.getRemoteHost()%>

<br>ServletPath:<%=request.getServletPath()%>

<br>Header("host"):<%=request.getHeader("host")%>

<br>Header("user-agent"):<%=request.getHeader

("user-agent")%>

<%Enumerationheadernames=request.getHeaderNames();

while(headernames.hasMoreElements())

{

Stringheadername=(String)headernames.nextElement(); Stringheadervalue=request.getHeader(headername);

out.println("<br>Header("+headername+"):"+headervalue);

}

%>

</body>

</html>

运行结果如图9.7所示。图9.7获取请求消息实例三——日期显示

【例9.3】从服务器系统获取当前时间。

源文件date.jsp内容如下:

<%@pagecontentType="text/html;charset=gb2312"

language="java"import="java.util.*"errorPage=""%>

<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01

Transitional//EN"

"/TR/html4/loose.dtd">

<html>

<head>

<metahttp-equiv="Content-Type"content="text/html;

charset=gb2312">

<title>DateandTimeShow</title>

</head>

<body>

<%=(newjava.util.Date()).toLocaleString()%>

</body>

</html>

执行结果如图9.8所示。图9.8获取系统当前时间实例四——文件上传

在实际的Web应用中,文件操作是比较常用的,比如文件上传和下载。可以使用Java的输入/输出流来实现文件的读/写操作。

【例9.4】上传一个文本文件到服务器。

分析:客户通过一个JSP页面上传文件给服务器时,调用内置对象request的方法getInputStream()获得输入字节流,通过该输入字节流读入客户上传的全部信息,包括文件的内容以及表单域的信息。实现:共两个页面。一个页面为upload.jsp,该页面表单中含有File类型的控件,且此控件域的ENCTYPE属性值设为“multipart/form-data”。另一个页面为filesave.jsp,该页面通过request对象读取输入字节流,并通过文件输出字节流将读取的数据写入文件test.txt中。

扩展:请读者将文件的内容和表单域的信息分离,通过表单域信息获取上传文件名称,写入文件的文件名采用上传文件的文件名,只将上传文件内容写入文件中。进一步扩展,实现上传任意类型的文件,使用jspSmartUpload组件实现一个功能完善的文件上传模块。

upload.jsp文件如下:

<%@pagelanguage="java"contentType="text/html;

charset=gb2312"

pageEncoding="gb2312"%>

<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01

Transitional//EN"

"/TR/html4/loose.dtd">

<html>

<head>

<metahttp-equiv="Content-Type"content="text/html;

charset=gb2312">

<title>Uploadfile</title>

</head>

<body>

<p>选择要上传的txt文件:<br>

<formaction="filesave.jsp"method="post"

ENCTYPE="multipart/form-data">

<inputtype=Filename="file"size=40>

<br>

<inputtype="Submit"name="Upload"value="提交">

</form>

</body>

</html>

<p>选择要上传的txt文件:<br>

<formaction="filesave.jsp"method="post"

ENCTYPE="multipart/form-data">

<inputtype=Filename="file"size=40>

<br>

<inputtype="Submit"name="Upload"value="提交">

</form>

</body>

</html>

filesave.jsp文件如下:

<%@pagelanguage="java"contentType="text/html;charset=gb2312"

pageEncoding="gb2312"import="java.io.*"%>

<!DOCTYPEhtmlPUBLIC

"

-//W3C//DTDHTML4.01Transitional//EN"

"/TR/html4/loose.dtd">

<html>

<head>

<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">

<title>Fileuploadsuccess</title>

</head>

<body>

<%try

{

InputStreaminputstream=request.getInputStream();

Filefile=newFile("e:\\test.txt");

FileOutputStreamfileoutputstream=new

FileOutputStream(file);

bytebytearray[]=newbyte[1024];

intiCount; while((iCount=inputstream.read(bytearray))!=-1)

fileoutputstream.write(bytearray,0,iCount);

fileoutputstream.close();

inputstream.close();

}

catch(IOExceptionexception)

{

out.println("IOException!");

}

out.println("Fileuploadsuccess!");

%>

</body>

</html>

执行结果如图9.9~图9.11所示。图9.9上传选择文件图9.11存储的文件图9.10上传成功后界面实例五——计算正弦三角函数值

【例9.5】将第7章例7.5改写为用JSP实现。

源文件inputnew.jsp由input.jsp文件中表单项属性action修改而得到,源代码如下:

<%@pagelanguage="java"contentType="text/html;charset=gb2312"

pageEncoding="gb2312"%>

<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01

Transitional//EN"

"/TR/html4/loose.dtd">

<html>

<head>

<metahttp-equiv="Content-Type"content="text/html;

charset=gb2312">

<title>通过JSP求Sin正弦值</title>

</head>

<body>

<p>通过JSP求Sin正弦值:

<FORMaction="sin.jsp"method=get>

<InputType=textname=number>

<InputType=submitvalue="提交"

>

</FORM>

</body>

</html>

sin.jsp求取sin正弦值,文件如下:

<%@pagelanguage="java"contentType="text/html;

charset=gb2312"

pageEncoding="gb2312"%>

<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01

Transitional//EN"

"/TR/html4/loose.dtd">

<html>

<head>

<metahttp-equiv="Content-Type"content="text/html;

charset=gb2312">

<title>Inserttitlehere</title>

</head>

<body>

<%

response.setContentType("text/html;charset=gb2312");

out.println("<html><body>");

StringstrNumber=request.getParameter("number");

doubledVar=0.0;

if(strNumber!=null)

{

try {

dVar=Double.parseDouble(strNumber);

out.print("<BR>"+Math.sin(dVar));

}

catch(NumberFormatExceptionexception)

{

out.print("<H1>inputnumberletterplease!</H1>");

}

}

else

{

out.print("<H1>inputnumberletterplease!</H1>");

}

%>

</body>

</html>

执行结果界面如图9.12、图9.13所示。图9.12输入值界面图9.13求取结果界面

习题

1.JSP程序的运行环境是什么?需要安装和配置哪些软件?JSP程序如何被编译,如何被解释执行?

2.一个JSP程序文件一般可以完成哪两个功能?

3.怎样极大地扩充JSP程序的功能?JSP程序的功能主要在哪里完成?

4.一个由多个JSP页面完成的具体的Web应用程序,其各个页面之间数据的传递有哪些方式?

5.试着从编写、编译、运行方面比较JSP程序和Servlet程序。

6.用什么语句可以完成脚本中表达式的同样功能?

7.<%@includefile="calculate.jsp"%>和<jsp:includepage="calculate.jsp"flush="true">有什么区别?可从翻译、编译和运行结果上来比较分析。

8.选择题:

(1)当TomcatWeb服务器安装配置正确并启动成功之后,在端口(端口未改动,采取默认值)上监听客户端请求。此时我们常通过在客户端浏览器中发一个请求来测试它。在浏览器地址栏中输入的URL正确的是()。

A.http://localhost:8088

B.:8080

C.http://localhost:80

D.:8080

(2)下列()类

温馨提示

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

评论

0/150

提交评论