




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于Java的高效兼容HTTP服务器的研究及实现目录摘要 1一、引言 4二、HTTP 服务器模型 5(一)超文本传输协议5(二)Java API中网络类包简介6(三)HTTP客户机与服务器的交互涉及骤 7(四)HHTP操作的一次事务(Transaction) 8 (五)HTTP消息8三HTTP服务器的兼容性9四Java实现多线程HTTP服务器设计 10(一)Java语言网络编程 10(二)服务器总体设计 121总体设计的关键点 122模块设计123HTTP服务器各类之间关系 14(三)服务器详细设计分析151线程重用152各类和接口的主要功能15(四)Java多线程机制的应用17五HTTP服务
2、器运行23六结束语 24参考文献25一引言SUN推出Java语言之后,全世界的目光都被这个神奇的语言所吸引,Java语言从一开始就内置了支持网络编程,因此更容易编写网络应用程序;这也是与其他编程语言不同的地方。Java提供了大量类和接口可以处理各种网络协议,共享信息,并行计算,应用程序服务等优秀特点使java技术将会得到广泛的应用。Java是实现定制客户机和服务器的优秀工具,因为它支持多种在网络上发送和接收数据提供服务接收数据调用服务的技术。Java作为一种面向分布式计算机环境语言,提供了完全意义的多线程支持,利用多线程编程接口,可以方便地写出支持多线程的应用程序,这一点也是Java所特有的。
3、随着Internet的普及和Web技术的迅速发展,客户/服务器结构逐渐转向浏览器/服务器方向,Web文本发布具有简洁生动形象等特点,适用于发布信息,开发基于Browser/Server模式的Web数据库信息检索系统得到广泛应用。Web服务基于超文本传输协议(HTTP协议)。Java语言所具有的良好兼容性安全性健壮性及可扩展的跨平台等特性,使得Java成为开发基于B/S模式的Web数据库应用的首选计算机语言。本文使用Java开发一个高效兼容的HTTP服务器原型。(如图一)。 图一 HTTP服务器原型 该多线程HTTP服务器使用ServerSocket(服务器套接字)运行在服务器专用的TCP端口监
4、听接收来自客户端的请求。当远程主机上的客户Socket试图与指定端口建立连接时,服务器被激活,根据具体情况来确定重用旧线程或生成一个新线程来响应客户端的请求直到该客户退出。服务器的主线程仍然处于监听状态,等待新客户请求。二HTTP 服务器模型(一)超文本传输协议(HTTP,Hypertext Transfer Protocol)是Web浏览器与Web服务器之间通信的标准协议,是个相当详细的协议。位于TCP/IP协议的应用层,具有简单通用无状态灵活无连接及面向对象等特点是互联网中最核心的协议之一。HTTP是RPC式的协议。RPC就是远程调用(Remote Procedure Call),是请求远
5、程机服务和处理机制。RPC和编程语言中的过程调用相似,基于C/S和B/S模型,它建立在请求/响应(Request/Response)的基础上,服务端和客户端可能位于不同的独立系统上,客户端通过TCP SOKET向服务器端口(默认为80)发送包含请求方法URL(是对统一资源定位符(Uniform Resource Locator)用来标识Internet上资源的位置。URL类是不能再小的最小类,它扩展Java.lang.Object。)和协议版本信息,请求建立Socket连接,客户的请求通过Socket被服务器接收,服务器对客户的请求信息参数进行分析处理,响应一个状态行,对客户的请求服务做出回应
6、,把相应的资源文档以流形式通过Socket传给客户浏览器,整个过程见(图二)所示: 图二 Socket 连接(二)Java API中网络类包简介: Java API中按类的形式提供了三种不同层次的网络技术机制,用URL(统一资源定位符)访问网络资源的类,利用Socket(套接字)通讯的类以及DataGran(数据报)类。前两种类方法更能体现Java作为网络语言的特点,支持URL类实际上也是依赖于下层支持Socket类方法来实现的。相对来讲,URL是对WEB的高层联接。Socket是一种底层的连接,客户机和服务器通过写入到Socket的字节流进行通信。Java系统的网络通信机制如图二所示,本文主
7、要讨论基于Socket类的通信机制。InternetJAVA的网络通信机制支持URL的类支持SOCKET的类图三 JAVA系统的网络通信机制应用程序1应用程序1网间网编程界面TCP/IP核心协议物理介质图四 应用程序和TCP/IP核心协议关系协议组TCP/IP的组合, TCP/IP技术的核心部分是传输层(TCP和UDP协议),网络层(IP)协议和物理层(面向各种物理硬件技术),能实现这三层协议的内核可称之为TCP/IP网络操作系统.TCP/IP协议技术中的中下层协议向外提供的只是原始的编程界面,而不是直接的用户服务,用户服务要靠核外的应用程序实现.应用程序和TCP/IP核心协议关系如图四所示.
8、(三)HTTP客户机与服务器之间的交互涉及下列步骤:1HTTP服务器听取请求:HTTP服务器打开听取端口,通常是端口80,这是在一个线程中进行的,然后线程阻止,等待入站的HTTP请求。2HTTP客户机构造HTTP URL:HTTP客户机需要建立与HTTP服务器的初始连接。为此要使用URL,通常情况下是以http:/www.any_的形式。这里HTTP客户机指定HTTP服务器上的缺省资源,通常是页面index.htm或default.htm 。缺省Web页面通常是站点的主页。有时候URL会更加复杂。3HTTP客户机建立连接:HTTP客户机建立发送套接,连接Web服务器。发送套
9、接让客户机向服务器提交HTTP请求。4HTTP服务器接受连接:HTTP服务器生成接受套接,从HTTP客户机接受请求。通常,接受套接在另一线程中运行,提高Web服务器的性能。5HTTP客户机构造一个HTTP请求,发送到HTTP服务器:建立与HTTP服务器的连接之后,客户机构造HTTP请求并通过套接将其传递到HTTP服务器。6HTTP服务器处理请求:HTTP服务器继续听取接受套接中的入站请求。得到请求时,服务器分析入站请求,并采取请求要求的操作。7HTTP服务器将HTTP响应发送给HTTP客户机:HTTP服务器构造HTTP响应,有六个部分(1)、HTTP版本;(2)、HTTP状态码;(3)、HTT
10、P状态描述(可选);(4)、响应头字段(可选);(5)、响应体(可选);(6)、内容长度(可选)。服务器通过与HTTP客户机的连接返回响应。8HTTP客户机处理响应:HTTP客户机收到服务器的响应时,客户机分析响应,然后处理响应。9关闭套接连接:HTTP客户机或服务器关闭连接。(四)一次HHTP操作称为一次事务(Transaction)。HTTP定义的事务处理由以下四步组成:1 客户与Web服务器建立连接,打开一个称为socket(套接字)的虚拟文件,此文件的建立标志着连接成功。2 客户通过socket向Web服务器提交请求。一般为GET或POST命令。3 通过HTTP协议传送给Web服务器。
11、接纳则进行事务处理,处理结果传回客户端。4 客户和服务器断开连接。HTTP采用TCP连接,该连接仅在此事务中保持,浏览器和服务器都不会记忆上次的连接状态。HTTP之所以采取这种无状态机制,完全是为了提高服务器的工作效率。在WEB中点击一个超链接时,浏览器有可能从当前站点转到另一个站点。因此,当文档传输完毕时,服务器都假定用户要退出对文本服务器上的文档的浏览连接,因而断开连接。如果继续浏览,就再次建立连接。如果用户确实要退出时,服务器就不需要执行任何操作,因为连接已经断开了。(五) HTTP消息包括HTTP请求信息和HTTP响应消息两种,一个HTTP请求格式如下图五所示: 图五 HTTP请求信息
12、格式 HTTP响应信息格式如图六所示: 图六 HTTP响应信息格式三HTTP服务器的兼容性(一) HTTP1.1的兼容性:要实现一个实用高效的HTTP1.1和CGI兼容HTTP服务器, HTTP1.1主要通过引入持久连接和更好的缓存验证命令而提高性能,而且把HTTP响应代码增加一倍多。能够向上兼容HTTP/1.0,HTTP消息包括请求消息和响应信息两种。(二) HTTP1.0的兼容性:HTTP1.0兼容服务器总是要响应请求的HTTP版本,可能是HTTP0.9或HTTP1.0。HTTPResquest要检查请求中是否存在版本号。如果不存在,则假设为HTTP0.9。这个版本不用头。其中在HTTP1
13、.0版本里请求头的method可能为GETPOST或HEAD,而在HTTP1.1版本中增加了PUT和DELETE两种请求。URL统一资源定位器标明了目的位置。(三) 与旧版本HTTP的兼容性:HTTP1.0规范强制要求与HTTP.09的向下兼容性。我们要保证HTTP服务器具有下列功能:1识别HTTP0.9与HTTP1.0请求的请求行格式。2了解HTTP0.9与HTTP1.0格式的任何有效请求。3响应与客户机使用的相同协议版本消息。四Java实现多线程HTTP服务器设计(一)Java语言网络编程在java的客户/服务器应用中,客户与服务器之间的通讯一般是采用基于TCP/IP的Socket机制来实
14、现的。当通信数据到达的是目的主机网络层,IP地址连同端口号一起,提供了对两台机器之间唯一的无二义性的连接的标识,这个连接叫套接字(Socket)。一对套接字为一标识了每个端口连接:(1)发送方套接字=源IP地址+源端口号;(2)接收方套接字=目的IP地址+目的端口号。Socket类实现基于连接客户插口。我们可以利用Java API中的J 包中的插口类提供的套接字功能进行网络编程。Socket类(套接字类)提供的重要函数有getInetAddress( ), getPort( ), getInputStream( ), 和close( )。分别产生用于获得信宿机的地址、信宿机端口号
15、、获得输入流、获得输出流、关闭套接字。ServerSocket类(服务器套接字类)的重要函数有:getInetAddress( ), getLocalPort( ), accept( )和close( ),分别用于获得信宿机的Internet地址、本地端口、监听和关闭套接字。ServerSocket类实现了TCP服务器插口。它提供两种构造函数指定服务器插口所用的端口,以便监听到连接请求。利用Accept( )方法引发服务器插口监听并等待,一旦连接就返回一个实例。自定义类包括(1)HttpServer类(服务器类),(2)ReThead(线程重用类),(3)HttpProcess(一个接口类)。
16、此外还包括各个类的请求处理类3个:HttpFile(静态文件处理), HttpCGI(CGI处理) ,HttpException(出错处理);以及数据流处理2个:HttpInputstream(数据输入流)和HttpOutputstream(数据输出流)。HTTPRequestHttp服务器初始化HTTPConfig初始化HTTPLog初始化HTTPConverter当浏览器连接时建立浏览器连接分析器建立连接信息HTTPMessageHeadersHTTPInfo发回响应和对象HTTPGetHandHTTPHeadHTTPHandler建立HTTPResponse生成请求的对象HTTPFile
17、ObjectHTTPProcessObject建立相应处理器图七 重要类的交互(二)服务器总体设计1总体设计的关键点根据HTTP工作原理,在这个设计中抓住了几个关键点:(1)持续监听。根据TCP/IP,作为服务器端进行监听。在这个设计中,采用了一个永真的循环,等待客户的连接请求。(2)可以同时接受多个用户的连接请求。每个用户拥有自己独立的线程。(3)实现了线程的重用性。线程重用服务可以自动收集可重用的线程,以免过的的创建与销毁线程增加系统的负担,提高了系统的效率。2模块设计把Http服务器分成两个组成模块:客户请求处理模块和响应生成发送模块,其中客户请求处理模块负责接收客户的连接,分析请求中的
18、各个协议参数,此外还负责调用响应生成发送模块。而响应生成发送模块的任务就是根据对客户请求的分析的结果查找资源,生成响应和发送响应。(1)客户请求处理模块的任务就是负责监听系统的端口,以获取客户机到达本机的连接。当获得一个连接请求时,就把这一连接所建立的套接字连接交给一个负责客户请求处理程序Client类处理这一个客户的请求,之后程序继续监听等待下一个客户的连接。在一个Client对象建立之后,它就把其在初始化时获得的一个Socket对象的输入流重定向给一个Request对象,使其能通过Request类提供的接口方法获取这一用户请求的相关参数,如URL的组成请求方法,所指文件以及协议版本等数据。
19、然后把这一个Request对象连同Socket对象的输出流传递给一个ResourceHandler类的实例,由这一个ResourceHandler对象完成生产发送对用户请求的响应。主要由三个部分组成:守护程序:一个HttpServer类的实例对象;客户处理程序:一个Client用户类,由HttpServer对象负责建立其实例和执行其运行线程;请求分析程序:一个Request用户类,由Client对象初始化其对象实例,用于分析客户请求中的协议参数(如下图八)。其中,1调用;2Socket对象;3Socket对象;4Socket对象输入流;5Request对象;6Socket对象的输入流和Requ
20、est对象。Request对象是指经分析的客户请求。 654321总控程序守护程序客户处理程序请求分析程序 响应生成模块 图八 请求处理模块 (2)响应生成发送模块实现的功能就是从客户请求程序中接受一个Request对象和一个标识一个用户连接的客户Socket对象的输入流(HttpInputStream)对象。通过Request对象中获得客户请求的协议参数,查找客户请求指定的资源,根据查找的结果,生成相应的响应,并把生成的响应写入到指定的HttpInputStream对象中,其操作结果就是把响应送往客户。包含了以下对象:ResourceHandler对象(响应产生发送处理)、SCManager
21、(响应的状态码管理)对象、StatusCode对象(状态码管理)、MimeType对象(媒体类型描述处理),通过相互调用协调,共同完成模块的功能(如图六)。其中:1Socket对象的输入流和Request对象;2文件名;3文件描述;4状态码;5状态码相关描述;6文件名;7媒体类型描述。654321响应生成发送程序状态码管理程序媒体类型识别程序文件系统7 图九 响应生成发送模块3HTTP服务器各类之间关系 在Http服务器的设计中,Httpserver是主类,提供了程序的入口,打开ServerSocket类,并且接受客户端的连接。对于每个连接将创建一个新的Httpserver对象去处理客户端的请
22、求,并且启动一个新的线程去执行该处理。HttpInputstream类对于请求信息进行分析。HttpProcessor类则提供了真正处理的接口,它分别被HttpFile类,HttpCGI类,HttpException类来实现。最后将响应信息由HttpOutputStream类格式化输出到客户端。HTTP服务器类图设计如(图十)所示:对请求进行分析处理客户端响应请求browserHttpserverMain( ) ReThreadRun( )HttpOutputStreamHttpInputStreamHttpProcessorProcessorRequest( )HttpFileHttpCGI
23、HttpException 图十 HTTP服务器类图(三)服务器详细设计分析线程重用在这个设计中用Rethread类来划分线程,这个类用一个矢量(Vector)来存储线程。这样避免了旧线程的销毁,并且当客户端有请求过来时,避免了新线程的创建,提高了服务器的响应效率。各类和接口的主要功能()HTTPServerHTTPServer.java中定义了一个变量类resources,保存这个类的所有场景特定消息。把这个变量定义为静态的,因为他在静态main()方法中使用。()HTTPRequestHTTPReques类处理HTTP请求。对于每个接受的连接,HTTPServer run()方法构造一个H
24、TTPRequest对象并传入从accept()调用取得的套接参数,作为服务器与浏览器进行通信的端点。构造HTTPRequest对象之后,run()方法调用start(),使请求在并发运行的线程中处理。这样HTTPServer类的run()方法可以立即继续,等待新的入站连接。()HTTPInPutStream对于每个请求信息,用HTTPInPutStream类来进行分析处理,包括解释请求和读取所有请求报头。把这个类中请求进行分解为方法请求路径查询字符串以及协议版本,并且读取所有随后的请求报头。()HTTPOutPutStream经过处理后的响应信息经过HTTPOutPutStream类进行格式
25、化输入到客户端,这个类为写HTTP响应提供了支持,在这个类中添加了形成和发送HTTP响应报头的支持,包括状态行和随后的报头。()HTTPProcessorHTTPProcessor接口提供了真正处理的方法,HTTPFile类,HTTPCGI类,HTTPException类分别实现了该接口。根据HTTPInPutStream类的分析来确定所有请求的信息该有哪个类来处理。(HTTPFile类HTTPCGI类或HTTPException类)()HTTPFile该类实现了HTTPProcessor接口,用于处理静态文件资源的get和head请求。()HTTPCGI该类实现了HTTPProcessor接
26、口,用于处理CGI程序。()HTTPException该类是IOException的子类,它用于把HTTP错误返回到客户机。它实现HTTPProcessor接口,因此当在响应客户机请求而被抛出时,他能够发送一个适当的HTTP错误信息到客户机。(四)Java多线程机制的应用 多线程(Multi-Thread)是Java的一个重要特性,指的是通过系统的调度使几个具有不同功能的程序流即线程同时并行的运行。 Java从语言一级提供对线程的支持,可由语言和运行系统联合提供对共享数据段的管理功能和同步机制,这样就使多线程并行程序设计相对比较容易。 在Java中,当我们创建一个新线程时,先通过对Java.l
27、ang.Thread类的继承来派生一个子类class MyApplication extends Thread 然后,通过run( )方法实现线程的行为。class MyApplication extends Thread public void run( ) 最后,由子类生成一个对象,并且进行启动操作,这样就得到一个处于可运行状态的线程。生成对象是完成线程的创建,启动则是对已经创建的线程进行操作。 My Application ex=new My Application( ); Thread th=new Thread(ex); Th.start( );这个服务器端程序以最简单的方式运用So
28、cket对服务器和客户机进行操作。服务器的全部工作就是等候建立一个连接,然后用那个连接产生的Socket创建一个InputStream以及一个OutputStream。在这之后,它从InputStream读入的所有东西都会反馈给OutputStream,直到接收到行中止(END)为止,最后关闭连接。public class myServer / 这个是服务器端程序/ 设定服务程序端口号,大于1024public static final int PORT = 8080;public static void main(String args) throws IOExceptionServerSo
29、cket s = new ServerSocket(PORT);System.out.println(Started:+s);try Socket socket = s.accept(); try System.out.println(连接被接受+socket); BufferedReader in =New BufferedReader(new InputStreamReader(socket.getInputStream(); PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(sock
30、et.getOutputStream(),true); while(true) String str = in.readLine(); if(str.endsWith(END) break; System.out.println(Echoing: +str); out.println(str); catch(Exception e) System.out.println(e.toString(); finally System.out.println(closing .); socket.close(); finally s.close(); 图十一 多线程服务端实例下面是该服务器设计的部分代
31、码:* get Connect Info */ public String getConnectInfo() String szClientHostName=this.m_sClient .getInetAddress().getHostName (); String szClientAddress=this.m_sClient .getInetAddress ().getHostAddress(); int ClientPort=this.m_sClient .getPort (); String szRet=; szRet=Accepted connection from +szClien
32、tHostName+(+szClientAddress+) +on port +ClientPort+.; return szRet; HTTPRequest(Socket client)throws IOException this.m_sClient =client; this.m_In =new HttpInputStream(this.m_sClient.getInputStream(); this.getRequest (); public String getLog() StringBuffer szRet=new StringBuffer() ; szRet.append (Re
33、ceived the following request:+n); Enumeration enum=m_vLines.elements (); String szstr1=; while(enum.hasMoreElements() szstr1=(String)enum.nextElement(); szRet.append (szstr1+n); return szstr1.toString(); boolean isGetRequest() if(this.m_vLines .size ()0) String firstline=(String)this.m_vLines.elemen
34、tAt (0); if(firstline.length ()0) if(firstline.substring(0,3).equalsIgnoreCase (GET) return true; return false; * only use to recognize methed get */class HttpInputStream extends FilterInputStream HttpInputStream(InputStream in) super(in); public void addLine(String line) m_vLines .addElement(line);
35、 public String readLine() throws IOException StringBuffer result=new StringBuffer (); boolean finished=false; boolean isenter=falsePublic static void main (String args) throws IOException ServerSocket server = new ServerSocket (8080);/*创建一个监听8080端口的服务器套接字*/While(time) Socket client = server.accept (
36、 );/*等待一个连接,如果该连接未被创建,本方法阻塞当前线程。返回值是一个Socket对象,服务器程序利用这个对象与连接的客户通信。*/HttpServer HttpServer =new HttpServer(client);/*创建一个HttpServer 类的对象*/ ReThread ReThread = new ReThread (Httpserver);/*创建新线程*/ Rethread.start ( );/*新线程启动*/ 五HTTP服务器运行编译好各个类后,在命令行中输入:java HTTPServer.class,会提示服务器的版本号及运行正常等信息,然后在IE的地址栏
37、中输入http:/localhost:8080或:8080进行测试,同时在另外一台PC机器上测试输入该机的IP地址:50:8080可以浏览到预先放置的index.htm网页。 图十二 服务器运行实例在浏览器中打开的预先放置的index.htm网页: 图十三 测试实例六结束语首先要感谢邹咸林老师对我毕业设计的细心指导和支持,感谢邹老师为我提供了许多重要的参考文献,以及宝贵的建议和意见。才得以完成该论文设计。 在这个设计中,利用了Java网络编程和Java多线程的特性开发了HTTP服务器原型,并且利用了线程的重用性,提高了运行效率。
38、Java本身也是线程安全的,在实现服务器程序采用多线程设计,可以改善整个服务器应用系统的响应,提高程序的运行效率,降低客户等待时间。在实际运行时状态稳定、良好。容易在该设计的基础上进行扩展并构建成功能强大的服务器。Java语言也将会深入更广泛的网络应用方面。七参考文献1 美John Grifffin Pascal de Haan 等著,邱仲潘等译。 Java 网络编程指南 M-北京:电子工业出版社,2002.32 美哈罗德(Harold,E.)编著;刘东华等译。JavaTM网络编程 北京:中国电力出版社,20013 刘斌 编著,深入浅出Jbuilder8程序设计与开发 北京:中国青年出版社,2
39、0034 美 Ivor Horton.编著,李昭智,王哲明,王红广等译。Java2编程指南 M 北京:电子工业出版社,20035 宋波马黎 等。用Java实现一个多线程HTTP服务器J, Journal of Shenyang Electric Power Institute , 1008-312X(2001)01-0029-046 美 Harvey M.Deitel; Paul J.Deitel 著 Java How to Program, Fourth Edition Publishing House of Electronics Industry.2002 7 张晨等编著,Java2应用
40、编程150例, -北京:电子工业出版社,2003.9*本科毕业设计(论文)管理暂行规定毕业设计(论文)是本科人才培养的重要实践性教学环节,也是学士学位评定的重要依据。为了切实做好我校的毕业设计(论文)工作,规范毕业设计(论文)工作的管理,提高毕业设计(论文)的质量,特制定本规定。一、毕业设计(论文)的主要目的(一)培养学生运用所学知识独立地分析和解决本专业范围内一般问题的能力,培养学生的创新意识和实践能力,使学生从事学术研究的能力得到初步的训练;(二)培养学生理论联系实际的工作作风和严谨认真的科学态度;(三)培养学生分析设计能力、研究实验能力、工程实践能力、经济分析能力、外文阅读能力和计算机的
41、运用能力,以及社会调查、文献资料查阅和论文写作能力。二、毕业设计(论文)的基本要求(一)按照各专业“毕业设计(论文)教学大纲”的要求进行;(二)要具有学术性,要对自然科学或社会科学内某一领域进行专门、系统的研究,并表达其研究成果;(三)要具有创见性,要对学术或工程的某个问题有新的发现、新的构想或新的发展和完善;(四)要具有科学性,要求论述系统而完整,首尾一贯而不前后矛盾,实事求是而不主观臆造;(五)要具应用性,要能解决生产实际问题,在技术改造、生产管理等通过方面有所创造;(六)应做到观点正确、论据充分、推理严密、计算准确,层次分明、条理清楚、语言精炼,有必要的图表和相关资料等;(七)应参阅一定
42、数量的外文资料,并要求在毕业设计(论文)中反映出来。三、毕业设计(论文)的工作程序毕业设计(论文)工作程序分为选题、开题、撰写论文或设计、中期检查、答辩、归档等环节。四、毕业设计(论文)的时间安排毕业设计(论文)工作时间为812周,时间安排应按*本科生毕业设计(论文)工作流程执行,集中用于毕业设计(论文)的时间不得少于专业培养计划规定的周数。五、毕业设计(论文)的领导与管理全校毕业设计(论文)在分管教学副校长领导下进行,分级管理,层层负责。(一)教务处毕业设计(论文)管理工作职责:1、汇总各院(部)毕业设计(论文)题目和指导教师安排,协调有关问题;2、做好毕业设计(论文)前期、中期、后期检查工
43、作,对未达到各阶段进度、质量要求或违反有关规定的院(部)提出整改要求;3、开展学校毕业设计(论文)工作评估和研究工作。(二)院(部)毕业设计(论文)管理工作职责:各院(部)成立毕业设计(论文)工作领导小组,确定毕业设计(论文)指导教师,布置毕业设计(论文)工作任务,检查本院(部)毕业设计(论文)工作落实情况。院(部)毕业设计(论文)管理工作职责为: 1、审查毕业设计(论文)选题、下达任务书,安排指导教师,布置毕业设计(论文)有关工作;2、定期检查毕业设计(论文)工作进展情况,协调处理毕业设计(论文)中的有关问题,督促检查指导教师的工作;3、对学生毕业设计(论文)按规范化要求进行形式审查,组织毕
44、业设计(论文)答辩和成绩评定工作。对答辩小组提出的优秀的毕业设计(论文)及评阅答辩中有争议的毕业设计(论文),组织答辩委员会进行复议,最终确定成绩;4、按学校有关要求,保存与毕业设计(论文)有关的电子和纸质文档;5、做好本院(部)学生毕业设计(论文)总结与评估工作。(三)毕业设计(论文)指导教师职责:1、指导学生选题,拟定任务书,安排学生做开题报告,编写指导方案,制定计划和工作程序;2、对学生提出具体要求,指定主要参考资料和社会调查内容,规定学生应完成的查阅中外文资料、文献综述、开题报告、各项实验数据、计算工作(包括上机)、设计(论文)等;3、采取多种方式检查学生的工作进度和工作质量,及时解答
45、和处理学生提出的有关问题,并认真填写毕业设计(论文)指导记录表;4、做好学生外文翻译的评阅工作,指导学生按规范要求正确撰写毕业设计(论文);5、在学生答辩前对毕业设计(论文)(包括设计说明书、计算资料、实验报告、图纸或论文等)进行审查,认真填写毕业设计(论文)评语,指导学生参加答辩;6、根据院(部)安排参加答辩工作。(四)学生在毕业设计(论文)过程中必须做到:1、重视毕业设计(论文)过程,明确各环节目的、意义和要求,虚心接受指导教师和实验技术人员的指导,保质保量地完成毕业设计(论文);2、独立完成规定的工作任务,不弄虚作假,不抄袭、剽窃他人成果;3、认真填写*本科毕业设计(论文)研究过程记录表
46、;4、毕业设计(论文)成果、资料应于答辩结束后及时交指导教师收存,凡涉及到国家机密、知识产权、技术专利、商业利益的成果未经院(部)许可,学生不得擅自带离学校。六、毕业设计(论文)的选题与开题(一)选题原则1、原则上一生一题,当一个课题比较大时,可以分成几个小课题,每个学生完成一个小课题时必须保证其主要部分为独立进行的工作,使每个学生都受到较全面的训练;2、选题应体现本专业的培养目标,达到毕业设计(论文)大纲的教学要求;3、选题应特别注意有利于学生综合应用所学知识,有利于学生能力的培养,并能保证各专业所应当具有的基本技能的训练;4、选题应与社会、生产、教学、科研等实际相结合。理工科毕业设计(论文
47、)的选题应注重在具有实际应用前景、具有创新构思的课题中选取,鼓励理工科学生进行毕业设计,其中,工科毕业设计所占比例应不少于80%;文科及经管类的选题需注重分析解决当前经济改革、社会现实生活和理论研究中的热点、难点、焦点问题;。毕业设计(论文)在实验、实习、工程实践和社会调查等社会实践中完成的比例要在50%以上。5、选题难度和工作量要适当,使学生能在规定的时间内完成任务;6、选题要有一定层次区分,有利于各类学生提高水平,鼓励学生有所创新;7、各专业的选题数须多于本专业当届的毕业生数。每学年选题应适当更新,不同届选题重复率须控制在20%以内;8、各专业选题须经院(部)严格审查并报教务处备案。(二)
48、选题、开题程序1、指导教师提出的毕业设计(论文)课题须经院(部)审查后向学生公布,通过师生双向选择或经协商分配,确定学生毕业设计(论文)题目及指导教师。选题和指导教师一经确定,不得随意更改;2、各院(部)应不迟于第七学期第十四周结束前完成选题工作,毕业设计(论文)任务书不迟于第七学期第十五周前下达给学生,院(部)应将毕业设计(论文)选题汇总表于第七学期第十六周结束前报教务处;3、毕业设计(论文)开题工作应在第七学期结束前完成,包括文献调研、文献综述、开题报告等,院(部)应根据本院(部)毕业设计(论文)工作的具体计划,安排学生在指导小组范围内作开题报告;七、毕业设计(论文)任务书 (一)毕业设计
49、(论文)任务书是学生进行毕业设计(论文)的指导性文件,每个学生都必须有自己的任务书; (二)任务书的内容包括:设计(论文)研究的背景和依据、任务和基本要求、进程安排等;(三)任务书由指导教师填写,交教研室审查,经院(部)批准后方可实施;(四)毕业设计(论文)结束后,任务书要与毕业设计(论文)一起送交院(部)保存。八、毕业设计(论文)指导教师配备(一)毕业设计(论文)指导教师应由具有中职及以上专业技术职务的教师或工程技术人员担任,助教等初级职称人员不能单独指导毕业设计(论文),但可根据需要安排协助指导教师的工作。指导教师名单由院(部)毕业设计(论文)工作领导小组审定后,报教务处备案;(二)指导毕
50、业设计(论文)期间,指导教师必须坚守岗位,各院(部)要严格控制指导教师出差。确因工作需要出差的,须经院(部)分管教学副院长批准,并委派水平相当的教师代理指导;(三)对于在校外进行毕业设计(论文)的学生,院(部)可聘请相当于中级专业技术职务及以上的工程技术人员或研究人员担任指导教师,但院(部)必须指定专人进行检查,掌握进度,保证质量,协调解决有关问题;(四)每位指导教师指导的学生数原则上不超过8人,科研、教研能力突出的高级职称教师或具有博士学位人员可适当增加指导人数(最高不超过10人)。指导教师对每个学生的指导每个环节不得少于1次,总计不得少于3次。九、设计(论文)的撰写1、毕业设计(论文)的撰
51、写按“*本科毕业设计(论文)撰写规范”执行;2、设计(论文)正文字数:文科(除外语类)10000字以上,理工科及外语、艺术类6000字以上;3、所有设计(论文)应按规定格式打印1份,学生所在院(部)留存。另外应将电子版报送教务处。十、毕业设计(论文)答辩及成绩评定(一)毕业设计(论文)完成后必须进行答辩。对通过毕业设计(论文)答辩并达到毕业基本要求的学生方可发给毕业证书。各专业成立答辩小组,具体负责本专业毕业设计(论文)答辩和成绩评定。各院(部)成立答辩委员会,对答辩小组提出的优秀的毕业设计(论文)及评阅答辩中有争议的毕业设计(论文)进行审查、复议,最终确定成绩。答辩工作原则上不聘请校外专家参
52、加,如确因课题需要,必须聘请校外人员参加时,须经院(部)批准;(二)毕业设计(论文)答辩按“*本科毕业设计(论文)答辩程序和实施办法”规定程序进行;(三)毕业设计(论文)的成绩评定,采用五级记分制,即优、良、中、及格和不及格,具体评分标准按照“*本科毕业设计(论文)量化评分参考标准”执行。要求优秀与良好比例之和控制在70%以内,优秀率在15%左右(最多不超过20%)。其中优秀、不及格等级须写出具体理由,其余等级须写出简要评语;(四)凡毕业设计(论文)成绩不及格者,按结业处理。十一、毕业设计(论文)工作所需的经费(含开题费、实验费、答辩费、指导教师课时津贴等)由学校按各院(部)毕业生每人350元,统一发放至各院(部),由各院(部)制订分配细则。十二、本规定自公布之日
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 外派劳务雇用合同
- 天津工厂租赁合同
- 公司短期借款合同书
- 劳务合同居间协议
- 农副食品采购合同
- 木门购销安装合同范本
- 科技鉴证合同范本
- 2024年辽宁省锦州市第八初级中学中考一模语文试题(含答案)
- 环境整治机械合同范本
- 加工合同范本模板
- 2015年地质图空间数据库建设
- 遥感科学与技术及其在国土资源中的应用
- 公证还款协议书
- GB/T 1972.1-2023碟形弹簧第1部分:计算
- 山西铁道职业技术学院2023年单独招生考生报考登记表
- 中国联通研究院:2022年高端手机市场洞察报告
- 联合国可持续发展目标
- 中小学网络安全教育主题班会《共建网络安全-共享网络文明》
- 第一章中医护理学发展史
- 封头理论重量计算公式
- 七巧板中的分数问题
评论
0/150
提交评论