资源描述
单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,Java,W,eb,开发,天津师范大学 刘洋,第三章,Servlet,编程,Servlet,编写,Servlet,MyEclipse,开发,Servlet,Servlet,的生命周期,Servlet,其它例子,Servlet,Java,技术细分成了三个子平台,Java SE,Java EE,Java ME,Servlet,的历史,1995,年,,Java,技术正式推出。,1997,年,,Sun,紧接着又推出,Servlet,技术,2008,年,,Servlet,的版本已经发展到了,2.5,版。,Java,的,Web,编程技术还包括我们后面章节要讲解的,JSP,、,JavaBean,、标记库、,JSTL,等。,Servlet,一个,Sevlet,就是一个标准的服务器端应用程序,它可以执行商务逻辑,处理,HTTP,的请求。,需要运行在服务器端,需要,Web,容器的支持,Java,编写,请求,客户端,响 应,Servlet,运行于服务器上,Servlet,的结构,类似的命名,Applet,(,Application+let,),Servlet,(,Server+let,),MIDlet,(,MIDP+let,),javax.servlet.Servlet,javax.servlet.GenericServlet,javax.servlet.http.HttpServlet,Servlet,处理的流程,1,、客户端使用浏览器提交对,Servlet,的调用的,Get,或者,Post,请求,2,、服务器接到请求后,如果该,Servlet,是第一次被调用,实例化这个,Servlet,3,、服务器调用该,Servlet,对象的,service(),方法,4,、,Servlet,产生动态的回复内容,5,、服务器发送回复内容给客户端的浏览器,请求,客户端,响 应,Application Server,Servlet,Instance,手工编写,Servlet,目标,具体步骤,编写,Servlet,源程序,建立,Web,应用目录结构,编写,web.xml,文件,运行,Servlet,简单,Servlet,的结构,这是一个显示,HttpServletRequest,和,HttpServetResponse,接口一些,方法的简单,Servlet,import java.io.*;,import javax.servlet.*;,import javax.servlet.http.*;,public class ClientServlet extends HttpServlet,protected void doGet(HttpServletRequest,request,HttpServletResponse response),throws IOException,ServletException,response.setContentType(“text/html,;,charset,=GBK”);,PrintWriter out=response.getWriter();,out.println(“,您好!,”);,需要导入的包,用于处理,GET,请求的方法,创建设置文本格式和,PrintWriter,对象的方法以将数据发送给客户端,Web,应用程序目录结构,Web,应用程序,HTML,文件,图像,Servlet,JSP,页面,JavaBean,Jar,文件,Applet,标签文件,标签库描述符文件,部署描述器,.war,文件,文档根目录,Web,应用程序目录结构,index.html,login.jsp,contactus.jsp,ViewBooks.jsp,logo.jpg,book1.jpg,AddBook.class,DeleteBook.class,mbase.jar,msqlserver.jar,msutil.jar,DisplayBook.tag,web.xml,books.tld,文档根目录,静态文件,(html,images),WEB-INF,JSP,类,库,标签,.,tld,web.xml,Servlet,的部署,clientservlet,chapter2.ClientServlet,clientservlet,/,clientservlet,web.xml,文件中配置,Servlet,两个名称必须相同,MyEclipse,开发,Servlet,MyEclipse,创建一个,Web,工程,MyEclipse,中开发,Servlet,MyEclipse,创建一个,Web,工程,(,1,)右击鼠标选择,New,Project,。,(,2,)工程类型选择,MyEclipse,J2EE Projects,Web Project,。,MyEclipse,创建一个,Web,工程,(,3,)在,Project Name,处填写工程名,通常会将工程名默认为,Web,应用名。单击,Finish,按钮,,Web,工程成功创建完毕。,Web,工程中的,WebRoot,目录即为,Web,应用的根目录。所有和,Web,页面相关的资源都存放在,WebRoot,下,Web,工程中的,src,目录用于存放,Java,源文件,Web,工程的,Context root URL,属性即为该,Web,应用的上下文路径。,MyEclipse,开发,Servlet,(,1,)在,myweb,工程的,src,目录上,右击鼠标,选择,New,Servlet,。,(,2,)在,Name,处输入,Servlet,名字,如,MyServlet,,单击,Next,按钮。,MyEclipse,开发,Servlet,(,3,)在,Servlet/JSP Mapping URL,处配置,Servlet,的,mapping url,信息,如:,/test/MyServlet,。此处配置的,mapping url,即为将来访问,Servlet,时的地址格式。单击,Finish,按钮结束。,MyEclipse,开发,Servlet,(,4,)查看生成的,Servlet,源文件:,在,Eclipse,环境中,创建,Servlet,时可以选择自动生成构造方法、,init,方法、,destroy,方法、,doGet,方法和,doPost,方法。,MyEclipse,开发,Servlet,(,5,)查看生成的,Servlet,源文件:,MyEclipse,会为新建的,Servlet,在,web.xml,中自动生成相应的配置代码。每个,Servlet,在,web.xml,中都对应一对,标签和一对,标签。其中:,标签用于声明,Servlet,。其中的子标签又包括:,用于声明,Servlet,的名字,是,web.xml,中内部使用的名字。,标签:用于声明,Servlet,所对应的类名。,标签用于进行,Servlet,映射。其中的子标签又包括:,标签:表示,Servlet,的名字,需要和上面,标签的,子标签中声明的名字保持一致。,标签:用于配置,Servlet,的访问地址。,MyEclipse,开发,Servlet,(,6,)测试,Servlet,的运行:,可以通过以下,3,种方式进行:,通过在浏览器中直接输入地址访问:,http:/127.0.0.1:8080/myweb/test/MyServlet,通过超链的形式访问:,第一个,Servlet,通过表单提交的方式访问:,MyEclipse,开发,Servlet,启动,Tomcat,服务器,使用第一种方式,即在浏览器地址栏中直接输入地址访问:,http:/localhost:8080/myweb/test/MyServlet,Servlet,的生命周期,Servlet,容器创建,Servlet,的一个实例,Servlet,的,生命周期就是指创建,Servlet,实例之后其存在的时间以及何时消失,生命周期的,3,个方法为:,init(),service(),destroy(),Servlet,的生命周期,生命周期的各个阶段为:,实例化,Servlet,容器创建,Servlet,的实例,初始化,该容器调用,init(),方法,服 务,如果请求,Servlet,,则容器调用,service(),方法,销毁实例之前调用,destroy(),方法,销 毁,不可用,销毁实例并标记为垃圾收集,Servlet,其它例子,读取,Servlet,初始化参数,输出服务器运行信息,获取客户机参数,读取,Servlet,初始化参数,w,eb.xml,repeat,5,源程序,int repeat=Integer.parseInt(,getInitParameter,(repeat);,输出服务器运行信息,服务器,IP,:,request.getRemoteAddr(),服务器名:,request.getServerName(),服务器端口号:,request.getServerPort(),协议名:,request.getScheme(),协议版本:,request.getProtocol(),请求的方法:,request.getMethod(),请求的,URL,:,request.getRequestURI(),上下文路径:,request.getContextPath(),Servlet,路径:,request.getServletPath(),获取客户机参数,Enumeration e=,request.getHeaderNames();,while(e.hasMoreElements(),headers=(String)e.nextElement();,if(headers!=null),out.println(+headers+);,out.println(+,request.getHeader(headers),+);,Thank You!,第三章 结束,
展开阅读全文